package com.erp.audit.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.erp.audit.dto.*;
import com.erp.audit.entity.AuditLog;
import java.util.List;

/**
 * 审计日志服务接口
 */
public interface AuditLogService {

    // ================== CRUD ==================

    /**
     * 创建审计日志
     */
    AuditLog create(AuditLogCreateRequest request);

    /**
     * 更新审计日志
     */
    AuditLog update(Long id, AuditLogDTO dto);

    /**
     * 删除审计日志
     */
    void delete(Long id);

    /**
     * 根据ID查询
     */
    AuditLogDTO getById(Long id);

    /**
     * 分页查询
     */
    IPage<AuditLogDTO> pageQuery(AuditLogQueryRequest request);

    // ================== 统计 ==================

    /**
     * 统计汇总
     */
    AuditStatisticsDTO getStatistics(Long tenantId, String startDate, String endDate);

    /**
     * 趋势分析
     */
    List<AuditStatisticsDTO.DailyTrend> getTrend(Long tenantId, String startDate, String endDate);

    // ================== 批量操作 ==================

    /**
     * 批量创建（用于异步记录）
     */
    void batchCreate(List<AuditLogCreateRequest> requests);

    /**
     * 清理过期日志
     */
    int cleanExpiredLogs(int retentionDays);
}
