自动化立体仓库 - WMS系统
whycq
2024-05-27 d84aa7589c181a266d9bca01432a74f53ec83d88
# 操作日志
2个文件已添加
1个文件已修改
76 ■■■■■ 已修改文件
src/main/java/com/zy/common/config/AdminInterceptor.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/config/CustomRequestFilter.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/utils/CustomHttpServletRequestWrapper.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
src/main/java/com/zy/common/config/CustomRequestFilter.java
New file
@@ -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);
    }
}
src/main/java/com/zy/common/utils/CustomHttpServletRequestWrapper.java
New file
@@ -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()));
    }
}