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