feat:(REQ-2750) 还原一个项目一个超管角色的代码,因为影响点太多,单独拉分支做开发

This commit is contained in:
lilong 2024-09-29 16:41:14 +08:00
parent 5210de5c3a
commit fc0ca81207

View File

@ -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<SuperAminInfoResp> batchSuperAdminList(List<SuperAdminParam> 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<SaasRoleRes> roleList = roleService.list(listRoleReq);
LambdaQueryChainWrapper<SaasRole> 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<SaasRole> roleList = roleWrapper.list();
if (CollectionUtils.isEmpty(roleList)) {
return Collections.emptyList();
}
LambdaQueryChainWrapper<SaasRoleUserRelation> 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<SaasRoleUserRelation> 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<SaasRoleRes> 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<SaasRoleUserRelation> 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();