skyouc
昨天 d88eed4d6928efd2a974a26b49121ed0e3098e43
动态字段拦截修改优化
4个文件已添加
6个文件已删除
2个文件已修改
441 ■■■■ 已修改文件
rsf-admin/.env 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/config/WebMvcConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/interceptor/DynamicFieldsInterceptor.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/interceptor/severlet/CustomParameterFilter.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/interceptor/severlet/DynamicFieldsInterceptor.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/interceptor/severlet/ParameterAddableRequest.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/interceptor/severlet/ParameterAddingFilter.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/order.sql 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/orderItem.sql 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/stockItem.sql 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/wave.sql 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/waveItem.sql 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/.env
@@ -1,3 +1,3 @@
VITE_BASE_IP=192.168.4.56
VITE_BASE_IP=127.0.0.1
# VITE_BASE_IP=47.76.147.249
VITE_BASE_PORT=8080
rsf-server/src/main/java/com/vincent/rsf/server/common/config/WebMvcConfig.java
@@ -1,7 +1,7 @@
package com.vincent.rsf.server.common.config;
import com.vincent.rsf.server.common.constant.Constants;
import com.vincent.rsf.server.common.interceptor.DynamicFieldsInterceptor;
import com.vincent.rsf.server.common.interceptor.severlet.DynamicFieldsInterceptor;
import com.vincent.rsf.server.common.utils.Http;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
rsf-server/src/main/java/com/vincent/rsf/server/common/interceptor/DynamicFieldsInterceptor.java
File was deleted
rsf-server/src/main/java/com/vincent/rsf/server/common/interceptor/severlet/CustomParameterFilter.java
New file
@@ -0,0 +1,37 @@
package com.vincent.rsf.server.common.interceptor.severlet;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Component
public class CustomParameterFilter extends OncePerRequestFilter {
    @Override
    protected void doFilterInternal(HttpServletRequest request,
                                    HttpServletResponse response,
                                    FilterChain filterChain)
            throws ServletException, IOException {
        ParameterAddableRequest wrappedRequest = new ParameterAddableRequest(request);
        // 添加系统级参数
        wrappedRequest.addParameter("systemVersion", "1.0.0");
        wrappedRequest.addParameter("environment", System.getProperty("spring.profiles.active", "default"));
        // 添加请求追踪信息
        addTraceInfo(wrappedRequest);
        filterChain.doFilter(wrappedRequest, response);
    }
    private void addTraceInfo(ParameterAddableRequest request) {
        String traceId = request.getHeader("X-Trace-Id");
//        if (traceId == null || traceId.isEmpty()) {
//            traceId = UUID.randomUUID().toString();
//        }
        request.addParameter("traceId", "traceId");
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/common/interceptor/severlet/DynamicFieldsInterceptor.java
New file
@@ -0,0 +1,66 @@
package com.vincent.rsf.server.common.interceptor.severlet;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * @author Ryan
 * @version 1.0
 * @title DynamicFieldsInterceptor
 * @description
 * @create 2025/4/16 16:10
 */
@Slf4j
public class DynamicFieldsInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//        if (request instanceof ParameterAddableRequest) {
//            ParameterAddableRequest wrappedRequest = (ParameterAddableRequest) request;
//
//            // 添加业务参数
//            wrappedRequest.addParameter("processedBy", "CustomParameterInterceptor");
//
//            // 可以从Session或其他地方获取数据
//            Object userId = request.getSession().getAttribute("userId");
//            if (userId != null) {
//                wrappedRequest.addParameter("currentUserId", userId.toString());
//            }
//        }
//
//        return true;
//        List<Fields> fields = FieldsUtils.getFieldsSta();
//        List<String> fieldsKey = fields.stream().filter(item -> item.getFlagEnable() == 1).map(Fields::getFields).collect(Collectors.toList());
//        fieldsKey.forEach(key -> {
//            if (request.getParameterMap().keySet().contains(key)) {
//                request.setAttribute(key, request.getParameterMap().get(key));
//            }
//        })
//        if (request instanceof ParameterAddableRequest) {
//            ParameterAddableRequest wrappedRequest = (ParameterAddableRequest) request;
//            wrappedRequest.addParameter("DynamicFields", "springValue");
//        }
//        return true;
        return HandlerInterceptor.super.preHandle(request, response, handler);
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println(response.getOutputStream().toString());
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/common/interceptor/severlet/ParameterAddableRequest.java
New file
@@ -0,0 +1,61 @@
package com.vincent.rsf.server.common.interceptor.severlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.util.*;
public class ParameterAddableRequest extends HttpServletRequestWrapper {
    private final Map<String, String[]> additionalParams = new HashMap<>();
    public ParameterAddableRequest(HttpServletRequest request) {
        super(request);
    }
    /**
     * 添加新参数
     * @param name 参数名
     * @param value 参数值
     */
    public void addParameter(String name, String value) {
        additionalParams.put(name, new String[]{value});
    }
    /**
     * 添加新参数(多值)
     * @param name 参数名
     * @param values 参数值数组
     */
    public void addParameter(String name, String[] values) {
        additionalParams.put(name, values);
    }
    @Override
    public String getParameter(String name) {
        if (additionalParams.containsKey(name)) {
            return additionalParams.get(name)[0];
        }
        return super.getParameter(name);
    }
    @Override
    public Map<String, String[]> getParameterMap() {
        Map<String, String[]> combinedMap = new HashMap<>(super.getParameterMap());
        combinedMap.putAll(additionalParams);
        return Collections.unmodifiableMap(combinedMap);
    }
    @Override
    public Enumeration<String> getParameterNames() {
        Set<String> names = new HashSet<>(Collections.list(super.getParameterNames()));
        names.addAll(additionalParams.keySet());
        return Collections.enumeration(names);
    }
    @Override
    public String[] getParameterValues(String name) {
        if (additionalParams.containsKey(name)) {
            return additionalParams.get(name);
        }
        return super.getParameterValues(name);
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/common/interceptor/severlet/ParameterAddingFilter.java
New file
@@ -0,0 +1,52 @@
package com.vincent.rsf.server.common.interceptor.severlet;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
@WebFilter("/*") // 拦截所有请求
public class ParameterAddingFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // 初始化逻辑
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        if (request instanceof HttpServletRequest) {
            // 创建可修改参数的请求包装器
            ParameterAddableRequest wrappedRequest =
                    new ParameterAddableRequest((HttpServletRequest) request);
            // 添加自定义参数
            addCustomParameters(wrappedRequest);
            // 继续过滤器链
            chain.doFilter(wrappedRequest, response);
        } else {
            chain.doFilter(request, response);
        }
    }
    private void addCustomParameters(ParameterAddableRequest request) {
        // 添加请求ID和时间戳
//        request.addParameter("requestId", UUID.randomUUID().toString());
        request.addParameter("timestamp", String.valueOf(System.currentTimeMillis()));
        // 根据业务需求添加其他参数
        String userAgent = request.getHeader("User-Agent");
        if (userAgent != null && userAgent.contains("Mobile")) {
            request.addParameter("deviceType", "mobile");
        } else {
            request.addParameter("deviceType", "desktop");
        }
    }
    @Override
    public void destroy() {
        // 清理逻辑
    }
}
rsf-server/src/main/java/order.sql
File was deleted
rsf-server/src/main/java/orderItem.sql
File was deleted
rsf-server/src/main/java/stockItem.sql
File was deleted
rsf-server/src/main/java/wave.sql
File was deleted
rsf-server/src/main/java/waveItem.sql
File was deleted