Bladeren bron

Merge branch 'mazq-0817-bugfix' into 'release/v2.4.0'

feature(权限申请保存修改): 权限申请保存修改

See merge request dcuc-tjdsj/auth-service!110
马志强 3 jaren geleden
bovenliggende
commit
15d1daf28c

+ 17 - 10
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/business/impl/AuthApplyBusiness.java

@@ -153,22 +153,29 @@ public class AuthApplyBusiness implements IAuthApplyBusiness {
     private List<AppFunAuthResourceDTO> fillResourceInfo(List<AppFunAuthResourceDTO> resourceInfos,
                                                          List<AppFunAuthResourceDTO> delResourceInfos,
                                                          AuthUserInfo userInfo) {
-        resourceInfos.forEach(e->{
-            e.setUserId(userInfo.getId());
-            e.setOperateType(AuthorizeTypeEnum.GNSQ.getValue());
-        });
-        delResourceInfos.forEach(e->{
-            e.setUserId(userInfo.getId());
-            e.setOperateType(AuthorizeTypeEnum.GNXQ.getValue());
-        });
         List<AppFunAuthResourceDTO> list = new ArrayList<>();
-        list.addAll(resourceInfos);
-        list.addAll(delResourceInfos);
+        if(CollectionUtils.isNotEmpty(resourceInfos)) {
+            resourceInfos.forEach(e->{
+                e.setUserId(userInfo.getId());
+                e.setOperateType(AuthorizeTypeEnum.GNSQ.getValue());
+            });
+            list.addAll(resourceInfos);
+        }
+        if(CollectionUtils.isNotEmpty(delResourceInfos)) {
+            delResourceInfos.forEach(e->{
+                e.setUserId(userInfo.getId());
+                e.setOperateType(AuthorizeTypeEnum.GNXQ.getValue());
+            });
+            list.addAll(delResourceInfos);
+        }
         setAppNameAndFunName(list);
         return list;
     }
 
     private void setAppNameAndFunName(List<AppFunAuthResourceDTO> list) {
+        if(CollectionUtils.isEmpty(list)) {
+            return;
+        }
         List<String> appIds = list.stream()
                 .map(AppFunAuthResourceDTO::getAppId)
                 .distinct()

+ 9 - 2
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/service/impl/AppFunInfoService.java

@@ -701,18 +701,25 @@ public class AppFunInfoService implements IAppFunInfoService {
                     .map(AppFunInfo::getParentId)
                     .filter(StringUtils::isNotBlank)
                     .collect(Collectors.toSet());
-            HashSet<String> codes = new HashSet<>();
+            //临时保存上级code
+            Set<String> codes = new HashSet<>();
+            //保存已添加的code,避免构建树有重复的菜单
+            Set<String> addedCode = new HashSet<>();
             while (pCodeSet.size() > 0) {
                 for (String code : pCodeSet) {
                     AppFunInfo appFunInfo = funCodeMap.get(code);
                     if (null == appFunInfo) {
                         continue;
                     }
-                    list.add(appFunInfo);
+                    if(addedCode.contains(code)) {
+                        continue;
+                    }
                     String pCode = appFunInfo.getParentId();
                     if (StringUtils.isNotBlank(pCode)) {
                         codes.add(pCode);
                     }
+                    list.add(appFunInfo);
+                    addedCode.add(code);
                 }
                 pCodeSet.clear();
                 pCodeSet.addAll(codes);