diff --git a/kernel-d-log/log-business-requestapi/pom.xml b/kernel-d-log/log-business-requestapi/pom.xml
index e40b3ac99..204d82001 100644
--- a/kernel-d-log/log-business-requestapi/pom.xml
+++ b/kernel-d-log/log-business-requestapi/pom.xml
@@ -24,6 +24,14 @@
1.0.0
+
+
+
+ cn.stylefeng.roses
+ scanner-api
+ 1.0.0
+
+
diff --git a/kernel-d-log/log-business-requestapi/src/main/java/cn/stylefeng/roses/kernel/log/modular/requestapi/aop/RequestApiLogRecordAop.java b/kernel-d-log/log-business-requestapi/src/main/java/cn/stylefeng/roses/kernel/log/modular/requestapi/aop/RequestApiLogRecordAop.java
index 2f9abcc60..99d3388bd 100644
--- a/kernel-d-log/log-business-requestapi/src/main/java/cn/stylefeng/roses/kernel/log/modular/requestapi/aop/RequestApiLogRecordAop.java
+++ b/kernel-d-log/log-business-requestapi/src/main/java/cn/stylefeng/roses/kernel/log/modular/requestapi/aop/RequestApiLogRecordAop.java
@@ -8,11 +8,14 @@ import cn.stylefeng.roses.kernel.log.api.factory.appender.AuthedLogAppender;
import cn.stylefeng.roses.kernel.log.api.factory.appender.HttpLogAppender;
import cn.stylefeng.roses.kernel.log.api.factory.appender.ParamsLogAppender;
import cn.stylefeng.roses.kernel.log.api.pojo.record.LogRecordDTO;
+import cn.stylefeng.roses.kernel.resource.api.annotation.GetResource;
+import cn.stylefeng.roses.kernel.resource.api.annotation.PostResource;
import lombok.extern.slf4j.Slf4j;
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.core.DefaultParameterNameDiscoverer;
import org.springframework.core.Ordered;
import org.springframework.core.ParameterNameDiscoverer;
@@ -51,7 +54,53 @@ public class RequestApiLogRecordAop implements Ordered {
}
@Around("cutService()")
- public Object around(ProceedingJoinPoint point) throws Throwable {
+ public Object aroundPost(ProceedingJoinPoint point) throws Throwable {
+ Object result = point.proceed();
+
+ try {
+ Map annoProps = getAnnotationProp(point);
+
+ Map args = getFieldsName(point);
+ recordLog(args, result, annoProps);
+ } catch (Exception e) {
+ log.error("日志记录没有记录成功!", e);
+ }
+
+ return result;
+ }
+
+ /**
+ * AOP获取PostResource和GetResource 属性信息
+ *
+ * @param joinPoint joinPoint对象
+ * @return 返回K, V格式的参数,key是参数名称,v是参数值
+ * @author liuhanqing
+ * @date 2020/12/22 21:18
+ */
+ private Map getAnnotationProp(ProceedingJoinPoint joinPoint) {
+ MethodSignature ms = (MethodSignature) joinPoint.getSignature();
+ Method method = ms.getMethod();
+ // 通过map封装参数和参数值,key参数名,value是参数值
+ Map propMap = new HashMap<>(2);
+ PostResource postResource = method.getAnnotation(PostResource.class);
+ if (postResource == null) {
+ GetResource getResource = method.getAnnotation(GetResource.class);
+ if (getResource != null) {
+ propMap.put("name", getResource.name());
+ propMap.put("requiredLogin", getResource.requiredLogin());
+ }
+ } else {
+ propMap.put("name", postResource.name());
+ propMap.put("requiredLogin", postResource.requiredLogin());
+ }
+
+ return propMap;
+ }
+
+/*
+ 第二种注解实现方式 获取注解属性
+ @Around("cutService()&&(@annotation(postResource))")
+ public Object aroundPost(ProceedingJoinPoint point, PostResource postResource) throws Throwable {
Object result = point.proceed();
try {
@@ -64,18 +113,33 @@ public class RequestApiLogRecordAop implements Ordered {
return result;
}
+ @Around("cutService()&&(@annotation(getResource))")
+ public Object aroundGet(ProceedingJoinPoint point, GetResource getResource) throws Throwable {
+ Object result = point.proceed();
+
+ try {
+ Map args = getFieldsName(point);
+ recordLog(args, result);
+ } catch (Exception e) {
+ log.error("日志记录没有记录成功!", e);
+ }
+
+ return result;
+ }*/
+
/**
* 将请求方法记录日志的过程
*
- * @param params AOP拦截方法的参数封装,key是参数名称,v是参数值
- * @param result AOP拦截方法的返回值
+ * @param params AOP拦截方法的参数封装,key是参数名称,v是参数值
+ * @param result AOP拦截方法的返回值
+ * @param annoProps AOP拦截注解属性
* @author fengshuonan
* @date 2020/10/28 17:38
*/
- private void recordLog(Map params, Object result) {
-
+ private void recordLog(Map params, Object result, Map annoProps) {
+ Object actionName = annoProps.get("name");
// 创建日志对象
- LogRecordDTO logRecordDTO = LogRecordFactory.createLogRecord(LogConstants.LOG_DEFAULT_NAME, null);
+ LogRecordDTO logRecordDTO = LogRecordFactory.createLogRecord(LogConstants.LOG_DEFAULT_NAME, actionName);
// 填充用户登录信息
AuthedLogAppender.appendAuthedHttpLog(logRecordDTO);