From c6c9b7d3baa822765768c110304d27623f946286 Mon Sep 17 00:00:00 2001
From: pjb <123456>
Date: 星期二, 15 七月 2025 14:29:09 +0800
Subject: [PATCH] `1`
---
zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/aspect/OperationLogAspect.java | 384 +++++++++++++++++++++++++++---------------------------
1 files changed, 192 insertions(+), 192 deletions(-)
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/aspect/OperationLogAspect.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/aspect/OperationLogAspect.java
index ef685a3..006cc2d 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/aspect/OperationLogAspect.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/aspect/OperationLogAspect.java
@@ -1,192 +1,192 @@
-package com.zy.asrs.wms.common.aspect;
-
-import com.alibaba.fastjson.JSON;
-import com.zy.asrs.common.utils.IpTools;
-import com.zy.asrs.framework.common.Cools;
-import com.zy.asrs.wms.common.annotation.OperationLog;
-import com.zy.asrs.wms.system.entity.OperationRecord;
-import com.zy.asrs.wms.system.entity.User;
-import com.zy.asrs.wms.system.service.OperationRecordService;
-import com.zy.asrs.wms.utils.Utils;
-import org.aspectj.lang.JoinPoint;
-import org.aspectj.lang.annotation.*;
-import org.aspectj.lang.reflect.MethodSignature;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.stereotype.Component;
-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 java.lang.reflect.Method;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 鎿嶄綔鏃ュ織璁板綍
- *
- * @author vincent
- * @since 2020-03-21 16:58:16:05
- */
-@Aspect
-@Component
-public class OperationLogAspect {
-
- @Resource
- private OperationRecordService operationRecordService;
- // 鍙傛暟銆佽繑鍥炵粨鏋溿�侀敊璇俊鎭瓑鏈�澶т繚瀛橀暱搴�
- private static final int MAX_LENGTH = 1000;
- // 鐢ㄤ簬璁板綍璇锋眰鑰楁椂
- private final ThreadLocal<Long> startTime = new ThreadLocal<>();
-
- @Pointcut("@annotation(com.zy.asrs.wms.common.annotation.OperationLog)")
- public void operationLog() {
- }
-
- @Before("operationLog()")
- public void doBefore(JoinPoint joinPoint) throws Throwable {
- startTime.set(System.currentTimeMillis());
- }
-
- @AfterReturning(pointcut = "operationLog()", returning = "result")
- public void doAfterReturning(JoinPoint joinPoint, Object result) {
- saveLog(joinPoint, result, null);
- }
-
- @AfterThrowing(value = "operationLog()", throwing = "e")
- public void doAfterThrowing(JoinPoint joinPoint, Exception e) {
- saveLog(joinPoint, null, e);
- }
-
- /**
- * 淇濆瓨鎿嶄綔璁板綍
- */
- private void saveLog(JoinPoint joinPoint, Object result, Exception e) {
- // 璁板綍妯″潡鍚嶃�佹搷浣滃姛鑳姐�佽姹傛柟娉曘�佽姹傚弬鏁般�佽繑鍥炵粨鏋�
- MethodSignature signature = (MethodSignature) joinPoint.getSignature();
- Method method = signature.getMethod();
- if (null == method) {
- return;
- }
- OperationLog ol = method.getAnnotation(OperationLog.class);
- if (null == ol) {
- return;
- }
- String desc = getDescription(method, ol);
- if (Cools.isEmpty(desc)) {
- return;
- }
- OperationRecord record = new OperationRecord();
- Long endTime = startTime.get();
- record.setCreateTime(new Date());
- // 璁板綍鎿嶄綔鑰楁椂
- if (endTime != null) {
- record.setSpendTime((int) (System.currentTimeMillis() - endTime));
- }
- record.setTimestamp(String.valueOf(endTime));
- // 璁板綍褰撳墠鐧诲綍鐢ㄦ埛id銆佺鎴穒d
- User user = getLoginUser();
- if (user != null) {
- record.setUserId(user.getId());
- record.setHostId(user.getHostId());
- }
- // 璁板綍璇锋眰鍦板潃銆佽姹傛柟寮忋�乮p
- ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
- HttpServletRequest request = (attributes == null ? null : attributes.getRequest());
- if (request != null) {
- record.setUrl(request.getRequestURI());
- record.setClientIp(IpTools.gainRealIp(request));
- }
- // 璁板綍寮傚父淇℃伅
- if (e != null) {
- record.setResult(0);
- record.setErr(Utils.sub(e.toString(), MAX_LENGTH));
- } else {
- record.setResult(1);
- }
- // 璁板綍鎿嶄綔鍔熻兘
- record.setNamespace(desc);
- // 璁板綍澶囨敞
- if (!Cools.isEmpty(ol.comments())) {
- record.setMemo(ol.comments());
- }
- // 璁板綍璇锋眰鍙傛暟
- if (ol.param() && request != null) {
- record.setRequest(Utils.sub(getParams(joinPoint, request), MAX_LENGTH));
- }
- // 璁板綍璇锋眰缁撴灉
- if (ol.result() && result != null) {
- record.setResponse(Utils.sub(JSON.toJSONString(result), MAX_LENGTH));
- }
- operationRecordService.saveAsync(record);
- }
-
- /**
- * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
- */
- private User getLoginUser() {
- Authentication subject = SecurityContextHolder.getContext().getAuthentication();
- if (subject != null) {
- Object object = subject.getPrincipal();
- if (object instanceof User) {
- return (User) object;
- }
- }
- return null;
- }
-
- /**
- * 鑾峰彇璇锋眰鍙傛暟
- *
- * @param joinPoint JoinPoint
- * @param request HttpServletRequest
- * @return String
- */
- private String getParams(JoinPoint joinPoint, HttpServletRequest request) {
- String params;
-
- Map<String, String> paramsMap = new HashMap<>();
-
- Map<String, String[]> map = Collections.unmodifiableMap(request.getParameterMap());
- for (Map.Entry<String, String[]> entry : map.entrySet()) {
- paramsMap.put(entry.getKey(), Utils.join(entry.getValue(), ","));
- }
-
- if (paramsMap.keySet().size() > 0) {
- params = JSON.toJSONString(paramsMap);
- } else {
- StringBuilder sb = new StringBuilder();
- for (Object arg : joinPoint.getArgs()) {
- if (null == arg
- || arg instanceof MultipartFile
- || arg instanceof HttpServletRequest
- || arg instanceof HttpServletResponse) {
- continue;
- }
- sb.append(JSON.toJSONString(arg)).append(" ");
- }
- params = sb.toString();
- }
- return params;
- }
-
- /**
- * 鑾峰彇鎿嶄綔鍔熻兘
- *
- * @param method Method
- * @param ol OperationLog
- * @return String
- */
- private String getDescription(Method method, OperationLog ol) {
- if (!Cools.isEmpty(ol.value())) {
- return ol.value();
- }
- return null;
- }
-
-}
+package com.zy.asrs.wms.common.aspect;
+
+import com.alibaba.fastjson.JSON;
+import com.zy.asrs.common.utils.IpTools;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.wms.common.annotation.OperationLog;
+import com.zy.asrs.wms.system.entity.OperationRecord;
+import com.zy.asrs.wms.system.entity.User;
+import com.zy.asrs.wms.system.service.OperationRecordService;
+import com.zy.asrs.wms.utils.Utils;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.*;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.stereotype.Component;
+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 java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 鎿嶄綔鏃ュ織璁板綍
+ *
+ * @author vincent
+ * @since 2020-03-21 16:58:16:05
+ */
+@Aspect
+@Component
+public class OperationLogAspect {
+
+ @Resource
+ private OperationRecordService operationRecordService;
+ // 鍙傛暟銆佽繑鍥炵粨鏋溿�侀敊璇俊鎭瓑鏈�澶т繚瀛橀暱搴�
+ private static final int MAX_LENGTH = 1000;
+ // 鐢ㄤ簬璁板綍璇锋眰鑰楁椂
+ private final ThreadLocal<Long> startTime = new ThreadLocal<>();
+
+ @Pointcut("@annotation(com.zy.asrs.wms.common.annotation.OperationLog)")
+ public void operationLog() {
+ }
+
+ @Before("operationLog()")
+ public void doBefore(JoinPoint joinPoint) throws Throwable {
+ startTime.set(System.currentTimeMillis());
+ }
+
+ @AfterReturning(pointcut = "operationLog()", returning = "result")
+ public void doAfterReturning(JoinPoint joinPoint, Object result) {
+ saveLog(joinPoint, result, null);
+ }
+
+ @AfterThrowing(value = "operationLog()", throwing = "e")
+ public void doAfterThrowing(JoinPoint joinPoint, Exception e) {
+ saveLog(joinPoint, null, e);
+ }
+
+ /**
+ * 淇濆瓨鎿嶄綔璁板綍
+ */
+ private void saveLog(JoinPoint joinPoint, Object result, Exception e) {
+ // 璁板綍妯″潡鍚嶃�佹搷浣滃姛鑳姐�佽姹傛柟娉曘�佽姹傚弬鏁般�佽繑鍥炵粨鏋�
+ MethodSignature signature = (MethodSignature) joinPoint.getSignature();
+ Method method = signature.getMethod();
+ if (null == method) {
+ return;
+ }
+ OperationLog ol = method.getAnnotation(OperationLog.class);
+ if (null == ol) {
+ return;
+ }
+ String desc = getDescription(method, ol);
+ if (Cools.isEmpty(desc)) {
+ return;
+ }
+ OperationRecord record = new OperationRecord();
+ Long endTime = startTime.get();
+ record.setCreateTime(new Date());
+ // 璁板綍鎿嶄綔鑰楁椂
+ if (endTime != null) {
+ record.setSpendTime((int) (System.currentTimeMillis() - endTime));
+ }
+ record.setTimestamp(String.valueOf(endTime));
+ // 璁板綍褰撳墠鐧诲綍鐢ㄦ埛id銆佺鎴穒d
+ User user = getLoginUser();
+ if (user != null) {
+ record.setUserId(user.getId());
+ record.setHostId(user.getHostId());
+ }
+ // 璁板綍璇锋眰鍦板潃銆佽姹傛柟寮忋�乮p
+ ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+ HttpServletRequest request = (attributes == null ? null : attributes.getRequest());
+ if (request != null) {
+ record.setUrl(request.getRequestURI());
+ record.setClientIp(IpTools.gainRealIp(request));
+ }
+ // 璁板綍寮傚父淇℃伅
+ if (e != null) {
+ record.setResult(0);
+ record.setErr(Utils.sub(e.toString(), MAX_LENGTH));
+ } else {
+ record.setResult(1);
+ }
+ // 璁板綍鎿嶄綔鍔熻兘
+ record.setNamespace(desc);
+ // 璁板綍澶囨敞
+ if (!Cools.isEmpty(ol.comments())) {
+ record.setMemo(ol.comments());
+ }
+ // 璁板綍璇锋眰鍙傛暟
+ if (ol.param() && request != null) {
+ record.setRequest(Utils.sub(getParams(joinPoint, request), MAX_LENGTH));
+ }
+ // 璁板綍璇锋眰缁撴灉
+ if (ol.result() && result != null) {
+ record.setResponse(Utils.sub(JSON.toJSONString(result), MAX_LENGTH));
+ }
+ operationRecordService.saveAsync(record);
+ }
+
+ /**
+ * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
+ */
+ private User getLoginUser() {
+ Authentication subject = SecurityContextHolder.getContext().getAuthentication();
+ if (subject != null) {
+ Object object = subject.getPrincipal();
+ if (object instanceof User) {
+ return (User) object;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 鑾峰彇璇锋眰鍙傛暟
+ *
+ * @param joinPoint JoinPoint
+ * @param request HttpServletRequest
+ * @return String
+ */
+ private String getParams(JoinPoint joinPoint, HttpServletRequest request) {
+ String params;
+
+ Map<String, String> paramsMap = new HashMap<>();
+
+ Map<String, String[]> map = Collections.unmodifiableMap(request.getParameterMap());
+ for (Map.Entry<String, String[]> entry : map.entrySet()) {
+ paramsMap.put(entry.getKey(), Utils.join(entry.getValue(), ","));
+ }
+
+ if (paramsMap.keySet().size() > 0) {
+ params = JSON.toJSONString(paramsMap);
+ } else {
+ StringBuilder sb = new StringBuilder();
+ for (Object arg : joinPoint.getArgs()) {
+ if (null == arg
+ || arg instanceof MultipartFile
+ || arg instanceof HttpServletRequest
+ || arg instanceof HttpServletResponse) {
+ continue;
+ }
+ sb.append(JSON.toJSONString(arg)).append(" ");
+ }
+ params = sb.toString();
+ }
+ return params;
+ }
+
+ /**
+ * 鑾峰彇鎿嶄綔鍔熻兘
+ *
+ * @param method Method
+ * @param ol OperationLog
+ * @return String
+ */
+ private String getDescription(Method method, OperationLog ol) {
+ if (!Cools.isEmpty(ol.value())) {
+ return ol.value();
+ }
+ return null;
+ }
+
+}
--
Gitblit v1.9.1