From 1db50ecdccd7a981888ee33c65e31b7f2f9f4733 Mon Sep 17 00:00:00 2001
From: MercuryZ <zdmisif@126.com>
Date: 星期四, 31 三月 2022 14:09:08 +0800
Subject: [PATCH] fix 操作日志
---
sandu-common/src/main/java/com/sandu/common/log/LogService.java | 59 +++++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 45 insertions(+), 14 deletions(-)
diff --git a/sandu-common/src/main/java/com/sandu/common/log/LogService.java b/sandu-common/src/main/java/com/sandu/common/log/LogService.java
index 2675d54..49b7901 100644
--- a/sandu-common/src/main/java/com/sandu/common/log/LogService.java
+++ b/sandu-common/src/main/java/com/sandu/common/log/LogService.java
@@ -1,27 +1,58 @@
-
package com.sandu.common.log;
+import cn.hutool.extra.servlet.ServletUtil;
+import cn.hutool.http.useragent.UserAgent;
+import cn.hutool.http.useragent.UserAgentInfo;
+import cn.hutool.http.useragent.UserAgentUtil;
+import com.sandu.common.security.SecurityUtils;
+import com.sandu.common.service.impl.BaseServiceImpl;
import org.aspectj.lang.ProceedingJoinPoint;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.transaction.annotation.Transactional;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
+import java.lang.reflect.Method;
+import java.util.Optional;
/**
* @author hupeng
* @date 2018-11-24
*/
-public interface LogService {
+@Service
+public class LogService extends BaseServiceImpl<LogDao, AccessLog> implements LogServiceImpl {
- /**
- * 淇濆瓨鏃ュ織鏁版嵁
- *
- * @param request /
- * @param joinPoint /
- * @param operationLog /
- */
- @Async
- @Transactional(rollbackFor = Exception.class)
- void saveOperation(HttpServletRequest request, ProceedingJoinPoint joinPoint, AccessLog operationLog);
+ @Override
+ public void saveOperation(HttpServletRequest request, ProceedingJoinPoint joinPoint, AccessLog accessLog) {
+ MethodSignature signature = (MethodSignature) joinPoint.getSignature();
+ Method method = signature.getMethod();
+ Log aopLog = method.getAnnotation(Log.class);
+
+ // 鏂规硶璺緞
+ String methodName = joinPoint.getTarget().getClass().getName() + "." + signature.getName() + "()";
+
+ StringBuilder params = new StringBuilder("{");
+ //鍙傛暟鍊�
+ Object[] argValues = joinPoint.getArgs();
+ //鍙傛暟鍚嶇О
+ String[] argNames = ((MethodSignature) joinPoint.getSignature()).getParameterNames();
+ if (argValues != null) {
+ for (int i = 0; i < argValues.length; i++) {
+ params.append(" ").append(argNames[i]).append(": ").append(argValues[i]);
+ }
+ }
+ accessLog.setDescription(aopLog.value());
+ //绫诲瀷 0-鍚庡彴 1-鍓嶅彴
+ accessLog.setType(aopLog.type());
+ accessLog.setUid(SecurityUtils.getUserId());
+
+ UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
+ accessLog.setBrowser(Optional.ofNullable(userAgent).map(UserAgent::getBrowser).map(UserAgentInfo::getName).orElse(""));
+ accessLog.setRequestIp(ServletUtil.getClientIP(request));
+
+ accessLog.setMethod(methodName);
+ accessLog.setUsername(SecurityUtils.getUsername());
+ accessLog.setParams(params.toString() + " }");
+ this.save(accessLog);
+ }
}
--
Gitblit v1.9.3