package com.ruoyi.monitor.mapper;

import java.util.List;
import java.util.Map;

import com.ruoyi.monitor.domain.AuditLog;

/**
 * 审计日志Mapper接口
 * 
 * @author ruoyi
 * @date 2024-12-19
 */
public interface AuditLogMapper 
{
    /**
     * 查询审计日志
     * 
     * @param logId 审计日志主键
     * @return 审计日志
     */
    public AuditLog selectAuditLogByLogId(Long logId);

    /**
     * 查询审计日志列表
     * 
     * @param auditLog 审计日志
     * @return 审计日志集合
     */
    public List<AuditLog> selectAuditLogList(AuditLog auditLog);

    /**
     * 新增审计日志
     * 
     * @param auditLog 审计日志
     * @return 结果
     */
    public int insertAuditLog(AuditLog auditLog);

    /**
     * 修改审计日志
     * 
     * @param auditLog 审计日志
     * @return 结果
     */
    public int updateAuditLog(AuditLog auditLog);

    /**
     * 删除审计日志
     * 
     * @param logId 审计日志主键
     * @return 结果
     */
    public int deleteAuditLogByLogId(Long logId);

    /**
     * 批量删除审计日志
     * 
     * @param logIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAuditLogByLogIds(Long[] logIds);

    /**
     * 根据用户ID查询审计日志
     * 
     * @param userId 用户ID
     * @return 审计日志集合
     */
    public List<AuditLog> selectAuditLogByUserId(Long userId);

    /**
     * 根据业务ID和业务类型查询审计日志
     * 
     * @param businessId 业务ID
     * @param businessType 业务类型
     * @return 审计日志集合
     */
    public List<AuditLog> selectAuditLogByBusiness(String businessId, String businessType);

    /**
     * 根据操作类型查询审计日志
     * 
     * @param operationType 操作类型
     * @return 审计日志集合
     */
    public List<AuditLog> selectAuditLogByOperationType(String operationType);

    /**
     * 查询审计日志统计信息
     * 
     * @param params 查询参数
     * @return 统计结果
     */
    public List<Map<String, Object>> selectAuditLogStatistics(Map<String, Object> params);

    /**
     * 根据风险等级查询审计日志
     * 
     * @param riskLevel 风险等级
     * @return 审计日志集合
     */
    public List<AuditLog> selectAuditLogByRiskLevel(String riskLevel);

    /**
     * 查询指定时间范围内的审计日志
     * 
     * @param params 查询参数(包含开始时间和结束时间)
     * @return 审计日志集合
     */
    public List<AuditLog> selectAuditLogByTimeRange(Map<String, Object> params);

    /**
     * 清理过期的审计日志
     * 
     * @param retentionDays 保留天数
     * @return 删除的记录数
     */
    public int cleanExpiredAuditLogs(int retentionDays);
}