From fc0ca81207d511b9d83f998d4a735545e453ffd9 Mon Sep 17 00:00:00 2001 From: lilong Date: Sun, 29 Sep 2024 16:41:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:(REQ-2750)=20=E8=BF=98=E5=8E=9F=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E9=A1=B9=E7=9B=AE=E4=B8=80=E4=B8=AA=E8=B6=85=E7=AE=A1?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E7=9A=84=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=9B=A0?= =?UTF-8?q?=E4=B8=BA=E5=BD=B1=E5=93=8D=E7=82=B9=E5=A4=AA=E5=A4=9A=EF=BC=8C?= =?UTF-8?q?=E5=8D=95=E7=8B=AC=E6=8B=89=E5=88=86=E6=94=AF=E5=81=9A=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/RoleUserService.java | 72 ++++++++----------- 1 file changed, 31 insertions(+), 41 deletions(-) diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleUserService.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleUserService.java index 288f8688..2399b49d 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleUserService.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleUserService.java @@ -18,6 +18,7 @@ import cn.axzo.pokonyan.util.KeysUtil; import cn.axzo.tyr.client.common.enums.RoleResourceTypeEnum; import cn.axzo.tyr.client.common.enums.RoleTypeEnum; import cn.axzo.tyr.client.model.BaseWorkspaceModel; +import cn.axzo.tyr.client.model.enums.DictWorkSpaceTypeEnum; import cn.axzo.tyr.client.model.enums.IdentityType; import cn.axzo.tyr.client.model.enums.WorkerLeaderRoleEnum; import cn.axzo.tyr.client.model.req.ListRoleReq; @@ -81,7 +82,6 @@ import java.util.Objects; import java.util.Set; import java.util.function.Supplier; import java.util.stream.Collectors; - /** * 角色 * @@ -286,19 +286,22 @@ public class RoleUserService implements SaasRoleUserService { @Transactional(rollbackFor = Exception.class) public void createSuperAdminRole(CreateSuperAdminRoleParam param) { //获取超管角色 - // 因为以前一个项目一个超管,但是上线为了保证兼容,所以这里要根据workspaceId = -1,ouId = -1, - // 不根据code查询,是因为增加一个业务的超管,就需要维护 - ListRoleReq listRoleReq = ListRoleReq.builder() - .roleTypes(Lists.newArrayList(RoleTypeEnum.SUPER_ADMIN.getValue())) - .workspaceType(param.getWorkspaceType()) - .needPresetRole(true) - .build(); - SaasRoleRes superAdmin = roleService.list(listRoleReq).stream() - .findFirst() - .orElse(null); - - AssertUtil.notNull(superAdmin, "超管角色不存在,请联系业务初始化超管角色"); + SaasRole superAdmin = findSuperAdmin(param.getWorkspaceId(), param.getOuId(), param.getWorkspaceType()); + if (superAdmin == null) { + superAdmin = new SaasRole(); + superAdmin.setDescription(RoleTypeEnum.SUPER_ADMIN.getDesc()); + superAdmin.setName(RoleTypeEnum.SUPER_ADMIN.getDesc()); + superAdmin.setWorkspaceId(param.getWorkspaceId()); + superAdmin.setWorkspaceType(param.getWorkspaceType()); + superAdmin.setOwnerOuId(param.getOuId()); + superAdmin.setRoleType(RoleTypeEnum.SUPER_ADMIN.getValue()); + superAdmin.setIsDelete(0L); + DictWorkSpaceTypeEnum dictWorkSpaceTypeEnum = DictWorkSpaceTypeEnum.getByValueWorkspaceType(param.getWorkspaceType()); + superAdmin.setProductUnitType(dictWorkSpaceTypeEnum == null ? 0 : dictWorkSpaceTypeEnum.getSuperAdminProductType()); + checkRoleName(RoleTypeEnum.SUPER_ADMIN.getDesc(), param.getWorkspaceId(), param.getOuId()); + saasRoleDao.save(superAdmin); + } //删除当前超管角色 removeOldSuperAdmin(superAdmin.getId(), param.getWorkspaceId(), param.getOuId()); @@ -345,29 +348,25 @@ public class RoleUserService implements SaasRoleUserService { @Override public List batchSuperAdminList(List param) { - // 兼容上线历史数据还没清洗的间隙,查询超管角色需要根据workspaceId和预设的超管一起 - ListRoleReq listRoleReq = ListRoleReq.builder() - .roleTypes(Lists.newArrayList(RoleTypeEnum.SUPER_ADMIN.getValue())) - .workspaceOuPairs(param.stream() - .map(e -> ListRoleUserRelationParam.WorkspaceOuPair.builder() - .workspaceId(e.getWorkspaceId()) - .ouId(e.getOuId()) - .build()) - .collect(Collectors.toList())) - .needPresetRole(true) - .build(); - List roleList = roleService.list(listRoleReq); + LambdaQueryChainWrapper roleWrapper = saasRoleDao.lambdaQuery(); + roleWrapper.and(w -> + param.forEach(c -> w.or() + .eq(SaasRole::getOwnerOuId, c.getOuId()) + .eq(SaasRole::getWorkspaceId, c.getWorkspaceId()))); + roleWrapper.eq(SaasRole::getIsDelete, TableIsDeleteEnum.NORMAL.value) + .eq(SaasRole::getRoleType, RoleTypeEnum.SUPER_ADMIN.getValue()); + List roleList = roleWrapper.list(); if (CollectionUtils.isEmpty(roleList)) { return Collections.emptyList(); } LambdaQueryChainWrapper userRoleWrapper = roleUserRelationDao.lambdaQuery(); userRoleWrapper.and(w -> - param.forEach(c -> w.or() - .eq(SaasRoleUserRelation::getOuId, c.getOuId()) + roleList.forEach(c -> w.or() + .eq(SaasRoleUserRelation::getOuId, c.getOwnerOuId()) .eq(SaasRoleUserRelation::getWorkspaceId, c.getWorkspaceId()) + .eq(SaasRoleUserRelation::getRoleId, c.getId()) )); - userRoleWrapper.in(SaasRoleUserRelation::getRoleId, roleList.stream().map(SaasRoleRes::getId).collect(Collectors.toList())); userRoleWrapper.eq(SaasRoleUserRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value); List relations = userRoleWrapper.list(); @@ -389,24 +388,15 @@ public class RoleUserService implements SaasRoleUserService { if (param.getWorkspaceId() == null || Objects.isNull(param.getOuId())) { return Collections.emptyList(); } - - // 兼容上线历史数据还没清洗的间隙,查询超管角色需要根据workspaceId和预设的超管一起 - ListRoleReq listRoleReq = ListRoleReq.builder() - .roleTypes(Lists.newArrayList(RoleTypeEnum.SUPER_ADMIN.getValue())) - .workspaceOuPairs(Lists.newArrayList(ListRoleUserRelationParam.WorkspaceOuPair.builder() - .workspaceId(param.getWorkspaceId()) - .ouId(param.getOuId()) - .build())) - .needPresetRole(true) - .build(); - List saasRoles = roleService.list(listRoleReq); - if (CollectionUtils.isEmpty(saasRoles)) { + SaasRole saasRole = saasRoleDao.findRoleByTypeAndWorkspaceIdAndOuId(RoleTypeEnum.SUPER_ADMIN.getValue(), + param.getWorkspaceId(), param.getOuId()); + if (Objects.isNull(saasRole)) { return Collections.emptyList(); } List relations = roleUserRelationDao.lambdaQuery() .eq(SaasRoleUserRelation::getWorkspaceId, param.getWorkspaceId()) .eq(SaasRoleUserRelation::getOuId, param.getOuId()) - .in(SaasRoleUserRelation::getRoleId, saasRoles.stream().map(SaasRoleRes::getId).collect(Collectors.toList())) + .in(SaasRoleUserRelation::getRoleId, saasRole.getId()) .eq(SaasRoleUserRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); if (CollectionUtils.isEmpty(relations)) { return Collections.emptyList();