package com.bonus.system.service;

import com.bonus.common.core.domain.R;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.system.api.domain.SysLogsVo;
import org.springframework.scheduling.annotation.Async;

import javax.servlet.http.HttpServletRequest;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * @author：cwchen
 * @date：2024-02-28-14:01
 * @version：1.0
 * @description：系统日志-业务层
 */
public interface ISysLogService {
    /**
     * 保存系统日志
     *
     * @param sysLog
     * @return AjaxResult
     * @description
     * @author cwchen
     * @date 2024/2/28 14:33
     */
    AjaxResult saveLogs(SysLogsVo sysLog);

    /**
     * 查询系统日志
     * @param dto
     * @return
     */
    List<SysLogsVo> getSystemLogs(SysLogsVo dto);

    /**
     * 查询日志容量信息
     * @return
     */
    R<String> getLogsSet();

    /**
     * 审计日志容量配置
     * @param capacity
     * @return
     */
    R<String> setLogsSet(String capacity);

    /**
     * 查询·日志统计
     * @param dto
     * @return
     */
    R<Map<String, Object>> getLogStatistics(SysLogsVo dto);

    /**
     *日志容量告警
     * @return
     */
   void logWarn( );

    /**
     * 保存日志
     * @param sysLog
     * @param request
     * @return
     */
    void saveLogs(SysLogsVo sysLog, HttpServletRequest request);

    /**
     * 获取未处理的告警日志
     * @return
     */
    @Async
    public void handleWarningLog();

    @Async
    public void updateLogsWithHandledStatus(String logId);
}
