package com.njcn.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.system.pojo.param.AuditParam;
import com.njcn.system.pojo.po.UserLog;
import com.njcn.system.pojo.vo.AuditLogCusVO;
import com.njcn.system.pojo.vo.AuditLogVO;
import com.njcn.system.pojo.vo.LogParamVO;
import com.njcn.system.pojo.vo.OnlineUsersVO;

import javax.servlet.http.HttpServletRequest;
import java.text.ParseException;
import java.util.List;

/**
 * @version 1.0.0
 * @author: chenchao
 * @date: 2022/07/11 19:59
 */
public interface AuditService extends IService<UserLog> {
    /**
     * 分页获取审计日志列表
     * @param auditParam 查询参数
     */
    Page<AuditLogVO> getAuditLog(AuditParam auditParam);

    /**
     * 异步存储审计排序或到处日志
     */
    void saveAuditLog(HttpServletRequest request, AuditParam auditParam, String methodDescribe);

    /**
     * 日志文件备份下载
     */
    void logFileWriter();

    /**
     * 日志文件数据恢复
     */
    void recoverLogFile() ;

    /**
     * 分页获取审计日志统计列表
     * @param auditParam 查询参数
     */
    Page<AuditLogCusVO> censusAuditLog(AuditParam auditParam);

    /**
     * 获取筛选下拉列表参数
     */
    LogParamVO saveLogParam();

    /**
     * 清空6个月前的历史日志
     */
    void clearHistoryLog();

    /**
     * 获取表空间大小
     * @return Float
     */
    Float getMemoInfo();

    List<OnlineUsersVO> getOnlineUsers() throws ParseException;
}
