From a2a5f1b9b70be48687ac7f84ebf6aa132c3721e9 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期六, 21 三月 2026 21:18:12 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/config/AdminInterceptor.java |   33 ++++++++++++++++++++++++++++++++-
 1 files changed, 32 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/zy/common/config/AdminInterceptor.java b/src/main/java/com/zy/common/config/AdminInterceptor.java
index 03c488d..6636107 100644
--- a/src/main/java/com/zy/common/config/AdminInterceptor.java
+++ b/src/main/java/com/zy/common/config/AdminInterceptor.java
@@ -16,9 +16,12 @@
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.HandlerInterceptor;
 import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.util.ContentCachingRequestWrapper;
 
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 import java.lang.reflect.Method;
 import java.util.Date;
 import java.util.LinkedHashMap;
@@ -99,6 +102,7 @@
             return;
         }
         OperateLog operateLog = (OperateLog) obj;
+        operateLog.setRequest(buildRequestContent(request));
         operateLog.setResponse(buildResponseContent(response, ex));
         try {
             operateLogService.save(operateLog);
@@ -188,11 +192,38 @@
         operateLog.setAction(Cools.isEmpty(memo) ? request.getRequestURI() : memo);
         operateLog.setIp(request.getRemoteAddr());
         operateLog.setUserId(userId);
-        operateLog.setRequest(JSON.toJSONString(request.getParameterMap()));
         operateLog.setCreateTime(new Date());
         request.setAttribute(ATTR_OPERATE_LOG, operateLog);
     }
 
+    private String buildRequestContent(HttpServletRequest request) {
+        String body = readCachedBody(request);
+        if (!Cools.isEmpty(body)) {
+            return body;
+        }
+        return JSON.toJSONString(request.getParameterMap());
+    }
+
+    private String readCachedBody(HttpServletRequest request) {
+        if (!(request instanceof ContentCachingRequestWrapper)) {
+            return null;
+        }
+        ContentCachingRequestWrapper wrapper = (ContentCachingRequestWrapper) request;
+        byte[] content = wrapper.getContentAsByteArray();
+        if (content == null || content.length == 0) {
+            return null;
+        }
+        Charset charset = StandardCharsets.UTF_8;
+        if (!Cools.isEmpty(wrapper.getCharacterEncoding())) {
+            try {
+                charset = Charset.forName(wrapper.getCharacterEncoding());
+            } catch (Exception ignored) {
+            }
+        }
+        String body = new String(content, charset).trim();
+        return body.isEmpty() ? null : body;
+    }
+
     private String buildResponseContent(HttpServletResponse response, Exception ex) {
         Map<String, Object> result = new LinkedHashMap<>();
         result.put("status", response.getStatus());

--
Gitblit v1.9.1