From d84aa7589c181a266d9bca01432a74f53ec83d88 Mon Sep 17 00:00:00 2001
From: whycq <10027870+whycq@user.noreply.gitee.com>
Date: 星期一, 27 五月 2024 13:45:49 +0800
Subject: [PATCH] # 操作日志
---
src/main/java/com/zy/common/config/AdminInterceptor.java | 8 +++
src/main/java/com/zy/common/utils/CustomHttpServletRequestWrapper.java | 48 ++++++++++++++++++++++++
src/main/java/com/zy/common/config/CustomRequestFilter.java | 20 ++++++++++
3 files changed, 75 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 fed375e..8fc8783 100644
--- a/src/main/java/com/zy/common/config/AdminInterceptor.java
+++ b/src/main/java/com/zy/common/config/AdminInterceptor.java
@@ -14,13 +14,16 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;
+import org.springframework.util.StreamUtils;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
+import java.nio.charset.Charset;
import java.util.Date;
/**
@@ -137,12 +140,15 @@
Http.response(response, BaseRes.NO_ACTIVATION);
return false;
}
+ ServletInputStream inputStream = request.getInputStream();
+ String bodyParam = StreamUtils.copyToString(inputStream, Charset.defaultCharset());
+
// 璁板綍鎿嶄綔鏃ュ織
OperateLog operateLog = new OperateLog();
operateLog.setAction(Cools.isEmpty(memo)?request.getRequestURI():memo);
operateLog.setIp(request.getRemoteAddr());
operateLog.setUserId(user.getId());
- operateLog.setRequest(JSON.toJSONString(request.getParameterMap()));
+ operateLog.setRequest(JSON.toJSONString(bodyParam));
request.setAttribute("operateLog", operateLog);
}
return true;
diff --git a/src/main/java/com/zy/common/config/CustomRequestFilter.java b/src/main/java/com/zy/common/config/CustomRequestFilter.java
new file mode 100644
index 0000000..2820040
--- /dev/null
+++ b/src/main/java/com/zy/common/config/CustomRequestFilter.java
@@ -0,0 +1,20 @@
+package com.zy.common.config;
+
+import com.zy.common.utils.CustomHttpServletRequestWrapper;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.*;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+
+@Component
+public class CustomRequestFilter implements Filter {
+
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
+ throws IOException, ServletException {
+ HttpServletRequest httpServletRequest = (HttpServletRequest) request;
+ CustomHttpServletRequestWrapper requestWrapper = new CustomHttpServletRequestWrapper(httpServletRequest);
+ chain.doFilter(requestWrapper, response);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/common/utils/CustomHttpServletRequestWrapper.java b/src/main/java/com/zy/common/utils/CustomHttpServletRequestWrapper.java
new file mode 100644
index 0000000..3a2ff1a
--- /dev/null
+++ b/src/main/java/com/zy/common/utils/CustomHttpServletRequestWrapper.java
@@ -0,0 +1,48 @@
+package com.zy.common.utils;
+
+import org.springframework.util.StreamUtils;
+
+import javax.servlet.ReadListener;
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import java.io.*;
+
+public class CustomHttpServletRequestWrapper extends HttpServletRequestWrapper {
+ private final byte[] bytes;
+
+ public CustomHttpServletRequestWrapper(HttpServletRequest request) throws IOException {
+ super(request);
+ bytes = StreamUtils.copyToByteArray(request.getInputStream());
+ }
+
+ @Override
+ public ServletInputStream getInputStream() throws IOException {
+ final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
+ return new ServletInputStream() {
+ @Override
+ public boolean isFinished() {
+ return false;
+ }
+
+ @Override
+ public boolean isReady() {
+ return false;
+ }
+
+ @Override
+ public void setReadListener(ReadListener readListener) {
+ }
+
+ @Override
+ public int read() throws IOException {
+ return byteArrayInputStream.read();
+ }
+ };
+ }
+
+ @Override
+ public BufferedReader getReader() throws IOException {
+ return new BufferedReader(new InputStreamReader(getInputStream()));
+ }
+}
\ No newline at end of file
--
Gitblit v1.9.1