/**
 * @ProjectName: 智慧评标-主观分助手
 * @Package: com.zhpb.gdyd_zhpb_zgf.repository.mysql
 * @ClassName: UserLogRepository
 * @Description: 用户操作日志Repository接口，提供用户操作日志数据访问方法
 * @Author: 
 * @Date: 2025-11-28
 * @Version: 1.0
 * @Copyright: © 2025 智慧评标-主观分助手
 */
package com.zhpb.gdyd_zhpb_zgf.repository.mysql;

import com.zhpb.gdyd_zhpb_zgf.entity.mysql.UserLog;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 用户操作日志 Repository
 */
@Repository
public interface UserLogRepository extends JpaRepository<UserLog, Long> {

    /**
     * 根据用户ID查询操作日志
     *
     * @param userId 用户ID
     * @return 操作日志列表
     */
    List<UserLog> findByUserIdOrderByCreateTimeDesc(String userId);

    /**
     * 根据项目ID查询操作日志
     *
     * @param projectId 项目ID
     * @return 操作日志列表
     */
    List<UserLog> findByProjectIdOrderByCreateTimeDesc(String projectId);

    /**
     * 根据操作类型查询操作日志
     *
     * @param operationType 操作类型
     * @return 操作日志列表
     */
    List<UserLog> findByOperationTypeOrderByCreateTimeDesc(String operationType);

    /**
     * 根据用户ID和操作类型查询操作日志
     *
     * @param userId 用户ID
     * @param operationType 操作类型
     * @return 操作日志列表
     */
    List<UserLog> findByUserIdAndOperationTypeOrderByCreateTimeDesc(String userId, String operationType);

    /**
     * 统计指定用户的操作次数
     *
     * @param userId 用户ID
     * @return 操作次数
     */
    @Query("SELECT COUNT(*) FROM UserLog WHERE userId = :userId")
    Long countByUserId(@Param("userId") String userId);

    /**
     * 统计指定操作类型的次数
     *
     * @param operationType 操作类型
     * @return 操作次数
     */
    @Query("SELECT COUNT(*) FROM UserLog WHERE operationType = :operationType")
    Long countByOperationType(@Param("operationType") String operationType);
}