Browse Source

日志管理

tianyabing 2 years ago
parent
commit
611825793d

+ 21 - 0
src/main/java/com/sky/ioc/config/LoginAspect.java

@@ -1,6 +1,8 @@
 package com.sky.ioc.config;
 
 import com.sky.ioc.constant.Constant;
+import com.sky.ioc.entity.domain.log.Log;
+import com.sky.ioc.mapper.log.LogMapper;
 import com.sky.ioc.tool.JwtUtil;
 import com.sky.ioc.tool.RedisUtil;
 import com.sky.ioc.tool.ReturnMsg;
@@ -15,6 +17,8 @@ import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.Objects;
 
 @Slf4j
@@ -25,6 +29,9 @@ public class LoginAspect {
     @Autowired
     private RedisUtil redisUtil;
 
+    @Autowired
+    private LogMapper logMapper;
+
     @Around("execution(* com.sky.ioc..*Controller.*(..))")
     public Object aroundLog(ProceedingJoinPoint joinPoint) throws Throwable {
         ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
@@ -43,4 +50,18 @@ public class LoginAspect {
         }
         return ReturnMsg.fail(Constant.MSG_CODE.LOGIN_TIMEOUT, "当前未登录");
     }
+
+
+    private boolean insertLog() {
+        Log log1 = new Log();
+        log1.setModule("");
+        log1.setOperation_type("");
+        log1.setRequest("");
+        log1.setOperation_staff("");
+        log1.setOperation_address("");
+        log1.setOperation_status("");
+        log1.setOperation_time(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        logMapper.insert(log1);
+        return true;
+    }
 }

+ 35 - 0
src/main/java/com/sky/ioc/controller/log/LogController.java

@@ -0,0 +1,35 @@
+package com.sky.ioc.controller.log;
+
+import com.sky.ioc.entity.dto.LogParam;
+import com.sky.ioc.service.log.LogService;
+import com.sky.ioc.tool.ReturnMsg;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+
+@Api(tags = "日志管理")
+@Slf4j
+@RestController
+@RequestMapping("/log")
+public class LogController {
+
+    @Autowired
+    private LogService logService;
+
+    @ApiOperation("日志导出")
+    @GetMapping("/log_export")
+    public void exportLog(HttpServletResponse response) {
+        logService.exportLog(response);
+    }
+
+    @ApiOperation("获取日志列表")
+    @GetMapping("/log_list")
+    public ReturnMsg getLogList(LogParam logParam) {
+        return logService.getLogList(logParam);
+    }
+
+}

+ 33 - 0
src/main/java/com/sky/ioc/entity/domain/log/Log.java

@@ -0,0 +1,33 @@
+package com.sky.ioc.entity.domain.log;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class Log {
+
+    @ExcelProperty("ID")
+    private Integer id;
+
+    @ExcelProperty("模块")
+    private String module;
+
+    @ExcelProperty("操作类型")
+    private String operation_type;
+
+    @ExcelProperty("请求")
+    private String request;
+
+    @ExcelProperty("操作人")
+    private String operation_staff;
+
+    @ExcelProperty("操作地址")
+    private String operation_address;
+
+    @ExcelProperty("操作状态")
+    private String operation_status;
+
+    @ExcelProperty("操作时间")
+    private String operation_time;
+
+}

+ 20 - 0
src/main/java/com/sky/ioc/entity/dto/LogParam.java

@@ -0,0 +1,20 @@
+package com.sky.ioc.entity.dto;
+
+import lombok.Data;
+
+@Data
+public class LogParam {
+
+    private String name;
+    private String module;
+    private String operation_type;
+    private String operation_status;
+    private String start_time;
+    private String end_time;
+
+
+    private Integer page;
+    private Integer page_size;
+
+
+}

+ 9 - 0
src/main/java/com/sky/ioc/mapper/log/LogMapper.java

@@ -0,0 +1,9 @@
+package com.sky.ioc.mapper.log;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sky.ioc.entity.domain.log.Log;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface LogMapper extends BaseMapper<Log> {
+}

+ 13 - 0
src/main/java/com/sky/ioc/service/log/LogService.java

@@ -0,0 +1,13 @@
+package com.sky.ioc.service.log;
+
+import com.sky.ioc.entity.dto.LogParam;
+import com.sky.ioc.tool.ReturnMsg;
+
+import javax.servlet.http.HttpServletResponse;
+
+public interface LogService {
+    void exportLog(HttpServletResponse response);
+
+    ReturnMsg getLogList(LogParam logParam);
+
+}

+ 67 - 0
src/main/java/com/sky/ioc/service/log/impl/LogServiceImpl.java

@@ -0,0 +1,67 @@
+package com.sky.ioc.service.log.impl;
+
+import com.alibaba.excel.EasyExcel;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.sky.ioc.entity.domain.log.Log;
+import com.sky.ioc.entity.dto.LogParam;
+import com.sky.ioc.mapper.log.LogMapper;
+import com.sky.ioc.service.log.LogService;
+import com.sky.ioc.tool.ReturnMsg;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+@Service
+@Slf4j
+public class LogServiceImpl implements LogService {
+
+    @Autowired
+    private LogMapper logMapper;
+
+    @Override
+    public void exportLog(HttpServletResponse response) {
+        List<Log> logs = logMapper.selectList(new LambdaQueryWrapper<>());
+        try {
+            ServletOutputStream outputStream = response.getOutputStream();
+            EasyExcel.write(outputStream, Log.class).autoCloseStream(true).sheet().doWrite(logs);
+            response.setContentType("application/vnd.ms-excel");
+            response.setCharacterEncoding("utf8");
+            response.setHeader("Content-disposition", "attachment;filename=" + "操作日志—"+System.currentTimeMillis()+".xlsx" );
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+    }
+
+    @Override
+    public ReturnMsg getLogList(LogParam logParam) {
+        ReturnMsg<Object> ok = ReturnMsg.ok();
+        LambdaQueryWrapper<Log> queryWrapper = new LambdaQueryWrapper<>();
+        if (StringUtils.isNotBlank(logParam.getName())) {
+            queryWrapper.like(Log::getOperation_staff, "%"+logParam.getName()+"%");
+        }
+        if (StringUtils.isNotBlank(logParam.getModule())) {
+            queryWrapper.like(Log::getModule, "%"+logParam.getModule()+"%");
+        }
+        if (StringUtils.isNotBlank(logParam.getOperation_type())) {
+            queryWrapper.eq(Log::getOperation_type, logParam.getOperation_type());
+        }
+        if (StringUtils.isNoneBlank(logParam.getStart_time(), logParam.getEnd_time())) {
+            queryWrapper.le(Log::getOperation_time, logParam.getEnd_time());
+            queryWrapper.ge(Log::getOperation_time, logParam.getStart_time());
+        }
+
+        PageHelper.startPage(logParam.getPage(), logParam.getPage_size());
+        List<Log> logs = logMapper.selectList(queryWrapper);
+        PageInfo<Log> pageInfo = PageInfo.of(logs);
+        ok.setData(logs);
+        ok.setTotal(pageInfo.getTotal());
+        return ok;
+    }
+}