From f4d592f3626f94117d8a4eb22176a28290931980 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期二, 26 五月 2026 18:51:54 +0800
Subject: [PATCH] 新增智能电表、空调管理

---
 server/system_service/src/main/java/com/doumee/config/cloudfilter/LoginHandlerInterceptor.java |   33 +++++++++++++++++++++++++--------
 1 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/server/system_service/src/main/java/com/doumee/config/cloudfilter/LoginHandlerInterceptor.java b/server/system_service/src/main/java/com/doumee/config/cloudfilter/LoginHandlerInterceptor.java
index 428da3f..abd19e5 100644
--- a/server/system_service/src/main/java/com/doumee/config/cloudfilter/LoginHandlerInterceptor.java
+++ b/server/system_service/src/main/java/com/doumee/config/cloudfilter/LoginHandlerInterceptor.java
@@ -27,6 +27,9 @@
 
 public class LoginHandlerInterceptor implements HandlerInterceptor {
 
+    /** 涓庡墠绔� BasePage.adminCode 涓�鑷达紝瓒呯骇绠$悊鍛樿烦杩囨帴鍙f潈闄愮爜鏍¢獙 */
+    private static final String ADMIN_ROLE_CODE = "admin";
+
     private RedisTemplate<String,Object> stringRedisTemplate;
 
 
@@ -55,21 +58,23 @@
                     LoginUserInfo user =   checkLogin(token);
                     if (handlerMethod.hasMethodAnnotation(CloudRequiredPermission.class)) {
                         CloudRequiredPermission p = handlerMethod.getMethodAnnotation(CloudRequiredPermission.class);
-                        if(p.value()!=null && p.value().length>0){
+                        if (p.value() != null && p.value().length > 0 && !isAdminUser(user)) {
                             boolean hasPermission = false;
-                            for(String s :p.value()){
-                                if(user.getPermissions()!=null){
-                                    for(String t :user.getPermissions()){
-                                        if(StringUtils.equals(t,s)){
+                            for (String s : p.value()) {
+                                if (user.getPermissions() != null) {
+                                    for (String t : user.getPermissions()) {
+                                        if (StringUtils.equals(t, s)) {
                                             hasPermission = true;
                                             break;
                                         }
                                     }
                                 }
+                                if (hasPermission) {
+                                    break;
+                                }
                             }
-                            if(!hasPermission) {
-                                //娌℃湁鎿嶄綔鏉冮檺
-                                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"娌℃湁璇ユ搷浣滄潈闄�");
+                            if (!hasPermission) {
+                                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "娌℃湁璇ユ搷浣滄潈闄�");
                             }
                         }
                     }
@@ -118,6 +123,18 @@
         return body;
     }
 
+    private boolean isAdminUser(LoginUserInfo user) {
+        if (user == null || user.getRoles() == null) {
+            return false;
+        }
+        for (String role : user.getRoles()) {
+            if (StringUtils.equals(role, ADMIN_ROLE_CODE)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     private LoginUserInfo checkLogin(String token) {
         if (token == null || token.isEmpty()) {
             throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�");

--
Gitblit v1.9.3