diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java index 57027880..0d23d744 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java @@ -96,6 +96,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Date; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -894,10 +895,11 @@ public class RoleServiceImpl extends ServiceImpl if (CollectionUtils.isEmpty(categoryCodes)) { return new ArrayList<>(); } - List result = new ArrayList<>(); - //category code转code 查询对应code及子级 - List saasRoleGroups = saasRoleGroupService.listByCodes(categoryCodes, 3); + //category code转code 查询对应code及子级 + List saasRoleGroups = saasRoleGroupService.listByCodes(categoryCodes, 2); + + //查询角色组相关角色及配置的权限 Set roleGroupId = saasRoleGroups.stream().map(BaseEntity::getId).collect(Collectors.toSet()); List roleGroupRelations = saasRoleGroupRelationDao.getByGroupIds(roleGroupId); @@ -918,11 +920,21 @@ public class RoleServiceImpl extends ServiceImpl Map roleMap = roleInfos.stream().collect(Collectors.toMap(BaseEntity::getId, Function.identity())); Map permissionGroupMap = permissionGroups.stream().collect(Collectors.toMap(BaseEntity::getId, Function.identity())); + //按查询的code分组所有group Map> allGroupMap = saasRoleGroups.stream().collect(Collectors.groupingBy(SaasRoleGroup::getParentId)); List categoryRoleGroups = saasRoleGroupService.listByCodes(categoryCodes, 1); - Map> groupMap = categoryRoleGroups.stream().collect(Collectors.groupingBy(SaasRoleGroup::getCode)); - for (Map.Entry> entry : groupMap.entrySet()) { - + Map categoryMap = categoryRoleGroups.stream().collect(Collectors.toMap(SaasRoleGroup::getCode, Function.identity())); + Map> groupsByCategory = new HashMap<>(); + for (Map.Entry entry : categoryMap.entrySet()) { + SaasRoleGroup parent = entry.getValue(); + List groups = groupsByCategory.getOrDefault(entry.getKey(), new ArrayList<>()); + //父级和子级 + groups.add(parent); + List children = allGroupMap.get(parent.getId()); + if (CollectionUtil.isEmpty(children)) { + groups.addAll(children); + } + groupsByCategory.put(entry.getKey(), groups); } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasRoleGroupServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasRoleGroupServiceImpl.java index 5dacb92d..db9bd274 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasRoleGroupServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasRoleGroupServiceImpl.java @@ -221,6 +221,7 @@ public class SaasRoleGroupServiceImpl extends ServiceImpl parentIds = groups.stream().map(SaasRoleGroup::getId).collect(Collectors.toList()); List children = saasRoleGroupDao.lambdaQuery().eq(SaasRoleGroup::getParentId, parentIds).list(); if (type == 2) {