zoujiajian 3 лет назад
Родитель
Сommit
c69bdf5cc2

+ 18 - 0
netflix-common/src/main/java/com/cyksj/enums/GatewayApiCode.java

@@ -58,6 +58,24 @@ public enum GatewayApiCode {
     GROUP_INDEX_NOT_FIND(40001,"该车位不存在"),
 
     GROUP_INDEX_ALREADY_BE_USER(40002,"该车位已有人"),
+
+
+    //用户未登录
+    CMS_USER_NO_LOGIN(20000,"用户未登录!"),
+    //用户不存在
+    CMS_USER_NO_FIND(20001,"用户不存在!"),
+    //密码错误
+    CMS_USER_PASSWORD_ERROR(20002,"密码错误!"),
+    //用户无权限
+    CMS_USER_NO_PERMISSION(20003,"您没有此项操作权限"),
+    //用户无角色权限
+    CMS_USER_NO_ROLE(20004,"您没有此项操作角色"),
+    //无登录权限
+    CMS_USER_NO_LOGIN_PERMISSION(20005,"您无法登录,请联系管理员"),
+    //用户登录信息失效
+    CMS_TOKEN_VALID(20006,"登录信息已失效,请重新登录!"),
+    //踢下线
+    CMS_TOKEN_OUT_LINE(20007,"您已被管理员踢下线,请重新登录!"),
     ;
 
     private Integer code;

+ 18 - 1
netflix-web/src/main/java/com/cyksj/web/GlobalExceptionHandler.java

@@ -1,5 +1,6 @@
 package com.cyksj.web;
 
+import cn.dev33.satoken.exception.NotLoginException;
 import com.cyksj.common.util.StringUtil;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayApiCode;
@@ -30,6 +31,8 @@ public class GlobalExceptionHandler {
     @Autowired
     protected HttpServletRequest request;
 
+    private final static List<String> token = List.of("token无效", "token已过期");
+
     @ExceptionHandler(value = {Exception.class})
     public Result<String> handleNoteException(Exception e) {
         StringBuilder builder = new StringBuilder(32);
@@ -48,8 +51,22 @@ public class GlobalExceptionHandler {
 
         String message = e.getMessage();
         String value = builder.toString();
+        GatewayApiCode apiCode = null;
+        if (e instanceof NotLoginException) {
+            //未登录
+            NotLoginException ee = (NotLoginException) e;
+            if (token.contains(ee.getMessage())) {
+                apiCode = GatewayApiCode.CMS_TOKEN_VALID;
+            } else if ("token已被踢下线".equals(ee.getMessage())) {
+                apiCode = GatewayApiCode.CMS_TOKEN_OUT_LINE;
+            } else {
+                apiCode = GatewayApiCode.CMS_USER_NO_LOGIN;
+            }
+        }
         log.error("全局错误处理: \n Cause: {} \n Value: {}", message, value);
-
+        if (apiCode != null) {
+            return GatewayResponse.FAIL.newBuilder().buildGatewayCode(apiCode).toResult();
+        }
         return GatewayResponse.FAIL.newBuilder().setMsg(message).toResult(value);
     }