From 9aeb17c48034ea24f8df25a565ef18929c4766cc Mon Sep 17 00:00:00 2001 From: zuoqinbo Date: Sat, 25 Nov 2023 15:21:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20REQ-1650=20=E8=A7=92=E8=89=B2ID?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BA=BA=E5=91=98=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/init.sql | 4 +- .../model/req/PlatAccountChangeQuery.java | 6 +- .../model/req/RoleWithUserQueryReq.java | 22 +- .../model/res/PlatAccountChangeLogResp.java | 4 +- .../entity/PlatUserAccountChangeLog.java | 6 +- .../impl/PlatUserRoleChangeService.java | 4 +- .../server/service/impl/RoleServiceImpl.java | 993 +++++++++--------- 7 files changed, 529 insertions(+), 510 deletions(-) diff --git a/sql/init.sql b/sql/init.sql index c346fe31..781dda73 100644 --- a/sql/init.sql +++ b/sql/init.sql @@ -1,7 +1,7 @@ CREATE TABLE IF NOT EXISTS plat_user_role_job_change ( id bigint auto_increment comment '主键', - axzo_user_id bigint default 0 not null comment '安心筑id', + person_id bigint default 0 not null comment '安心筑personId', request_id varchar(64) default 0 not null comment '请求ID', change_type varchar(20) default '' not null comment '变更类型', change_detail varchar(256) default '' not null comment '变更详情', @@ -14,4 +14,4 @@ CREATE TABLE IF NOT EXISTS plat_user_role_job_change ) ENGINE = InnoDB DEFAULT CHARSET = utf8 comment '平台账户角色岗位变动记录'; create index idx_plat_user_role_job_change - on plat_user_role_job_change (axzo_user_id, operator_time); + on plat_user_role_job_change (person_id, operator_time); diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/PlatAccountChangeQuery.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/PlatAccountChangeQuery.java index 7270de9a..94ae4491 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/PlatAccountChangeQuery.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/PlatAccountChangeQuery.java @@ -20,10 +20,10 @@ import java.util.Date; public class PlatAccountChangeQuery extends PageRequest { /** - * 安心筑id + * 安心筑personId */ - @NotNull(message = "axzoUserId is required") - private Long axzoUserId; + @NotNull(message = "personId is required") + private Long personId; } \ No newline at end of file diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/RoleWithUserQueryReq.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/RoleWithUserQueryReq.java index af943c4c..74a57aa5 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/RoleWithUserQueryReq.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/RoleWithUserQueryReq.java @@ -15,15 +15,29 @@ import java.util.List; @Data public class RoleWithUserQueryReq extends PageRequest { - /** 查询关键字 **/ + /** + * 查询关键字 + **/ private String keyword; - /** 企业组织ID **/ + /** + * 企业组织ID + **/ private Long ouId; - /** 工作台ID **/ + /** + * 工作台ID + **/ private Long workspaceId; - /** 企业工作台参建类型 **/ + /** + * 企业工作台参建类型 + **/ private Integer workspaceJoinType; + + /** + * 角色ID + **/ + private Long roleId; + } diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/PlatAccountChangeLogResp.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/PlatAccountChangeLogResp.java index 5eef989e..8fb0cc2a 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/PlatAccountChangeLogResp.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/PlatAccountChangeLogResp.java @@ -22,9 +22,9 @@ import java.util.Date; public class PlatAccountChangeLogResp { /** - * 安心筑id + * 安心筑用户personId */ - private Long axzoUserId; + private Long personId; /** * requestId diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/PlatUserAccountChangeLog.java b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/PlatUserAccountChangeLog.java index 47ed1e10..ef6a2e45 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/PlatUserAccountChangeLog.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/PlatUserAccountChangeLog.java @@ -29,10 +29,10 @@ import java.util.Map; public class PlatUserAccountChangeLog extends BaseEntity { /** - * 安心筑id + * 安心筑personId */ - @TableField(value = "axzo_user_id") - private Long axzoUserId; + @TableField(value = "person_id") + private Long personId; /** * 请求Id diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PlatUserRoleChangeService.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PlatUserRoleChangeService.java index 24e3d289..0ed49d88 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PlatUserRoleChangeService.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PlatUserRoleChangeService.java @@ -51,11 +51,11 @@ public class PlatUserRoleChangeService { } public ApiPageResult queryPlatUserAccountChangeLog(PlatAccountChangeQuery platAccountChangeQuery) { - if (platAccountChangeQuery.getAxzoUserId() == null) { + if (platAccountChangeQuery.getPersonId() == null) { throw new ServiceException("axzoUserId不能为空!"); } IPage page = userRoleChangeDao.lambdaQuery() - .eq(PlatUserAccountChangeLog::getAxzoUserId, platAccountChangeQuery.getAxzoUserId()) + .eq(PlatUserAccountChangeLog::getPersonId, platAccountChangeQuery.getPersonId()) .page(platAccountChangeQuery.toPage()); List list = BeanMapper.copyList(page.getRecords(), PlatAccountChangeLogResp.class); PageResp data = PageResp.list(page.getCurrent(), page.getSize(), page.getTotal(), list); 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 a70d1723..58783bd5 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 @@ -52,536 +52,541 @@ import java.util.stream.Collectors; @Service public class RoleServiceImpl implements RoleService { - @Autowired - SaasRoleUserRelationDao roleUserRelationDao; - @Autowired - SaasRoleDao saasRoleDao; - @Autowired - PermissionGroupService permissionGroupService; - @Autowired - SaasPgroupRoleRelationDao saasPgroupRoleRelationDao; - @Autowired - SaasRoleGroupDao saasRoleGroupDao; - @Autowired - SaasRoleGroupRelationDao roleGroupRelationDao; - @Autowired - SaasPermissionGroupDao saasPermissionGroupDao; - @Autowired - SaasRoleGroupRelationService saasRoleGroupRelationService; - @Autowired - SaasFeatureDao saasFeatureDao; - @Autowired - SaasPgroupPermissionRelationService saasPgroupPermissionRelationService; - @Autowired - SaasRoleGroupService saasRoleGroupService; + @Autowired + SaasRoleUserRelationDao roleUserRelationDao; + @Autowired + SaasRoleDao saasRoleDao; + @Autowired + PermissionGroupService permissionGroupService; + @Autowired + SaasPgroupRoleRelationDao saasPgroupRoleRelationDao; + @Autowired + SaasRoleGroupDao saasRoleGroupDao; + @Autowired + SaasRoleGroupRelationDao roleGroupRelationDao; + @Autowired + SaasPermissionGroupDao saasPermissionGroupDao; + @Autowired + SaasRoleGroupRelationService saasRoleGroupRelationService; + @Autowired + SaasFeatureDao saasFeatureDao; + @Autowired + SaasPgroupPermissionRelationService saasPgroupPermissionRelationService; + @Autowired + SaasRoleGroupService saasRoleGroupService; - @Autowired - SaasRoleUserRelationDao saasRoleUserRelationDao; + @Autowired + SaasRoleUserRelationDao saasRoleUserRelationDao; - @Override - public List queryByIdentityIdType(Long identityId, Integer identityType, Long workspaceId, Long ouId, Boolean includePermissionGroup) { - // 查询人关联的角色id - List roleIds = roleUserRelationDao.query(identityId, identityType, workspaceId, ouId).stream().map(SaasRoleUserRelation::getRoleId).collect(Collectors.toList()); - if (CollectionUtils.isEmpty(roleIds)) { - return new ArrayList<>(); - } - return getByIds(roleIds, null, null,null, includePermissionGroup); - } + @Override + public List queryByIdentityIdType(Long identityId, Integer identityType, Long workspaceId, Long ouId, Boolean includePermissionGroup) { + // 查询人关联的角色id + List roleIds = roleUserRelationDao.query(identityId, identityType, workspaceId, ouId).stream().map(SaasRoleUserRelation::getRoleId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(roleIds)) { + return new ArrayList<>(); + } + return getByIds(roleIds, null, null, null, includePermissionGroup); + } - /** - * 根据id查询权限详情包含权限组合权限集(底层基础方法) - * - * @return - */ - @Override - public List getByIds(List roleIds, Integer isCommon, List workspaceId, List ouId, Boolean includePermissionGroup) { - if (includePermissionGroup == null) { - includePermissionGroup = false; - } - if (CollectionUtils.isEmpty(roleIds)) { - return new ArrayList<>(); - } - // 查询角色信息 - List roles = saasRoleDao.lambdaQuery().in(BaseEntity::getId, roleIds).list(); - // 查询权限集 - Map> pgrouRelationMap = null; - Map> pGroupMap = null; - // 如果不包含则跳过 - if(includePermissionGroup) { - // 查询权限集关联关系 - List saasPgroupRoleRelations = queryPermissionGroupRelation(roleIds); - if (CollectionUtils.isNotEmpty(saasPgroupRoleRelations)) { - // 转map - pgrouRelationMap = saasPgroupRoleRelations.stream().collect(Collectors.groupingBy(SaasPgroupRoleRelation::getRoleId)); - // 查询权限集 - pGroupMap = permissionGroupService.page(QuerySaasPermissionGroupReq.builder() - .isCommon(isCommon) - .roleIds(roleIds) - .ids(saasPgroupRoleRelations.stream().map(SaasPgroupRoleRelation::getGroupId).collect(Collectors.toList())) - .workspaceId(workspaceId) - .ouId(ouId) - .fetchPage(Boolean.FALSE) - .build()).getList() - // 转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查询权限详情包含权限组合权限集(底层基础方法) + * + * @return + */ + @Override + public List getByIds(List roleIds, Integer isCommon, List workspaceId, List ouId, Boolean includePermissionGroup) { + if (includePermissionGroup == null) { + includePermissionGroup = false; + } + if (CollectionUtils.isEmpty(roleIds)) { + return new ArrayList<>(); + } + // 查询角色信息 + List roles = saasRoleDao.lambdaQuery().in(BaseEntity::getId, roleIds).list(); + // 查询权限集 + Map> pgrouRelationMap = null; + Map> pGroupMap = null; + // 如果不包含则跳过 + if (includePermissionGroup) { + // 查询权限集关联关系 + List saasPgroupRoleRelations = queryPermissionGroupRelation(roleIds); + if (CollectionUtils.isNotEmpty(saasPgroupRoleRelations)) { + // 转map + pgrouRelationMap = saasPgroupRoleRelations.stream().collect(Collectors.groupingBy(SaasPgroupRoleRelation::getRoleId)); + // 查询权限集 + pGroupMap = permissionGroupService.page(QuerySaasPermissionGroupReq.builder() + .isCommon(isCommon) + .roleIds(roleIds) + .ids(saasPgroupRoleRelations.stream().map(SaasPgroupRoleRelation::getGroupId).collect(Collectors.toList())) + .workspaceId(workspaceId) + .ouId(ouId) + .fetchPage(Boolean.FALSE) + .build()).getList() + // 转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()); + } - /** - * 通用查询 - * - * @param req - * @return - */ - @Override - public List query(QuerySaasRoleReq req) { - // 如果没有传则默认查询通用维度默认值是 -1,-1+传入的参数含义是查询通用和自定义 - req.buildDefault(); - // 根据工作台类型和单位类型查询角色分组 - List roleGroup = new ArrayList<>(); - // 如果传入了角色id就以传入的角色id为准 - if (CollectionUtils.isEmpty(req.getIds()) && (CollectionUtils.isNotEmpty(req.getWorkspaceTypeCode()) || CollectionUtils.isNotEmpty(req.getOuTypeCode()))) { - QuerySaasRoleGroupReq groupReq = new QuerySaasRoleGroupReq(); - groupReq.setIds(req.getSassRoleGroupIds()); - if (CollectionUtils.isEmpty(req.getSassRoleGroupIds())) { - groupReq.setWorkspaceTypeCode(req.getWorkspaceTypeCode()); - groupReq.setOuTypeCode(req.getOuTypeCode()); - groupReq.setWorkspaceIds(req.getWorkspaceId()); - groupReq.setOuIds(req.getOuId()); - } - roleGroup = saasRoleGroupDao.query(groupReq); - if (CollectionUtils.isEmpty(roleGroup)) { - return new ArrayList<>(); - } - } - // 根据角色分组查询角色分组关联表 - List groupRelation = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(roleGroup)) { - groupRelation = roleGroupRelationDao.lambdaQuery() - .in(SaasRoleGroupRelation::getSaasRoleGroupId, roleGroup.stream().map(BaseEntity::getId).collect(Collectors.toList())) - .list(); + /** + * 通用查询 + * + * @param req + * @return + */ + @Override + public List query(QuerySaasRoleReq req) { + // 如果没有传则默认查询通用维度默认值是 -1,-1+传入的参数含义是查询通用和自定义 + req.buildDefault(); + // 根据工作台类型和单位类型查询角色分组 + List roleGroup = new ArrayList<>(); + // 如果传入了角色id就以传入的角色id为准 + if (CollectionUtils.isEmpty(req.getIds()) && (CollectionUtils.isNotEmpty(req.getWorkspaceTypeCode()) || CollectionUtils.isNotEmpty(req.getOuTypeCode()))) { + QuerySaasRoleGroupReq groupReq = new QuerySaasRoleGroupReq(); + groupReq.setIds(req.getSassRoleGroupIds()); + if (CollectionUtils.isEmpty(req.getSassRoleGroupIds())) { + groupReq.setWorkspaceTypeCode(req.getWorkspaceTypeCode()); + groupReq.setOuTypeCode(req.getOuTypeCode()); + groupReq.setWorkspaceIds(req.getWorkspaceId()); + groupReq.setOuIds(req.getOuId()); + } + roleGroup = saasRoleGroupDao.query(groupReq); + if (CollectionUtils.isEmpty(roleGroup)) { + return new ArrayList<>(); + } + } + // 根据角色分组查询角色分组关联表 + List groupRelation = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(roleGroup)) { + groupRelation = roleGroupRelationDao.lambdaQuery() + .in(SaasRoleGroupRelation::getSaasRoleGroupId, roleGroup.stream().map(BaseEntity::getId).collect(Collectors.toList())) + .list(); if (CollectionUtils.isEmpty(groupRelation)) { return new ArrayList<>(); } - } - // 查询角色 - List list = saasRoleDao.lambdaQuery() - .in(CollectionUtils.isNotEmpty(req.getIds()), BaseEntity::getId, req.getIds()) - .in(CollectionUtils.isNotEmpty(groupRelation), BaseEntity::getId, groupRelation.stream().map(SaasRoleGroupRelation::getRoleId).collect(Collectors.toList())) - .in(CollectionUtils.isNotEmpty(req.getRoleType()), SaasRole::getRoleType, req.getRoleType()) - .in(CollectionUtils.isEmpty(req.getIds()) && CollectionUtils.isNotEmpty(req.getWorkspaceId()),SaasRole::getWorkspaceId,req.getWorkspaceId()) - .in(CollectionUtils.isEmpty(req.getIds()) && CollectionUtils.isNotEmpty(req.getOuId()),SaasRole::getOwnerOuId,req.getOuId()) - .orderByDesc(BaseEntity::getId) - .list(); - return getByIds(list.stream().map(BaseEntity::getId).collect(Collectors.toList()), req.getIsCommon(),req.getWorkspaceId(),req.getOuId(),req.getIncludePermissionGroup()); - } + } + // 查询角色 + List list = saasRoleDao.lambdaQuery() + .in(CollectionUtils.isNotEmpty(req.getIds()), BaseEntity::getId, req.getIds()) + .in(CollectionUtils.isNotEmpty(groupRelation), BaseEntity::getId, groupRelation.stream().map(SaasRoleGroupRelation::getRoleId).collect(Collectors.toList())) + .in(CollectionUtils.isNotEmpty(req.getRoleType()), SaasRole::getRoleType, req.getRoleType()) + .in(CollectionUtils.isEmpty(req.getIds()) && CollectionUtils.isNotEmpty(req.getWorkspaceId()), SaasRole::getWorkspaceId, req.getWorkspaceId()) + .in(CollectionUtils.isEmpty(req.getIds()) && CollectionUtils.isNotEmpty(req.getOuId()), SaasRole::getOwnerOuId, req.getOuId()) + .orderByDesc(BaseEntity::getId) + .list(); + return getByIds(list.stream().map(BaseEntity::getId).collect(Collectors.toList()), req.getIsCommon(), req.getWorkspaceId(), req.getOuId(), req.getIncludePermissionGroup()); + } - @Override - public List queryBatchByIdentityIdType(List req) { - List result = new ArrayList<>(); - req.stream().distinct().forEach(e -> { - result.add(QueryBatchByIdentityIdTypeRes.builder() - .identityId(e.getIdentityId()) - .identityType(e.getIdentityType()) - .workspaceId(e.getWorkspaceId()) - .ouId(e.getOuId()) - .role(queryByIdentityIdType(e.getIdentityId(),e.getIdentityType(),e.getWorkspaceId(),e.getOuId(),false)) - .build()); - }); - return result; - } + @Override + public List queryBatchByIdentityIdType(List req) { + List result = new ArrayList<>(); + req.stream().distinct().forEach(e -> { + result.add(QueryBatchByIdentityIdTypeRes.builder() + .identityId(e.getIdentityId()) + .identityType(e.getIdentityType()) + .workspaceId(e.getWorkspaceId()) + .ouId(e.getOuId()) + .role(queryByIdentityIdType(e.getIdentityId(), e.getIdentityType(), e.getWorkspaceId(), e.getOuId(), false)) + .build()); + }); + return result; + } - @Override - @Transactional(rollbackFor = Exception.class) - public Long saveOrUpdate(SaveOrUpdateRoleVO saveOrUpdateRole) { - // 新增OR修改角色 - Date now = new Date(); + @Override + @Transactional(rollbackFor = Exception.class) + public Long saveOrUpdate(SaveOrUpdateRoleVO saveOrUpdateRole) { + // 新增OR修改角色 + Date now = new Date(); - List groupTrees = saveOrUpdateRole.getGroupTree(); - // 验证角色分组信息 - validRoleGroup(groupTrees); - SaasRole saasRole = validAndBuildRole(saveOrUpdateRole, now); - //验证权限集信息 - SaasPermissionGroup saasPermissionGroup = validPermissionGroupCommon(saveOrUpdateRole); - validFeature(saveOrUpdateRole.getSelectedPPIds()); + List groupTrees = saveOrUpdateRole.getGroupTree(); + // 验证角色分组信息 + validRoleGroup(groupTrees); + SaasRole saasRole = validAndBuildRole(saveOrUpdateRole, now); + //验证权限集信息 + SaasPermissionGroup saasPermissionGroup = validPermissionGroupCommon(saveOrUpdateRole); + validFeature(saveOrUpdateRole.getSelectedPPIds()); - saasRoleDao.saveOrUpdate(saasRole); - // 新增或者保存分组和角色映射关系 - saasRoleGroupRelationService.saveOrUpdate(groupTrees.stream().map(g -> { - SaasRoleGroupRelation roleGroupRelation = new SaasRoleGroupRelation(); - roleGroupRelation.setRoleId(saasRole.getId()); - roleGroupRelation.setSaasRoleGroupId(g.getId()); - roleGroupRelation.setCreateAt(now); - roleGroupRelation.setUpdateAt(now); - return roleGroupRelation; - }).collect(Collectors.toList())); - saasPermissionGroupDao.saveOrUpdate(saasPermissionGroup); - SaasPgroupRoleRelation pgrr = new SaasPgroupRoleRelation(); - pgrr.setRoleId(saasRole.getId()); - pgrr.setGroupId(saasPermissionGroup.getId()); - pgrr.setCreateBy(saveOrUpdateRole.getOperatorId()); - pgrr.setUpdateBy(saveOrUpdateRole.getOperatorId()); - pgrr.setCreateAt(now); - pgrr.setUpdateAt(now); - // 保存角色通用权限映射,通用权限的映射关系不会被变更 - if (Objects.isNull(saveOrUpdateRole.getId())) { - saasPgroupRoleRelationDao.save(pgrr); - } - // 保存权限集和权限点映射关系 - List pgpRelations = Optional.ofNullable(saveOrUpdateRole.getSelectedPPIds()).orElse(new ArrayList<>()).stream().map(ppId -> { - SaasPgroupPermissionRelation target = new SaasPgroupPermissionRelation(); - target.setGroupId(saasPermissionGroup.getId()); - target.setFeatureId(ppId); - target.setCreateBy(saveOrUpdateRole.getOperatorId()); - target.setUpdateBy(saveOrUpdateRole.getOperatorId()); - return target; - }).collect(Collectors.toList()); - saasPgroupPermissionRelationService.saveOrUpdate(Lists.newArrayList(saasPermissionGroup.getId()), pgpRelations); - return saasRole.getId(); - } + saasRoleDao.saveOrUpdate(saasRole); + // 新增或者保存分组和角色映射关系 + saasRoleGroupRelationService.saveOrUpdate(groupTrees.stream().map(g -> { + SaasRoleGroupRelation roleGroupRelation = new SaasRoleGroupRelation(); + roleGroupRelation.setRoleId(saasRole.getId()); + roleGroupRelation.setSaasRoleGroupId(g.getId()); + roleGroupRelation.setCreateAt(now); + roleGroupRelation.setUpdateAt(now); + return roleGroupRelation; + }).collect(Collectors.toList())); + saasPermissionGroupDao.saveOrUpdate(saasPermissionGroup); + SaasPgroupRoleRelation pgrr = new SaasPgroupRoleRelation(); + pgrr.setRoleId(saasRole.getId()); + pgrr.setGroupId(saasPermissionGroup.getId()); + pgrr.setCreateBy(saveOrUpdateRole.getOperatorId()); + pgrr.setUpdateBy(saveOrUpdateRole.getOperatorId()); + pgrr.setCreateAt(now); + pgrr.setUpdateAt(now); + // 保存角色通用权限映射,通用权限的映射关系不会被变更 + if (Objects.isNull(saveOrUpdateRole.getId())) { + saasPgroupRoleRelationDao.save(pgrr); + } + // 保存权限集和权限点映射关系 + List pgpRelations = Optional.ofNullable(saveOrUpdateRole.getSelectedPPIds()).orElse(new ArrayList<>()).stream().map(ppId -> { + SaasPgroupPermissionRelation target = new SaasPgroupPermissionRelation(); + target.setGroupId(saasPermissionGroup.getId()); + target.setFeatureId(ppId); + target.setCreateBy(saveOrUpdateRole.getOperatorId()); + target.setUpdateBy(saveOrUpdateRole.getOperatorId()); + return target; + }).collect(Collectors.toList()); + saasPgroupPermissionRelationService.saveOrUpdate(Lists.newArrayList(saasPermissionGroup.getId()), pgpRelations); + return saasRole.getId(); + } - @Override - public List isSuperAdmin(List req) { - List result = new ArrayList<>(); - req.forEach(e -> { - List roleIds = roleUserRelationDao.query(e.getIdentityId(), e.getIdentityType(), e.getWorkspaceId(), e.getOuId()).stream().map(SaasRoleUserRelation::getRoleId).collect(Collectors.toList()); - List list = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(roleIds)) { - list = saasRoleDao.lambdaQuery() - .in(BaseEntity::getId, roleIds) - .eq(SaasRole::getRoleType, RoleTypeEnum.SUPER_ADMIN.getValue()) - .list(); - } - result.add(IsSuperAdminRes.builder() - .identityId(e.getIdentityId()) - .identityType(e.getIdentityType()) - .workspaceId(e.getWorkspaceId()) - .ouId(e.getOuId()) - .isSuperAdmin(CollectionUtils.isNotEmpty(list)?true:false) - .build()); - }); - return result; - } + @Override + public List isSuperAdmin(List req) { + List result = new ArrayList<>(); + req.forEach(e -> { + List roleIds = roleUserRelationDao.query(e.getIdentityId(), e.getIdentityType(), e.getWorkspaceId(), e.getOuId()).stream().map(SaasRoleUserRelation::getRoleId).collect(Collectors.toList()); + List list = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(roleIds)) { + list = saasRoleDao.lambdaQuery() + .in(BaseEntity::getId, roleIds) + .eq(SaasRole::getRoleType, RoleTypeEnum.SUPER_ADMIN.getValue()) + .list(); + } + result.add(IsSuperAdminRes.builder() + .identityId(e.getIdentityId()) + .identityType(e.getIdentityType()) + .workspaceId(e.getWorkspaceId()) + .ouId(e.getOuId()) + .isSuperAdmin(CollectionUtils.isNotEmpty(list) ? true : false) + .build()); + }); + return result; + } - @Override - public List listRoleUserByIdentity(Long identityId, IdentityType identityType) { - return saasRoleDao.listRoleUserByIdentity(identityId, identityType); - } + @Override + public List listRoleUserByIdentity(Long identityId, IdentityType identityType) { + return saasRoleDao.listRoleUserByIdentity(identityId, identityType); + } - @Override - public List listSuperAdminByWorkspace(List workspaceIdList) { - return saasRoleDao.listSuperAdminByWorkspace(workspaceIdList); - } + @Override + public List listSuperAdminByWorkspace(List workspaceIdList) { + return saasRoleDao.listSuperAdminByWorkspace(workspaceIdList); + } - @Override - public List listRoleUserByPermissionGroup(List permissionGroupIdList, Set workspaceIds) { - return saasRoleDao.listRoleUserByPermissionGroup(permissionGroupIdList, workspaceIds); - } + @Override + public List listRoleUserByPermissionGroup(List permissionGroupIdList, Set workspaceIds) { + return saasRoleDao.listRoleUserByPermissionGroup(permissionGroupIdList, workspaceIds); + } - private SaasRole validAndBuildRole(SaveOrUpdateRoleVO saveOrUpdateRole, Date now) { - SaasRole saasRole; - if (Objects.isNull(saveOrUpdateRole.getId())) { - saasRole = new SaasRole(); - saasRole.setCreateBy(saveOrUpdateRole.getOperatorId()); - saasRole.setCreateAt(now); - } else { - saasRole = saasRoleDao.getById(saveOrUpdateRole.getId()); - if (Objects.isNull(saasRole)) { - throw new ServiceException("角色不存在"); - } - } - saasRole.setName(saveOrUpdateRole.getName()); - saasRole.setDescription(saasRole.getDescription()); - saasRole.setRoleType(saveOrUpdateRole.getRoleType()); - saasRole.setWorkspaceId(saveOrUpdateRole.getWorkspaceId()); - saasRole.setOwnerOuId(saveOrUpdateRole.getOwnerOuId()); - saasRole.setUpdateBy(saveOrUpdateRole.getOperatorId()); - saasRole.setUpdateAt(now); - // 不可能为空 - List groupIds = saveOrUpdateRole.getGroupTree().stream().map(SaveOrUpdateRoleVO.GroupInfoVO::getId).sorted().collect(Collectors.toList()); - //同分组内角色名称不能重复 - List relations = roleGroupRelationDao.lambdaQuery().in(SaasRoleGroupRelation::getSaasRoleGroupId, groupIds) - .eq(SaasRoleGroupRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); - if (CollectionUtils.isNotEmpty(relations)) { - List roleIds = relations.stream().map(SaasRoleGroupRelation::getRoleId).sorted().collect(Collectors.toList()); - Map> groupRoleMap = relations.stream().collect(Collectors.groupingBy(SaasRoleGroupRelation::getSaasRoleGroupId, Collectors.mapping(SaasRoleGroupRelation::getRoleId, Collectors.toSet()))); - List roles = saasRoleDao.lambdaQuery().in(SaasRole::getId, roleIds).eq(SaasRole::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); - Map roleMap = roles.stream().collect(Collectors.toMap(SaasRole::getId, Function.identity(), (e1, e2) -> e2)); - groupRoleMap.forEach((groupId, roleSet) -> { - Optional repeatNameRole = roleSet.stream().map(roleMap::get) - .filter(e -> Objects.nonNull(e) && !Objects.equals(e.getId(), saveOrUpdateRole.getId()) && StringUtils.equalsIgnoreCase(e.getName(), saasRole.getName())) - .findFirst(); - if (repeatNameRole.isPresent()) { - throw new ServiceException("同分组内角色名称不能重复"); - } - }); - } - return saasRole; - } + private SaasRole validAndBuildRole(SaveOrUpdateRoleVO saveOrUpdateRole, Date now) { + SaasRole saasRole; + if (Objects.isNull(saveOrUpdateRole.getId())) { + saasRole = new SaasRole(); + saasRole.setCreateBy(saveOrUpdateRole.getOperatorId()); + saasRole.setCreateAt(now); + } else { + saasRole = saasRoleDao.getById(saveOrUpdateRole.getId()); + if (Objects.isNull(saasRole)) { + throw new ServiceException("角色不存在"); + } + } + saasRole.setName(saveOrUpdateRole.getName()); + saasRole.setDescription(saasRole.getDescription()); + saasRole.setRoleType(saveOrUpdateRole.getRoleType()); + saasRole.setWorkspaceId(saveOrUpdateRole.getWorkspaceId()); + saasRole.setOwnerOuId(saveOrUpdateRole.getOwnerOuId()); + saasRole.setUpdateBy(saveOrUpdateRole.getOperatorId()); + saasRole.setUpdateAt(now); + // 不可能为空 + List groupIds = saveOrUpdateRole.getGroupTree().stream().map(SaveOrUpdateRoleVO.GroupInfoVO::getId).sorted().collect(Collectors.toList()); + //同分组内角色名称不能重复 + List relations = roleGroupRelationDao.lambdaQuery().in(SaasRoleGroupRelation::getSaasRoleGroupId, groupIds) + .eq(SaasRoleGroupRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); + if (CollectionUtils.isNotEmpty(relations)) { + List roleIds = relations.stream().map(SaasRoleGroupRelation::getRoleId).sorted().collect(Collectors.toList()); + Map> groupRoleMap = relations.stream().collect(Collectors.groupingBy(SaasRoleGroupRelation::getSaasRoleGroupId, Collectors.mapping(SaasRoleGroupRelation::getRoleId, Collectors.toSet()))); + List roles = saasRoleDao.lambdaQuery().in(SaasRole::getId, roleIds).eq(SaasRole::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); + Map roleMap = roles.stream().collect(Collectors.toMap(SaasRole::getId, Function.identity(), (e1, e2) -> e2)); + groupRoleMap.forEach((groupId, roleSet) -> { + Optional repeatNameRole = roleSet.stream().map(roleMap::get) + .filter(e -> Objects.nonNull(e) && !Objects.equals(e.getId(), saveOrUpdateRole.getId()) && StringUtils.equalsIgnoreCase(e.getName(), saasRole.getName())) + .findFirst(); + if (repeatNameRole.isPresent()) { + throw new ServiceException("同分组内角色名称不能重复"); + } + }); + } + return saasRole; + } - private void validFeature(List featureIds) { - if (CollectionUtils.isEmpty(featureIds)) { - return; - } - List saasFeatures = saasFeatureDao.lambdaQuery().in(SaasFeature::getId, featureIds) - .eq(SaasFeature::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); - Map featureMap = saasFeatures.stream().collect(Collectors.toMap(SaasFeature::getId, Function.identity())); - List invalidFeatues = featureIds.stream().filter(rg -> { - SaasFeature target = featureMap.get(rg); - return Objects.isNull(target); - }).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(invalidFeatues)) { - throw new ServiceException("权限点信息错误"); - } - } + private void validFeature(List featureIds) { + if (CollectionUtils.isEmpty(featureIds)) { + return; + } + List saasFeatures = saasFeatureDao.lambdaQuery().in(SaasFeature::getId, featureIds) + .eq(SaasFeature::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); + Map featureMap = saasFeatures.stream().collect(Collectors.toMap(SaasFeature::getId, Function.identity())); + List invalidFeatues = featureIds.stream().filter(rg -> { + SaasFeature target = featureMap.get(rg); + return Objects.isNull(target); + }).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(invalidFeatues)) { + throw new ServiceException("权限点信息错误"); + } + } - private SaasPermissionGroup validPermissionGroupCommon(SaveOrUpdateRoleVO saveOrUpdateRole) { - SaasPermissionGroup saasPermissionGroup; - if (Objects.isNull(saveOrUpdateRole.getId())) { - //新增 - saasPermissionGroup = new SaasPermissionGroup(); - saasPermissionGroup.setIsCommon(PermissionGroupType.COMMON.getCode()); - saasPermissionGroup.setCreateBy(saveOrUpdateRole.getOperatorId()); - saasPermissionGroup.setCreatorName(saveOrUpdateRole.getOperatorName()); - } else { - // 修改验证 - List relations = saasPgroupRoleRelationDao.lambdaQuery().eq(SaasPgroupRoleRelation::getRoleId, saveOrUpdateRole.getId()) - .eq(SaasPgroupRoleRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); - if (CollectionUtils.isEmpty(relations)) { - throw new ServiceException("数据错误,通用权限集不存在"); - } - List pgroupIds = relations.stream().map(SaasPgroupRoleRelation::getGroupId).sorted().collect(Collectors.toList()); - List commonGroups = saasPermissionGroupDao.lambdaQuery().in(SaasPermissionGroup::getId, pgroupIds).eq(SaasPermissionGroup::getIsCommon, PermissionGroupType.COMMON.getCode()) - .eq(SaasPermissionGroup::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); - if (CollectionUtils.isEmpty(commonGroups)) { - throw new ServiceException("数据错误,通用权限集不存在"); - } - if (commonGroups.size() > 1) { - throw new ServiceException("数据错误,存在多个通用权限集"); - } - saasPermissionGroup = commonGroups.get(0); - } - saasPermissionGroup.setName(saveOrUpdateRole.getPermissionGroupName()); - saasPermissionGroup.setDescription(saveOrUpdateRole.getPermissionGroupDescription()); - saasPermissionGroup.setUpdateBy(saveOrUpdateRole.getOperatorId()); - saasPermissionGroup.setUpdatorName(saveOrUpdateRole.getOperatorName()); - saasPermissionGroup.setType(saveOrUpdateRole.getPermissionGroupType()); - return saasPermissionGroup; - } + private SaasPermissionGroup validPermissionGroupCommon(SaveOrUpdateRoleVO saveOrUpdateRole) { + SaasPermissionGroup saasPermissionGroup; + if (Objects.isNull(saveOrUpdateRole.getId())) { + //新增 + saasPermissionGroup = new SaasPermissionGroup(); + saasPermissionGroup.setIsCommon(PermissionGroupType.COMMON.getCode()); + saasPermissionGroup.setCreateBy(saveOrUpdateRole.getOperatorId()); + saasPermissionGroup.setCreatorName(saveOrUpdateRole.getOperatorName()); + } else { + // 修改验证 + List relations = saasPgroupRoleRelationDao.lambdaQuery().eq(SaasPgroupRoleRelation::getRoleId, saveOrUpdateRole.getId()) + .eq(SaasPgroupRoleRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); + if (CollectionUtils.isEmpty(relations)) { + throw new ServiceException("数据错误,通用权限集不存在"); + } + List pgroupIds = relations.stream().map(SaasPgroupRoleRelation::getGroupId).sorted().collect(Collectors.toList()); + List commonGroups = saasPermissionGroupDao.lambdaQuery().in(SaasPermissionGroup::getId, pgroupIds).eq(SaasPermissionGroup::getIsCommon, PermissionGroupType.COMMON.getCode()) + .eq(SaasPermissionGroup::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); + if (CollectionUtils.isEmpty(commonGroups)) { + throw new ServiceException("数据错误,通用权限集不存在"); + } + if (commonGroups.size() > 1) { + throw new ServiceException("数据错误,存在多个通用权限集"); + } + saasPermissionGroup = commonGroups.get(0); + } + saasPermissionGroup.setName(saveOrUpdateRole.getPermissionGroupName()); + saasPermissionGroup.setDescription(saveOrUpdateRole.getPermissionGroupDescription()); + saasPermissionGroup.setUpdateBy(saveOrUpdateRole.getOperatorId()); + saasPermissionGroup.setUpdatorName(saveOrUpdateRole.getOperatorName()); + saasPermissionGroup.setType(saveOrUpdateRole.getPermissionGroupType()); + return saasPermissionGroup; + } - private void validRoleGroup(List groupTrees) { - if (CollectionUtils.isEmpty(groupTrees)) { - return; - } - List groups = saasRoleGroupDao.lambdaQuery() - .in(SaasRoleGroup::getId, groupTrees.stream().map(SaveOrUpdateRoleVO.GroupInfoVO::getId).collect(Collectors.toList())) - .eq(SaasRoleGroup::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); - Map roleGroupMap = groups.stream().collect(Collectors.toMap(SaasRoleGroup::getId, Function.identity())); - List invalidRoleGroups = groupTrees.stream().filter(rg -> { - SaasRoleGroup target = roleGroupMap.get(rg.getId()); - return Objects.isNull(target) || !Objects.equals(target.getWorkspaceTypeCode(), rg.getWorkspaceTypeCode()); - }).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(invalidRoleGroups)) { - throw new ServiceException("角色分组信息错误"); - } - } + private void validRoleGroup(List groupTrees) { + if (CollectionUtils.isEmpty(groupTrees)) { + return; + } + List groups = saasRoleGroupDao.lambdaQuery() + .in(SaasRoleGroup::getId, groupTrees.stream().map(SaveOrUpdateRoleVO.GroupInfoVO::getId).collect(Collectors.toList())) + .eq(SaasRoleGroup::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); + Map roleGroupMap = groups.stream().collect(Collectors.toMap(SaasRoleGroup::getId, Function.identity())); + List invalidRoleGroups = groupTrees.stream().filter(rg -> { + SaasRoleGroup target = roleGroupMap.get(rg.getId()); + return Objects.isNull(target) || !Objects.equals(target.getWorkspaceTypeCode(), rg.getWorkspaceTypeCode()); + }).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(invalidRoleGroups)) { + throw new ServiceException("角色分组信息错误"); + } + } - /** - * 根据角色id查询权限集关联关系 - */ - public List queryPermissionGroupRelation(List roleIds) { - return saasPgroupRoleRelationDao.lambdaQuery() - .in(SaasPgroupRoleRelation::getRoleId, roleIds) - .eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value) - .list(); - } + /** + * 根据角色id查询权限集关联关系 + */ + public List queryPermissionGroupRelation(List roleIds) { + return saasPgroupRoleRelationDao.lambdaQuery() + .in(SaasPgroupRoleRelation::getRoleId, roleIds) + .eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value) + .list(); + } - @Override - public Set filterPermissionPoint(Set role, TyrSaasAuthServiceImpl.UserRoleInfoMap userRoleInfoMap) { - // 按钮级别权限点ID - Set result = new HashSet<>(); - if (CollectionUtils.isEmpty(role)) { - return result; - } - Set initRoleId = new HashSet<>(); - //有标准角,查询角色分组 - if (role.stream().anyMatch(r -> Objects.equals(RoleTypeEnum.INIT.getValue(), r.getRoleType()))) { - List roleGroupList = saasRoleGroupService.getList(QuerySaasRoleGroupReq.builder() - .workspaceTypeCode(Collections.singletonList(userRoleInfoMap.getWorkspaceType().toString())) - .ouTypeCode(Collections.singletonList(userRoleInfoMap.getWorkspaceJoinType().getValue().toString())) - .build()); - initRoleId = roleGroupList.stream().map(SaasRoleGroupVO::getRoleIds).filter(CollectionUtil::isNotEmpty).flatMap(List::stream).collect(Collectors.toSet()); - } + @Override + public Set filterPermissionPoint(Set role, TyrSaasAuthServiceImpl.UserRoleInfoMap userRoleInfoMap) { + // 按钮级别权限点ID + Set result = new HashSet<>(); + if (CollectionUtils.isEmpty(role)) { + return result; + } + Set initRoleId = new HashSet<>(); + //有标准角,查询角色分组 + if (role.stream().anyMatch(r -> Objects.equals(RoleTypeEnum.INIT.getValue(), r.getRoleType()))) { + List roleGroupList = saasRoleGroupService.getList(QuerySaasRoleGroupReq.builder() + .workspaceTypeCode(Collections.singletonList(userRoleInfoMap.getWorkspaceType().toString())) + .ouTypeCode(Collections.singletonList(userRoleInfoMap.getWorkspaceJoinType().getValue().toString())) + .build()); + initRoleId = roleGroupList.stream().map(SaasRoleGroupVO::getRoleIds).filter(CollectionUtil::isNotEmpty).flatMap(List::stream).collect(Collectors.toSet()); + } - Set finalInitRoleId = initRoleId; - List resultRole = role.stream().filter(r -> - Objects.equals(r.getRoleType(), RoleTypeEnum.COMMON.getValue()) - || finalInitRoleId.contains(r.getId())) - .collect(Collectors.toList()); + Set finalInitRoleId = initRoleId; + List resultRole = role.stream().filter(r -> + Objects.equals(r.getRoleType(), RoleTypeEnum.COMMON.getValue()) + || finalInitRoleId.contains(r.getId())) + .collect(Collectors.toList()); - return resultRole.stream().map( - e -> e.getMatchFeature(userRoleInfoMap.workspaceId, userRoleInfoMap.getOuId())) - .flatMap(List::stream) - .map(PermissionPointTreeNode::getPermissionPointId) - .collect(Collectors.toSet()); - } + return resultRole.stream().map( + e -> e.getMatchFeature(userRoleInfoMap.workspaceId, userRoleInfoMap.getOuId())) + .flatMap(List::stream) + .map(PermissionPointTreeNode::getPermissionPointId) + .collect(Collectors.toSet()); + } - @Override - public PageResp queryRoleWithUser(RoleWithUserQueryReq req) { - page2Default(req); - //按role进行分页查询 - - Page rolePage = saasRoleDao.pageQueryForOUWorkspace(req); - if (CollectionUtil.isEmpty(rolePage.getRecords())) { - return PageResp.list(req.getPage(), req.getPageSize(), 0L, Collections.emptyList()); - } + @Override + public PageResp queryRoleWithUser(RoleWithUserQueryReq req) { + page2Default(req); + //按role进行分页查询 - + Page rolePage = saasRoleDao.pageQueryForOUWorkspace(req); + if (CollectionUtil.isEmpty(rolePage.getRecords())) { + return PageResp.list(req.getPage(), req.getPageSize(), 0L, Collections.emptyList()); + } - //反查relation - List roleIds = rolePage.getRecords().stream().map(SaasRole::getId).collect(Collectors.toList()); - List relationList = saasRoleUserRelationDao.list(new LambdaQueryWrapper(). - in(SaasRoleUserRelation::getRoleId, roleIds) - .eq(SaasRoleUserRelation::getOuId, req.getOuId()) - .eq(SaasRoleUserRelation::getWorkspaceId, req.getWorkspaceId())); - Map> relationMap = relationList.stream().collect(Collectors.groupingBy(SaasRoleUserRelation::getRoleId)); + //反查relation + List roleIds = Lists.newArrayList(); + if (req.getRoleId() == null) { + roleIds = rolePage.getRecords().stream().map(SaasRole::getId).collect(Collectors.toList()); + } else { + roleIds.add(req.getRoleId()); + } + List relationList = saasRoleUserRelationDao.list(new LambdaQueryWrapper(). + in(SaasRoleUserRelation::getRoleId, roleIds) + .eq(SaasRoleUserRelation::getOuId, req.getOuId()) + .eq(SaasRoleUserRelation::getWorkspaceId, req.getWorkspaceId())); + Map> relationMap = relationList.stream().collect(Collectors.groupingBy(SaasRoleUserRelation::getRoleId)); - // 结果组装 - 用户信息到yoke组装 - List resultData = new ArrayList<>(); - for (SaasRole role : rolePage.getRecords()) { - RoleWithUserRes roleWithUser = new RoleWithUserRes(); - roleWithUser.setRoleId(role.getId()); - roleWithUser.setRoleName(role.getName()); - roleWithUser.setRoleType(role.getRoleType()); + // 结果组装 - 用户信息到yoke组装 + List resultData = new ArrayList<>(); + for (SaasRole role : rolePage.getRecords()) { + RoleWithUserRes roleWithUser = new RoleWithUserRes(); + roleWithUser.setRoleId(role.getId()); + roleWithUser.setRoleName(role.getName()); + roleWithUser.setRoleType(role.getRoleType()); - List relations = relationMap.get(role.getId()); - if (CollectionUtil.isNotEmpty(relations)) { - List users = relations.stream().map(e -> { - RoleWithUserRes.UserVO user = new RoleWithUserRes.UserVO(); - user.setOuId(req.getOuId()); - user.setIdentityId(e.getIdentityId()); - user.setIdentityType(e.getIdentityType()); - return user; - }).collect(Collectors.toList()); - roleWithUser.setUsers(users); - } - resultData.add(roleWithUser); - } + List relations = relationMap.get(role.getId()); + if (CollectionUtil.isNotEmpty(relations)) { + List users = relations.stream().map(e -> { + RoleWithUserRes.UserVO user = new RoleWithUserRes.UserVO(); + user.setOuId(req.getOuId()); + user.setIdentityId(e.getIdentityId()); + user.setIdentityType(e.getIdentityType()); + return user; + }).collect(Collectors.toList()); + roleWithUser.setUsers(users); + } + resultData.add(roleWithUser); + } - return PageResp.list(req.getPage(), req.getPageSize(), rolePage.getTotal(), resultData); - } + return PageResp.list(req.getPage(), req.getPageSize(), rolePage.getTotal(), resultData); + } - private void page2Default(RoleWithUserQueryReq req) { - if (req.getPage() == null) { - req.setPage(1L); - } - if (req.getPageSize() == null) { - req.setPageSize(10L); - } - } + private void page2Default(RoleWithUserQueryReq req) { + if (req.getPage() == null) { + req.setPage(1L); + } + if (req.getPageSize() == null) { + req.setPageSize(10L); + } + } - @Override - public List queryRoleByRoleTypes(QueryByIdentityIdTypeReq req, List roleTypes) { - List roleIds = roleUserRelationDao.query(req.getIdentityId(), req.getIdentityType(), - req.getWorkspaceId(), req.getOuId()).stream().map(SaasRoleUserRelation::getRoleId).collect(Collectors.toList()); - List list = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(roleIds)) { - list = saasRoleDao.lambdaQuery() - .in(BaseEntity::getId, roleIds) - .in(SaasRole::getRoleType, roleTypes) - .list(); - } - return BeanUtil.copyToList(list, SaasRoleVO.class); - } + @Override + public List queryRoleByRoleTypes(QueryByIdentityIdTypeReq req, List roleTypes) { + List roleIds = roleUserRelationDao.query(req.getIdentityId(), req.getIdentityType(), + req.getWorkspaceId(), req.getOuId()).stream().map(SaasRoleUserRelation::getRoleId).collect(Collectors.toList()); + List list = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(roleIds)) { + list = saasRoleDao.lambdaQuery() + .in(BaseEntity::getId, roleIds) + .in(SaasRole::getRoleType, roleTypes) + .list(); + } + return BeanUtil.copyToList(list, SaasRoleVO.class); + } - @Override - public List listForOUWorkspace(Long ouId, Long workspaceId, Integer workspaceJoinType) { - return saasRoleDao.listForOUWorkspace(ouId, workspaceId, workspaceJoinType); - } + @Override + public List listForOUWorkspace(Long ouId, Long workspaceId, Integer workspaceJoinType) { + return saasRoleDao.listForOUWorkspace(ouId, workspaceId, workspaceJoinType); + } - @Override - public List findRoleByName(QueryRoleByNameReq req) { - // TODO jhy 这个方法有问题 - List relationRoleIds = Lists.newArrayList(); - if (CollectionUtils.isNotEmpty(req.getOuTypeCode())) { - List roleGroup = saasRoleGroupDao.query(QuerySaasRoleGroupReq.builder() - .ouTypeCode(req.getOuTypeCode()) - .build()); - if (CollectionUtils.isEmpty(roleGroup)) { - return new ArrayList<>(); - } - List groupRelation = roleGroupRelationDao.lambdaQuery() - .in(SaasRoleGroupRelation::getSaasRoleGroupId, roleGroup.stream().map(BaseEntity::getId).collect(Collectors.toList())) - .list(); - if (CollectionUtils.isEmpty(groupRelation)) { - return new ArrayList<>(); - } - relationRoleIds = groupRelation.stream().map(SaasRoleGroupRelation::getRoleId).collect(Collectors.toList()); - } - List roleList = saasRoleDao.findRoleByName(req.getOuId(), req.getWorkspaceId(), relationRoleIds, req.getRoleNames()); - return roleList.stream().map(item -> { - QueryRoleByNameResp resp = new QueryRoleByNameResp(); - resp.setRoleName(item.getName()); - resp.setRoleId(item.getId()); - resp.setRoleType(item.getRoleType()); - return resp; - }).collect(Collectors.toList()); - } + @Override + public List findRoleByName(QueryRoleByNameReq req) { + // TODO jhy 这个方法有问题 + List relationRoleIds = Lists.newArrayList(); + if (CollectionUtils.isNotEmpty(req.getOuTypeCode())) { + List roleGroup = saasRoleGroupDao.query(QuerySaasRoleGroupReq.builder() + .ouTypeCode(req.getOuTypeCode()) + .build()); + if (CollectionUtils.isEmpty(roleGroup)) { + return new ArrayList<>(); + } + List groupRelation = roleGroupRelationDao.lambdaQuery() + .in(SaasRoleGroupRelation::getSaasRoleGroupId, roleGroup.stream().map(BaseEntity::getId).collect(Collectors.toList())) + .list(); + if (CollectionUtils.isEmpty(groupRelation)) { + return new ArrayList<>(); + } + relationRoleIds = groupRelation.stream().map(SaasRoleGroupRelation::getRoleId).collect(Collectors.toList()); + } + List roleList = saasRoleDao.findRoleByName(req.getOuId(), req.getWorkspaceId(), relationRoleIds, req.getRoleNames()); + return roleList.stream().map(item -> { + QueryRoleByNameResp resp = new QueryRoleByNameResp(); + resp.setRoleName(item.getName()); + resp.setRoleId(item.getId()); + resp.setRoleType(item.getRoleType()); + return resp; + }).collect(Collectors.toList()); + } - @Override - public List queryInitRoleByWorkspaceId(String workspaceType) { - if (StrUtil.isEmpty(workspaceType)) { - return new ArrayList<>(); - } - List query = saasRoleGroupDao.query(QuerySaasRoleGroupReq.builder() - .workspaceTypeCode(ListUtil.of(workspaceType)) - .build()); + @Override + public List queryInitRoleByWorkspaceId(String workspaceType) { + if (StrUtil.isEmpty(workspaceType)) { + return new ArrayList<>(); + } + List query = saasRoleGroupDao.query(QuerySaasRoleGroupReq.builder() + .workspaceTypeCode(ListUtil.of(workspaceType)) + .build()); - if (CollectionUtils.isEmpty(query)) { - return Collections.emptyList(); - } + if (CollectionUtils.isEmpty(query)) { + return Collections.emptyList(); + } - List roleGroupRelation = roleGroupRelationDao.getByGroupIds(query.stream().map(BaseEntity::getId).collect(Collectors.toList())); - if (CollectionUtils.isEmpty(roleGroupRelation)) { - return Collections.emptyList(); - } - Map> groupIdMap = roleGroupRelation.stream().collect(Collectors.groupingBy(SaasRoleGroupRelation::getSaasRoleGroupId)); + List roleGroupRelation = roleGroupRelationDao.getByGroupIds(query.stream().map(BaseEntity::getId).collect(Collectors.toList())); + if (CollectionUtils.isEmpty(roleGroupRelation)) { + return Collections.emptyList(); + } + Map> groupIdMap = roleGroupRelation.stream().collect(Collectors.groupingBy(SaasRoleGroupRelation::getSaasRoleGroupId)); - ArrayList result = new ArrayList<>(); + ArrayList result = new ArrayList<>(); - query.forEach(e->{ - List saasRoleGroupRelations = groupIdMap.get(e.getId()); - if (CollectionUtils.isEmpty(saasRoleGroupRelations)) { - return; - } + query.forEach(e -> { + List saasRoleGroupRelations = groupIdMap.get(e.getId()); + if (CollectionUtils.isEmpty(saasRoleGroupRelations)) { + return; + } - List roles = saasRoleDao.listByIds(saasRoleGroupRelations.stream().map(SaasRoleGroupRelation::getRoleId).collect(Collectors.toList())); - result.add(SaasRoleAndGroupVO.builder() - .ouTypeName(e.getName()) - .ouTypeCode(e.getOuTypeCode()) - .simpleSaasRole(roles.stream().map(role -> SaasRoleVO.builder() - .roleType(role.getRoleType()) - .id(role.getId()) - .name(role.getName()) - .build()).collect(Collectors.toList())) - .build()); - }); - return result; - } + List roles = saasRoleDao.listByIds(saasRoleGroupRelations.stream().map(SaasRoleGroupRelation::getRoleId).collect(Collectors.toList())); + result.add(SaasRoleAndGroupVO.builder() + .ouTypeName(e.getName()) + .ouTypeCode(e.getOuTypeCode()) + .simpleSaasRole(roles.stream().map(role -> SaasRoleVO.builder() + .roleType(role.getRoleType()) + .id(role.getId()) + .name(role.getName()) + .build()).collect(Collectors.toList())) + .build()); + }); + return result; + } }