Преглед изворни кода

fix:优化无数据源信息异常处理

韩帛霖 пре 1 година
родитељ
комит
4026bfa6fb

+ 7 - 0
ruoyi-common/src/main/java/com/ruoyi/common/constant/HttpStatus.java

@@ -95,4 +95,11 @@ public class HttpStatus {
      * 系统警告消息:数据源信息未找到!认证失败。
      */
     public static final int ERRORWARN = 602;
+
+    /**
+     * 系统警告消息:sql执行异常
+     */
+    public static final int SQLERROR = 603;
+
+
 }

+ 2 - 7
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SqlInterceptor.java

@@ -1,18 +1,13 @@
 package com.ruoyi.framework.aspectj;
 
-import com.alibaba.fastjson2.JSON;
+
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.exception.tenantdatassource.TenantDataSource;
 import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.ServletUtils;
-import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.reflect.ReflectUtils;
-import com.ruoyi.framework.web.service.TokenService;
 import org.apache.ibatis.executor.statement.StatementHandler;
 import org.apache.ibatis.plugin.*;
-import org.aspectj.lang.annotation.Before;
 
-import java.lang.reflect.InvocationTargetException;
 import java.sql.Connection;
 import java.util.Properties;
 
@@ -27,7 +22,7 @@ import java.util.Properties;
 public class SqlInterceptor implements Interceptor {
 
     @Override
-    public Object intercept(Invocation invocation) throws Throwable {
+    public Object intercept(Invocation invocation) throws Throwable, TenantDataSource {
         StatementHandler statementHandler = (StatementHandler) invocation.getTarget();
         String sql = statementHandler.getBoundSql().getSql();
         // 修改SQL语句

+ 15 - 2
ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java

@@ -3,6 +3,8 @@ package com.ruoyi.framework.web.exception;
 import javax.servlet.http.HttpServletRequest;
 
 import com.ruoyi.common.exception.tenantdatassource.TenantDataSource;
+import com.ruoyi.common.utils.SecurityUtils;
+import org.mybatis.spring.MyBatisSystemException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.security.access.AccessDeniedException;
@@ -106,11 +108,22 @@ public class GlobalExceptionHandler {
     }
 
     /**
-     * 租户用户请求接口携带信息异常
+     * 租户用户请求接口携带信息异常(类型转换异常)
      */
     @ExceptionHandler(ClassCastException.class)
     public AjaxResult handleTenantDateSource(ClassCastException t) {
-        return AjaxResult.error(602, "解析租户数据源异常");
+        if (SecurityUtils.getUsername().equals("admin"))
+            return AjaxResult.error(HttpStatus.ERRORWARN, "无访问权限!请使用租户管理登录本系统!");
+        else
+            return AjaxResult.error(HttpStatus.SQLERROR, "SQL执行异常,请联系管理员修正数据!");
+    }
+
+    /**
+     * 租户用户请求接口携带信息异常
+     */
+    @ExceptionHandler(MyBatisSystemException.class)
+    public AjaxResult handleMyBatisSystemException(MyBatisSystemException t) {
+        return AjaxResult.error(HttpStatus.SQLERROR, "SQL执行异常,请联系管理员修正数据!");
     }
 
     /**