From a27162cb82ef0cabf9b43cbfd1f3eb8c177d1e14 Mon Sep 17 00:00:00 2001 From: heheng <heheng@123456> Date: 星期一, 13 一月 2025 15:22:44 +0800 Subject: [PATCH] 修改问题 --- src/main/java/com/gkhy/labRiskManage/config/interceptor/RepeatSubmitInterceptor.java | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 55 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/gkhy/labRiskManage/config/interceptor/RepeatSubmitInterceptor.java b/src/main/java/com/gkhy/labRiskManage/config/interceptor/RepeatSubmitInterceptor.java new file mode 100644 index 0000000..f639fa0 --- /dev/null +++ b/src/main/java/com/gkhy/labRiskManage/config/interceptor/RepeatSubmitInterceptor.java @@ -0,0 +1,55 @@ +package com.gkhy.labRiskManage.config.interceptor; + + +import com.gkhy.labRiskManage.commons.enums.ResultCode; +import com.gkhy.labRiskManage.commons.exception.BusinessException; +import com.gkhy.labRiskManage.config.annotation.RepeatSubmit; +import org.springframework.stereotype.Component; +import org.springframework.web.method.HandlerMethod; +import org.springframework.web.servlet.HandlerInterceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.lang.reflect.Method; + +/** + * 防止器重复提交拦截 + * + */ +@Component +public abstract class RepeatSubmitInterceptor implements HandlerInterceptor +{ + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception + { + if (handler instanceof HandlerMethod) + { + HandlerMethod handlerMethod = (HandlerMethod) handler; + Method method = handlerMethod.getMethod(); + RepeatSubmit annotation = method.getAnnotation(RepeatSubmit.class); + if (annotation != null) + { + if (this.isRepeatSubmit(request, annotation)) + { + //throw new RuntimeException(annotation.message()); + throw new BusinessException(this.getClass(), ResultCode.BUSINESS_ERROR_NOT_ALLOWED.getCode(), annotation.message()); + + } + } + return true; + } + else + { + return true; + } + } + + /** + * 验证是否重复提交由子类实现具体的防重复提交的规则 + * + * @param request 请求对象 + * @param annotation 防复注解 + * @return 结果 + */ + public abstract boolean isRepeatSubmit(HttpServletRequest request, RepeatSubmit annotation) throws Exception; +} -- Gitblit v1.9.2