Explorar el Código

任务提交 日志相关

杜魏 hace 4 años
padre
commit
663a77d15c

+ 8 - 0
modules/admin/pom.xml

@@ -105,6 +105,14 @@
             <groupId>com.aliyun.oss</groupId>
             <artifactId>aliyun-sdk-oss</artifactId>
         </dependency>
+
+        <!-- ===========切面================== -->
+        <dependency>
+            <groupId>org.aspectj</groupId>
+            <artifactId>aspectjweaver</artifactId>
+            <version>1.9.6</version>
+        </dependency>
+
     </dependencies>
 
 </project>

+ 17 - 0
modules/admin/src/main/java/com/fire/admin/annotation/FireOperationLog.java

@@ -0,0 +1,17 @@
+package com.fire.admin.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * @author admin
+ * 操作日志注解
+ */
+@Target({ElementType.PARAMETER, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface FireOperationLog {
+
+    String value() default "";
+
+    String description() default "";
+}

+ 61 - 0
modules/admin/src/main/java/com/fire/admin/aop/FireOperationLogAop.java

@@ -0,0 +1,61 @@
+package com.fire.admin.aop;
+
+import com.fire.admin.annotation.FireOperationLog;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.Method;
+import java.util.Arrays;
+
+/**
+ * @author admin
+ * 操作日志记录切面
+ */
+@Aspect
+@Component
+@Slf4j
+public class FireOperationLogAop {
+
+    @Pointcut("@annotation(com.fire.admin.annotation.FireOperationLog)")
+    public void operationLog() {
+    }
+
+    @Around("operationLog()")
+    public Object getReturning(ProceedingJoinPoint joinPoint) throws Throwable {
+        //获取swagger接口说明注解
+        MethodSignature methodSign = (MethodSignature) joinPoint.getSignature();
+        Method method = methodSign.getMethod();
+        StringBuilder desc = new StringBuilder();
+
+        FireOperationLog zAnnotation = method.getAnnotation(FireOperationLog.class);
+        if (StringUtils.isNotEmpty(zAnnotation.description())) {
+            desc = new StringBuilder(zAnnotation.description());
+        } else {
+            // 判断是否有ApiOperation注解
+            boolean flag = method.isAnnotationPresent(ApiOperation.class);
+            if (flag) {
+                ApiOperation annotation = method.getAnnotation(ApiOperation.class);
+                desc = new StringBuilder(annotation.value());
+            }
+        }
+        //将参数拼接进说明中
+        desc.append(Arrays.toString(joinPoint.getArgs()));
+        //获取操作结果
+        Object obj = null;
+        try {
+            obj = joinPoint.proceed();
+            desc.append(" SUCCESS");
+        } catch (Throwable throwable) {
+            desc.append(" FAILURE");
+            throw throwable;
+        }
+        return obj;
+    }
+}

+ 14 - 0
modules/admin/src/main/java/com/fire/admin/mapper/LogInfoMapper.java

@@ -0,0 +1,14 @@
+package com.fire.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fire.dto.LogInfo;
+
+/**
+ * @author: admin
+ * @Description:
+ * @date: 2021-06-24 18:35
+ * @Modified By:
+ */
+public interface LogInfoMapper extends BaseMapper<LogInfo> {
+
+}

+ 37 - 0
modules/admin/src/main/java/com/fire/admin/request/LogInfoPageParam.java

@@ -0,0 +1,37 @@
+package com.fire.admin.request;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @author: admin
+ * @Description:
+ * @date: 2021-06-24 18:27
+ * @Modified By:
+ */
+@ApiModel("日志记录分页请求参数")
+@Getter
+@Setter
+public class LogInfoPageParam extends Page {
+
+    @ApiModelProperty("日志生成时间")
+    private Date createTime;
+
+    @ApiModelProperty("操作人")
+    private String optUser;
+
+    @ApiModelProperty("操作信息")
+    private String optInfo;
+
+    @ApiModelProperty("日志级别")
+    private String logLevel;
+
+    @ApiModelProperty("日志类型")
+    private Integer type;
+
+}

+ 39 - 0
modules/admin/src/main/java/com/fire/admin/rest/LogInfoRest.java

@@ -0,0 +1,39 @@
+package com.fire.admin.rest;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.fire.admin.request.LogInfoPageParam;
+import com.fire.admin.service.LogInfoService;
+import com.fire.dto.LogInfo;
+import com.fire.dto.response.BaseRestResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * @author: admin
+ * @Description:
+ * @date: 2021-06-24 18:38
+ * @Modified By:
+ */
+@Api(tags = "日志记录相关接口")
+@RestController
+@RequestMapping("/logInfo")
+public class LogInfoRest {
+
+    @Resource
+    private LogInfoService logInfoService;
+
+    @PostMapping("/list")
+    @ApiOperation(value = "分页获取日志信息", notes = "get_log_info_page.py")
+    public BaseRestResponse getLogInfoByCondition(LogInfoPageParam logInfoPageParam) {
+        IPage<LogInfo> logInfoList = logInfoService.getLogInfoByCondition(logInfoPageParam);
+        if (logInfoList != null) {
+            return new BaseRestResponse(logInfoList);
+        }
+        return new BaseRestResponse(null);
+    }
+}

+ 18 - 0
modules/admin/src/main/java/com/fire/admin/service/LogInfoService.java

@@ -0,0 +1,18 @@
+package com.fire.admin.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fire.admin.request.LogInfoPageParam;
+import com.fire.dto.LogInfo;
+
+/**
+ * @author: admin
+ * @Description:
+ * @date: 2021-06-24 18:24
+ * @Modified By:
+ */
+public interface LogInfoService extends IService<LogInfo> {
+
+    IPage<LogInfo> getLogInfoByCondition(LogInfoPageParam logInfoPageParam);
+
+}

+ 36 - 0
modules/admin/src/main/java/com/fire/admin/service/impl/LogInfoServiceImpl.java

@@ -0,0 +1,36 @@
+package com.fire.admin.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fire.admin.mapper.LogInfoMapper;
+import com.fire.admin.request.LogInfoPageParam;
+import com.fire.admin.service.LogInfoService;
+import com.fire.dto.LogInfo;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author: admin
+ * @Description:
+ * @date: 2021-06-24 18:34
+ * @Modified By:
+ */
+@Service
+public class LogInfoServiceImpl extends ServiceImpl<LogInfoMapper, LogInfo> implements LogInfoService {
+
+    @Override
+    public IPage<LogInfo> getLogInfoByCondition(LogInfoPageParam logInfoPageParam) {
+        LambdaQueryWrapper<LogInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.ge(logInfoPageParam.getCreateTime() != null, LogInfo::getCreateTime, logInfoPageParam.getCreateTime())
+                .le(logInfoPageParam.getCreateTime() != null, LogInfo::getCreateTime, logInfoPageParam.getCreateTime())
+                .eq(logInfoPageParam.getOptUser() != null, LogInfo::getOptUser, logInfoPageParam.getOptUser())
+                .eq(logInfoPageParam.getOptInfo() != null, LogInfo::getOptInfo, logInfoPageParam.getOptInfo())
+                .eq(logInfoPageParam.getLogLevel() != null, LogInfo::getLogLevel, logInfoPageParam.getLogLevel())
+                .eq(logInfoPageParam.getType() != null, LogInfo::getType, logInfoPageParam.getType());
+        IPage<LogInfo> logInfos = baseMapper.selectPage(logInfoPageParam, lambdaQueryWrapper);
+        if (logInfos != null) {
+            return logInfos;
+        }
+        return null;
+    }
+}