package com.yfd.platform.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yfd.platform.system.domain.SysLog;
import org.aspectj.lang.ProceedingJoinPoint;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 系统操作日志 服务类
 * </p>
 *
 * @author LiMengNan
 * @since 2023-03-08
 */
public interface ISysLogService extends IService<SysLog> {

    /**********************************
     * 用途说明: 分页查询日志信息
     * 参数说明  pageNum(页码数)、pageSize（页大小，如果是固定页大小可不传）、username（用户名）、(optType)
     * 操作类型、startDate(开始日期)、endDate（结束日期）
     * 返回值说明: com.yfd.platform.config.ResponseResult 返回分页查询结果
     ***********************************/
    Page<SysLog> getLogList(String username, String optType,
                                   String startDate,
                                   String endDate, Page<SysLog> page);


    /**********************************
     * 用途说明: 导出日志数据
     * 参数说明  sysLogs  所需导出的字典项集合
     * 返回值说明: com.yfd.platform.config.ResponseResult 返回导出成功或者失败
     ***********************************/
    void exportExcel(List<SysLog> sysLogs, HttpServletResponse response) throws IOException;

    /**********************************
    * 用途说明: 新增日志
    * 参数说明 nickname  用户名
    * 参数说明 username  用户账号
    * 参数说明 browser   浏览器
    * 参数说明 ip        本机Ip地址
    * 参数说明 joinPoint 连接点
    * 参数说明 log       日志信息
    * 返回值说明: void
    ***********************************/
    void save(String nickname,String username, String browser, String ip, ProceedingJoinPoint joinPoint, SysLog log);
}
