fix: 码全代码添加

This commit is contained in:
2024-10-11 15:56:51 +08:00
parent 9a853f40c2
commit 7776e95902
907 changed files with 81296 additions and 324 deletions

View File

@@ -0,0 +1,38 @@
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
*.ipr
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2024 codvision.com All Rights Reserved.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.codvision</groupId>
<artifactId>cvbp-public</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cvbp-log-core</artifactId>
<packaging>jar</packaging>
<version>1.0.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.codvision</groupId>
<artifactId>cvbp-mq-core</artifactId>
</dependency>
<dependency>
<groupId>com.codvision</groupId>
<artifactId>cvbp-auth-core</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,13 @@
package com.codvision.logcore.annotation;
import java.lang.annotation.*;
/**
* 自定义注解类
*/
@Target(ElementType.METHOD) //注解放置的目标位置,METHOD是可注解在方法级别上
@Retention(RetentionPolicy.RUNTIME) //注解在哪个阶段执行
@Documented //生成文档
public @interface MyLog {
String value() default "";
}

View File

@@ -0,0 +1,105 @@
package com.codvision.logcore.aop;
import cn.hutool.json.JSONUtil;
import com.codvision.authcore.bean.SysUserBean;
import com.codvision.authcore.util.AuthUtil;
import com.codvision.commoncore.utils.NetworkUtils;
import com.codvision.logcore.annotation.MyLog;
import com.codvision.logcore.bean.SysLogMessage;
import com.codvision.mqcore.service.MQSender;
import org.apache.commons.lang3.ArrayUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @author: huxb
* @description: 系统日志记录类
* @program: gongshu_command_platform_server
* @creat: 2020-04-27 14:43
**/
@Aspect
public class SysLogAspect {
public static final String SYS_LOG_QUEUE_NAME = "SYS-LOG-QUEUE";
@Resource
private MQSender mqSender;
//定义切点 @Pointcut
//在注解MyLog的位置切入代码
@Pointcut("@annotation(com.codvision.logcore.annotation.MyLog)")
private void logPointCut() {
}
@AfterReturning(value = "logPointCut()", returning = "obj")
public void saveSysLog(JoinPoint joinpoint, Object obj) throws IOException {
SysLogMessage sysLog = new SysLogMessage();
//从切面织入点处通过反射机制获取织入点处的方法
MethodSignature methodSignature = (MethodSignature) joinpoint.getSignature();
//获取切入点所在的方法
Method method = methodSignature.getMethod();
//获取操作
MyLog myLog = method.getAnnotation(MyLog.class);
if (myLog != null) {
String value = myLog.value();
sysLog.setContent(value);
}
if (null != obj) {
sysLog.setCode(obj.toString());
}
//获取请求的类名
String className = joinpoint.getTarget().getClass().getName();
//获取请求的方法名
String methodName = method.getName();
sysLog.setMethod(className + "." + methodName);
//将参数所在的数组转换成json,设置请求参数
Object[] args = joinpoint.getArgs();
//joinPoint.getArgs()返回的数组中携带有Request或者Response对象导致序列化异常
Stream<?> stream = ArrayUtils.isEmpty(args) ? Stream.empty() : Arrays.asList(args).stream();
List<Object> logArgs = stream
.filter(arg -> (!(arg instanceof HttpServletRequest) && !(arg instanceof HttpServletResponse) && !(arg instanceof MultipartFile)))
.collect(Collectors.toList());
String param = JSONUtil.toJsonStr(logArgs);
sysLog.setParams(param);
//获取用户ip地址
// 接收到请求,记录请求内容
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (null != attributes) {
HttpServletRequest request = attributes.getRequest();
HttpSession session = request.getSession();
SysUserBean user = AuthUtil.getCurrentUser();
if (user != null) {
sysLog.setOperator(user.getLoginName());
sysLog.setOperatorUid(Math.toIntExact(user.getId()));
}
sysLog.setIp(NetworkUtils.getIpAddress(request));
}
sysLog.setType("系统操作日志");
mqSender.sendMessage(SYS_LOG_QUEUE_NAME, sysLog);
}
}

View File

@@ -0,0 +1,25 @@
package com.codvision.logcore.bean;
import lombok.Data;
@Data
public class SysLogMessage {
private String method;
private String createTime;
private String ip;
private String type;
private String params;
private String operator;
private String content;
private Integer operatorUid;
private String code;
}

View File

@@ -0,0 +1,24 @@
/*
* Copyright (c) 2024 codvision.com All Rights Reserved.
*/
package com.codvision.logcore.config;
import com.codvision.logcore.aop.SysLogAspect;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 日志装配配置
*
* @author lingee
* @since 2024/5/27
*/
@Configuration
public class LogConfig {
@Bean
public SysLogAspect sysLogAspect() {
return new SysLogAspect();
}
}

View File

@@ -0,0 +1,9 @@
/*
* Copyright (c) 2024 codvision.com All Rights Reserved.
*/
/**
* @author lingee
* @since 2024/5/27
*/
package com.codvision.logcore;

View File

@@ -0,0 +1 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.codvision.logcore.config.LogConfig