From ff31d592924958958c21fdef1975d499586d964f Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期五, 26 十二月 2025 17:41:43 +0800
Subject: [PATCH] BUG修复

---
 rsf-server/src/main/java/com/vincent/rsf/server/common/exception/GlobalExceptionHandler.java |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/exception/GlobalExceptionHandler.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/exception/GlobalExceptionHandler.java
index 66f60c4..f26d109 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/exception/GlobalExceptionHandler.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/exception/GlobalExceptionHandler.java
@@ -1,10 +1,12 @@
 package com.vincent.rsf.server.common.exception;
 
 import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.common.constant.Constants;
 import com.vincent.rsf.server.common.utils.CommonUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.security.access.AccessDeniedException;
 import org.springframework.web.HttpRequestMethodNotSupportedException;
 import org.springframework.web.bind.annotation.ControllerAdvice;
@@ -12,6 +14,8 @@
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * 鍏ㄥ眬寮傚父澶勭悊鍣�
@@ -43,10 +47,40 @@
     @ExceptionHandler(BusinessException.class)
     public R businessExceptionHandler(BusinessException e, HttpServletResponse response) {
         CommonUtil.addCrossHeaders(response);
+        return R.parse(e.getMessage());
+    }
+
+    @ResponseBody
+    @ExceptionHandler(CoolException.class)
+    public R coolExceptionHandler(CoolException e, HttpServletResponse response) {
+        CommonUtil.addCrossHeaders(response);
         return R.error(e.getMessage());
     }
 
     @ResponseBody
+    @ExceptionHandler(DuplicateKeyException.class)
+    public R duplicateKeyExceptionHandler(DuplicateKeyException e, HttpServletResponse response) {
+        CommonUtil.addCrossHeaders(response);
+        String msg = e.getMessage();
+        String out = "鍞竴绱㈠紩鍐茬獊";
+        try {
+            Pattern p = Pattern.compile("Duplicate entry '(.+?)' for key '(.+?)'");
+            Matcher m = p.matcher(msg);
+            if (m.find()) {
+                String value = m.group(1);
+                String key = m.group(2);
+                if ("idx_code".equalsIgnoreCase(key)) {
+                    out = "缂栫爜宸插瓨鍦細" + value;
+                } else {
+                    out = "鍞竴绱㈠紩[" + key + "]鍊煎凡瀛樺湪锛�" + value;
+                }
+            }
+        } catch (Exception ignore) {}
+        return R.error(out);
+    }
+
+
+    @ResponseBody
     @ExceptionHandler(Throwable.class)
     public R exceptionHandler(Throwable e, HttpServletResponse response) {
         logger.error(e.getMessage(), e);

--
Gitblit v1.9.1