소스 검색

优化多个相同角色数据导致权限SQL重复问题

RuoYi 3 년 전
부모
커밋
cc0e184314
1개의 변경된 파일8개의 추가작업 그리고 0개의 파일을 삭제
  1. 8 0
      ruoyi-common/ruoyi-common-datascope/src/main/java/com/ruoyi/common/datascope/aspect/DataScopeAspect.java

+ 8 - 0
ruoyi-common/ruoyi-common-datascope/src/main/java/com/ruoyi/common/datascope/aspect/DataScopeAspect.java

@@ -1,5 +1,7 @@
1
 package com.ruoyi.common.datascope.aspect;
1
 package com.ruoyi.common.datascope.aspect;
2
 
2
 
3
+import java.util.ArrayList;
4
+import java.util.List;
3
 import org.aspectj.lang.JoinPoint;
5
 import org.aspectj.lang.JoinPoint;
4
 import org.aspectj.lang.annotation.Aspect;
6
 import org.aspectj.lang.annotation.Aspect;
5
 import org.aspectj.lang.annotation.Before;
7
 import org.aspectj.lang.annotation.Before;
@@ -85,10 +87,15 @@ public class DataScopeAspect
85
     public static void dataScopeFilter(JoinPoint joinPoint, SysUser user, String deptAlias, String userAlias)
87
     public static void dataScopeFilter(JoinPoint joinPoint, SysUser user, String deptAlias, String userAlias)
86
     {
88
     {
87
         StringBuilder sqlString = new StringBuilder();
89
         StringBuilder sqlString = new StringBuilder();
90
+        List<String> conditions = new ArrayList<String>();
88
 
91
 
89
         for (SysRole role : user.getRoles())
92
         for (SysRole role : user.getRoles())
90
         {
93
         {
91
             String dataScope = role.getDataScope();
94
             String dataScope = role.getDataScope();
95
+            if (conditions.contains(dataScope))
96
+            {
97
+                continue;
98
+            }
92
             if (DATA_SCOPE_ALL.equals(dataScope))
99
             if (DATA_SCOPE_ALL.equals(dataScope))
93
             {
100
             {
94
                 sqlString = new StringBuilder();
101
                 sqlString = new StringBuilder();
@@ -122,6 +129,7 @@ public class DataScopeAspect
122
                     sqlString.append(StringUtils.format(" OR {}.dept_id = 0 ", deptAlias));
129
                     sqlString.append(StringUtils.format(" OR {}.dept_id = 0 ", deptAlias));
123
                 }
130
                 }
124
             }
131
             }
132
+            conditions.add(dataScope);
125
         }
133
         }
126
 
134
 
127
         if (StringUtils.isNotBlank(sqlString.toString()))
135
         if (StringUtils.isNotBlank(sqlString.toString()))