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