package com.yfd.platform.system.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yfd.platform.annotation.Log;
import com.yfd.platform.config.ResponseResult;
import com.yfd.platform.system.domain.SysLog;
import com.yfd.platform.system.service.ISysLogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

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

/**
 * <p>
 * 系统操作日志 前端控制器
 * </p>
 *
 * @author LiMengNan
 * @since 2023-03-08
 */
@RestController
@RequestMapping("/system/log")
@Api(tags = "系统日志")
public class SysLogController {

    @Resource
    private ISysLogService sysLogService;

    /**********************************
     * 用途说明: 分页查询日志信息
     * 参数说明  page分页对象、username（用户名）、(optType)
     * 操作类型、startDate(开始日期)、endDate（结束日期）
     * 返回值说明: com.yfd.platform.config.ResponseResult 返回分页查询结果
     ***********************************/
    @PostMapping("/getLogList")
    @ApiOperation("分页查询日志信息")
    public ResponseResult getLogList(String username, String optType,
                                     String startDate,
                                     String endDate, Page<SysLog> page) {

        Page<SysLog> sysLogPage = sysLogService.getLogList(username, optType,
                startDate, endDate, page);
        Map<String, Object> map = new HashMap<>();
        map.put("list", sysLogPage.getRecords());
        map.put("total", sysLogPage.getTotal());
        map.put("size", sysLogPage.getSize());
        map.put("current", sysLogPage.getCurrent());
        return ResponseResult.successData(map);
    }

    /**********************************
     * 用途说明: 导出日志数据
     * 参数说明  sysLogs  所需导出的字典项集合
     * 返回值说明: com.yfd.platform.config.ResponseResult 返回导出成功或者失败
     ***********************************/
    @Log(module = "系统日志", value = "导出系统日志到Excel")
    @GetMapping("/exportExcel")
    @ApiOperation("导出日志数据")
    public void exportExcel(String username, String optType,
                            String startDate,
                            String endDate, Page<SysLog> page,
                            HttpServletResponse response) throws IOException {

        Page<SysLog> sysLogPage = sysLogService.getLogList(username, optType,
                startDate, endDate, page);
        sysLogService.exportExcel(sysLogPage.getRecords(), response);
    }
}
