diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/SaasRoleApi.java b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/SaasRoleApi.java index 4e3f9754..6da84ac6 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/SaasRoleApi.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/SaasRoleApi.java @@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RequestParam; /** * 角色 */ -@FeignClient(name = "tyr", url = "${axzo.service.maokai:http://tyr:8080/api/saasRole}") +@FeignClient(name = "tyr", url = "${axzo.service.maokai:http://tyr:8080}") public interface SaasRoleApi { /** @@ -21,25 +21,25 @@ public interface SaasRoleApi { * 标准角worksaceId ouId = -1,自定义跟随自定义分组赋值 * 如果权限列表不为空则创建通用权限 */ - @PostMapping("saveOrUpdate") + @PostMapping("/api/saasRole/saveOrUpdate") ApiResult saveOrUpdate(@RequestBody SaasRoleVO req); /** * 根据id查询详情 */ - @PostMapping("getById") + @PostMapping("/api/saasRole/getById") ApiResult getById(@RequestParam(required = true) Long id); /** * 获取角色列表 */ - @PostMapping("query") + @PostMapping("/api/saasRole/query") ApiListResult query(@RequestBody QuerySaasRoleReq req); /** * 根据身份id 身份类型查询权限列表 */ - @GetMapping("queryByIdentityIdType") + @GetMapping("/api/saasRole/queryByIdentityIdType") ApiListResult queryByIdentityIdType(@RequestParam(required = true) Long identityId,@RequestParam(required = true) Integer identityType); } diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasPermissionGroupReq.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasPermissionGroupReq.java index ed796986..8735d0ae 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasPermissionGroupReq.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasPermissionGroupReq.java @@ -2,17 +2,23 @@ package cn.axzo.tyr.client.model.req; import cn.axzo.basics.common.page.PageRequest; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.util.List; @Data +@AllArgsConstructor +@NoArgsConstructor +@Builder public class QuerySaasPermissionGroupReq extends PageRequest { /** * 角色id */ - private Long roleId; + private List roleIds; /** * 权限组id @@ -24,6 +30,11 @@ public class QuerySaasPermissionGroupReq extends PageRequest { */ private String name; + /** + * 是否为通用权限集 1:是 0:否 + */ + private Integer isCommon; + /** * 创建者 */ diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasPermissionGroupVO.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasPermissionGroupVO.java index b2e6622a..c22753a2 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasPermissionGroupVO.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasPermissionGroupVO.java @@ -1,5 +1,6 @@ package cn.axzo.tyr.client.model.vo; +import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -46,8 +47,8 @@ public class SaasPermissionGroupVO { private String type; /** - * 权限id + * 权限 */ - private List featureIds; + private List feature; } diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasRoleGroupVO.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasRoleGroupVO.java index 0defc8e1..25d393a3 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasRoleGroupVO.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasRoleGroupVO.java @@ -35,6 +35,11 @@ public class SaasRoleGroupVO { */ private String name; + /** + * 角色 + */ + private List role; + /** * 排序 */ diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasRoleVO.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasRoleVO.java index 6b7576ac..30535531 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasRoleVO.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasRoleVO.java @@ -1,11 +1,18 @@ package cn.axzo.tyr.client.model.vo; +import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.util.Date; import java.util.List; @Data +@AllArgsConstructor +@NoArgsConstructor +@Builder public class SaasRoleVO { private Long id; @@ -31,19 +38,14 @@ public class SaasRoleVO { private Long updateBy; /** - * 分组id + * 分组id(这个关联关系应该放在上一级,从结构上看,上下级是多对多的,如果放在下级返回上级的id不太合适) */ - private List roleGroupIds; +// private List roleGroupIds; /** - * 权限组id + * 权限组 */ - private List permissionGroupIds; - - /** - * 权限id - */ - private List featureIds; + private List permissionGroup; /** * 是否删除 diff --git a/tyr-server/pom.xml b/tyr-server/pom.xml index 81da09b7..65236a4f 100644 --- a/tyr-server/pom.xml +++ b/tyr-server/pom.xml @@ -43,12 +43,6 @@ cn.axzo.framework axzo-processor-spring-boot-starter - - cn.axzo.basics - basics-common - - - mysql mysql-connector-java diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/TyrApplication.java b/tyr-server/src/main/java/cn/axzo/tyr/server/TyrApplication.java index e0449744..0609197b 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/TyrApplication.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/TyrApplication.java @@ -13,9 +13,7 @@ import org.springframework.scheduling.annotation.EnableAsync; @Slf4j @EnableAsync @EnableDiscoveryClient -@EnableFeignClients(basePackages = { - "cn.axzo.data.collection.api", -}) +//@EnableFeignClients @MapperScan(value = {"cn.axzo.tyr.server.repository.mapper"}) @SpringBootApplication(scanBasePackages = "cn.axzo") public class TyrApplication { diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/role/SaasRoleController.java b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/role/SaasRoleController.java index c734cfaa..858e933a 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/role/SaasRoleController.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/role/SaasRoleController.java @@ -51,7 +51,6 @@ public class SaasRoleController implements SaasRoleApi { @Override public ApiListResult queryByIdentityIdType(Long identityId, Integer identityType) { - // 根据身份id和身份类型查询 用户角色关联表 - return roleService.queryByIdentityIdType(identityId, identityType); + return ApiListResult.ok(roleService.queryByIdentityIdType(identityId, identityType)); } } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/SaasPermissionGroup.java b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/SaasPermissionGroup.java index 54c87ce8..23c6491b 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/SaasPermissionGroup.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/SaasPermissionGroup.java @@ -22,11 +22,11 @@ import java.io.Serializable; @TableName("saas_permission_group") public class SaasPermissionGroup extends BaseEntity { - /** * 权限集名称 */ private String name; + /** * 权限集描述 */ diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/SaasPgroupPermissionRelation.java b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/SaasPgroupPermissionRelation.java new file mode 100644 index 00000000..f2d9d8a2 --- /dev/null +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/SaasPgroupPermissionRelation.java @@ -0,0 +1,56 @@ +package cn.axzo.tyr.server.repository.entity; + +import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import java.io.Serializable; + +/** + * 权限集功能中间表(SaasPgroupPermissionRelation)表实体类 + * + * @author makejava + * @since 2022-05-24 11:18:41 + */ +@Getter +@Setter +@ToString +@EqualsAndHashCode(callSuper = true) +@TableName("saas_pgroup_permission_relation") +public class SaasPgroupPermissionRelation extends BaseEntity { + + + /** + * 权限集id + */ + private Long groupId; + /** + * 功能id + */ + private Long featureId; + + /** + * 创建者 + */ + private Long createBy; + + /** + * 更新者 + */ + private Long updateBy; + + + /** + * 获取主键值 + * + * @return 主键值 + */ + @Override + protected Serializable pkVal() { + return this.id; + } +} + diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/SaasRoleUserRelation.java b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/SaasRoleUserRelation.java index 9db99707..ca3c4687 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/SaasRoleUserRelation.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/SaasRoleUserRelation.java @@ -31,7 +31,7 @@ public class SaasRoleUserRelation extends BaseEntity { /** * 身份类型 1:工人 2:从业人员 3:班组长 4:运营人员 5:政务人员 */ - private IdentityType identityType; + private Integer identityType; /** * 角色Id diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/mapper/SaasPgroupPermissionRelationMapper.java b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/mapper/SaasPgroupPermissionRelationMapper.java new file mode 100644 index 00000000..566ff109 --- /dev/null +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/mapper/SaasPgroupPermissionRelationMapper.java @@ -0,0 +1,12 @@ +package cn.axzo.tyr.server.repository.mapper; + +import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation; +import cn.axzo.tyr.server.repository.entity.SaasRole; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SaasPgroupPermissionRelationMapper extends BaseMapper { + +} + diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/service/SaasPgroupPermissionRelationDao.java b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/service/SaasPgroupPermissionRelationDao.java new file mode 100644 index 00000000..528309ff --- /dev/null +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/service/SaasPgroupPermissionRelationDao.java @@ -0,0 +1,14 @@ +package cn.axzo.tyr.server.repository.service; + +import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation; +import cn.axzo.tyr.server.repository.entity.SaasRole; +import cn.axzo.tyr.server.repository.mapper.SaasPgroupPermissionRelationMapper; +import cn.axzo.tyr.server.repository.mapper.SaasRoleMapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Repository; + +@Repository +public class SaasPgroupPermissionRelationDao extends ServiceImpl { + +} + diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/PermissionGroupService.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/PermissionGroupService.java new file mode 100644 index 00000000..19017dc6 --- /dev/null +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/PermissionGroupService.java @@ -0,0 +1,24 @@ +package cn.axzo.tyr.server.service; + +import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq; +import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO; + +import java.util.List; + +/** + * 角色 + * + * @version V1.0 + * @author: ZhanSiHu + * @date: 2023/9/6 15:51 + */ +public interface PermissionGroupService { + + /** + * 通用查询 + */ + public List query(QuerySaasPermissionGroupReq req); + + + +} diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/PermissionPointService.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/PermissionPointService.java index 68bea9fb..f60ea5aa 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/PermissionPointService.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/PermissionPointService.java @@ -4,6 +4,7 @@ import cn.axzo.tyr.client.model.permission.PermissionPointDTO; import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode; import cn.axzo.tyr.client.model.permission.PermissionPointTreeQueryReq; import cn.axzo.tyr.client.model.permission.PermissionPointVO; +import cn.axzo.tyr.server.repository.entity.SaasFeature; import java.util.List; @@ -42,4 +43,5 @@ public interface PermissionPointService { /** 移动排序 **/ void updateSort(Long updater, Long permissionId, Integer direction); + } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/RoleService.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/RoleService.java index b1fcb39d..2b61c289 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/RoleService.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/RoleService.java @@ -3,6 +3,8 @@ package cn.axzo.tyr.server.service; import cn.axzo.framework.domain.web.result.ApiListResult; import cn.axzo.tyr.client.model.vo.SaasRoleVO; +import java.util.List; + /** * 角色 * @@ -13,5 +15,5 @@ import cn.axzo.tyr.client.model.vo.SaasRoleVO; public interface RoleService { - ApiListResult queryByIdentityIdType(Long identityId, Integer identityType); + List queryByIdentityIdType(Long identityId, Integer identityType); } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionGroupImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionGroupImpl.java new file mode 100644 index 00000000..b7f04ebe --- /dev/null +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionGroupImpl.java @@ -0,0 +1,100 @@ +package cn.axzo.tyr.server.service.impl; + +import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum; +import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; +import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode; +import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq; +import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO; +import cn.axzo.tyr.server.repository.entity.SaasPermissionGroup; +import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation; +import cn.axzo.tyr.server.repository.entity.SaasPgroupRoleRelation; +import cn.axzo.tyr.server.repository.service.SaasPermissionGroupDao; +import cn.axzo.tyr.server.repository.service.SaasPgroupPermissionRelationDao; +import cn.axzo.tyr.server.repository.service.SaasPgroupRoleRelationDao; +import cn.axzo.tyr.server.service.PermissionGroupService; +import cn.axzo.tyr.server.service.PermissionPointService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 权限集 + * + * @version V1.0 + * @author: ZhanSiHu + * @date: 2023/9/6 15:51 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class PermissionGroupImpl implements PermissionGroupService { + + @Autowired + SaasPermissionGroupDao permissionGroupDao; + @Autowired + SaasPgroupRoleRelationDao roleRelationDao; + @Autowired + SaasPgroupPermissionRelationDao permissionRelationDao; + @Autowired + PermissionPointService featureService; + + @Override + public List query(QuerySaasPermissionGroupReq req) { + // 如果角色id不为空则先查询角色权限集关联表 + List relationList = null; + if (CollectionUtils.isNotEmpty(req.getRoleIds())) { + relationList = roleRelationDao.lambdaQuery() + .in(SaasPgroupRoleRelation::getRoleId, req.getRoleIds()) + .eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value) + .list(); + // 如果没查询到关联关系则直接返回 + if (CollectionUtils.isEmpty(relationList)) { + return new ArrayList<>(); + } + } + // 查询权限集 + List groupList = permissionGroupDao.lambdaQuery() + .in(CollectionUtils.isNotEmpty(req.getIds()), BaseEntity::getId, req.getIds()) + .eq(req.getIsCommon() != null, SaasPermissionGroup::getIsCommon, req.getIsCommon()) + .eq(req.getCreateBy() != null, SaasPermissionGroup::getCreateBy, req.getCreateBy()) + .eq(req.getUpdateBy() != null, SaasPermissionGroup::getUpdateBy, req.getUpdateBy()) + .eq(StringUtils.isNotBlank(req.getType()), SaasPermissionGroup::getType, req.getType()) + .eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value) + .orderByDesc(BaseEntity::getId) + .list(); + // 如果权限集为空则直接返回 + if (CollectionUtils.isEmpty(groupList)) { + return new ArrayList<>(); + } + // 查询权限集关联的权限 + List permissionList = permissionRelationDao.lambdaQuery() + .in(SaasPgroupPermissionRelation::getGroupId, groupList.stream().map(BaseEntity::getId).collect(Collectors.toList())) + .eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value) + .list(); + List feature = null; + if (CollectionUtils.isNotEmpty(permissionList)) { + // 查询featureCode + feature = featureService.listNodesByIds(permissionList.stream().map(SaasPgroupPermissionRelation::getFeatureId).collect(Collectors.toList())); + } + // 组装填充字段 + List finalFeature = feature; + return groupList.stream().map(group -> + SaasPermissionGroupVO.builder() + .id(group.getId()) + .name(group.getName()) + .feature(finalFeature) + .createBy(group.getCreateBy()) + .updateBy(group.getUpdateBy()) + .type(group.getType()) + .build() + ).collect(Collectors.toList()); + + } +} diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionPointServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionPointServiceImpl.java index ac6bc1b4..b57c634e 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionPointServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionPointServiceImpl.java @@ -4,6 +4,7 @@ import cn.axzo.basics.common.BeanMapper; import cn.axzo.basics.common.util.TreeUtil; import cn.axzo.framework.domain.web.BizException; import cn.axzo.framework.domain.web.code.BaseCode; +import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; import cn.axzo.tyr.client.model.enums.FeatureType; import cn.axzo.tyr.client.model.permission.PermissionPointDTO; import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode; @@ -130,7 +131,7 @@ public class PermissionPointServiceImpl implements PermissionPointService { @Override public List listNodesByIds(List permissionIds) { if (CollectionUtil.isEmpty(permissionIds)) { - return null; + return new ArrayList<>(); } return this.saasFeatureDao.listByIds(permissionIds) .stream() @@ -296,7 +297,6 @@ public class PermissionPointServiceImpl implements PermissionPointService { this.saasFeatureDao.updateSort(sortedChildren.get(switchIndex).getId(), index); } - private PermissionPointTreeNode feature2Node(SaasFeature feature) { PermissionPointTreeNode node = new PermissionPointTreeNode(); node.setPermissionPointId(feature.getId()); 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 f5476605..6a2ff181 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 @@ -1,18 +1,27 @@ package cn.axzo.tyr.server.service.impl; -import cn.axzo.framework.domain.web.result.ApiListResult; +import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum; +import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; +import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode; +import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq; +import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO; import cn.axzo.tyr.client.model.vo.SaasRoleVO; +import cn.axzo.tyr.server.repository.entity.SaasPgroupRoleRelation; +import cn.axzo.tyr.server.repository.entity.SaasRole; import cn.axzo.tyr.server.repository.entity.SaasRoleUserRelation; +import cn.axzo.tyr.server.repository.service.SaasPgroupRoleRelationDao; import cn.axzo.tyr.server.repository.service.SaasRoleDao; import cn.axzo.tyr.server.repository.service.SaasRoleUserRelationDao; +import cn.axzo.tyr.server.service.PermissionGroupService; import cn.axzo.tyr.server.service.RoleService; +import cn.hutool.core.bean.BeanUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -31,12 +40,62 @@ public class RoleServiceImpl implements RoleService { SaasRoleUserRelationDao roleUserRelationDao; @Autowired SaasRoleDao saasRoleDao; + @Autowired + PermissionGroupService permissionGroupService; + @Autowired + SaasPgroupRoleRelationDao permissionGroupRelation; @Override - public ApiListResult queryByIdentityIdType(Long identityId, Integer identityType) { + public List queryByIdentityIdType(Long identityId, Integer identityType) { // 查询人关联的角色id - Set roleIds = roleUserRelationDao.queryByIdentityIdType(identityId, identityType).stream().map(SaasRoleUserRelation::getRoleId).collect(Collectors.toSet()); - // 根据角色列表查询角色列表 - return ApiListResult.ok(null); + List roleIds = roleUserRelationDao.queryByIdentityIdType(identityId, identityType).stream().map(SaasRoleUserRelation::getRoleId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(roleIds)) { + return new ArrayList<>(); + } + // 查询角色信息 + List roles = saasRoleDao.lambdaQuery().in(BaseEntity::getId, roleIds).list(); + // 查询权限集关联关系 + List saasPgroupRoleRelations = queryPermissionGroupRelation(roleIds); + // 查询权限集 + Map> pgrouRelationMap = null; + Map> pGroupMap = null; + if (CollectionUtils.isNotEmpty(saasPgroupRoleRelations)) { + // 转map + pgrouRelationMap = saasPgroupRoleRelations.stream().collect(Collectors.groupingBy(SaasPgroupRoleRelation::getRoleId)); + // 查询权限集 + pGroupMap = permissionGroupService.query(QuerySaasPermissionGroupReq.builder() + .ids(saasPgroupRoleRelations.stream().map(SaasPgroupRoleRelation::getGroupId).collect(Collectors.toList())) + .build()) + // 转map + .stream().collect(Collectors.groupingBy(SaasPermissionGroupVO::getId)); + } + Map> finalPgrouRelationMap = pgrouRelationMap; + Map> finalPGroupMap = pGroupMap; + return roles.stream().map(role -> { + // 获取对应的权限集 + List pGroup = new ArrayList<>(); + if(finalPgrouRelationMap != null && finalPgrouRelationMap.containsKey(role.getId())) { + pGroup = finalPgrouRelationMap.get(role.getId()) + .stream() + .map(SaasPgroupRoleRelation::getGroupId) + .map(finalPGroupMap::get) + .filter(Objects::nonNull) + .flatMap(List::stream) + .collect(Collectors.toList()); + } + SaasRoleVO saasRoleVO = BeanUtil.copyProperties(role, SaasRoleVO.class); + saasRoleVO.setPermissionGroup(pGroup); + return saasRoleVO; + }).collect(Collectors.toList()); + } + + /** + * 根据角色id查询权限集关联关系 + */ + public List queryPermissionGroupRelation(List roleIds) { + return permissionGroupRelation.lambdaQuery() + .in(SaasPgroupRoleRelation::getRoleId, roleIds) + .eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value) + .list(); } }