feat:(2227-superAdmin):调整超管创建

This commit is contained in:
zhansihu 2024-04-17 13:53:48 +08:00
parent 693b97b733
commit 4cf6494758
2 changed files with 43 additions and 16 deletions

View File

@ -89,6 +89,7 @@ public class PermissionQueryServiceImpl implements PermissionQueryService {
.collect(Collectors.toList()); .collect(Collectors.toList());
//反查资源信息 //反查资源信息
List<SaasFeatureResource> resourceList = featureResourceService.listNavByIds(featureIds); List<SaasFeatureResource> resourceList = featureResourceService.listNavByIds(featureIds);
//TODO: 默认只支持两级
List<Long> menuIds = resourceList.stream() List<Long> menuIds = resourceList.stream()
.filter(r -> FeatureResourceType.PAGE.apply(r.getFeatureType())) .filter(r -> FeatureResourceType.PAGE.apply(r.getFeatureType()))
.map(SaasFeatureResource::getParentId) .map(SaasFeatureResource::getParentId)

View File

@ -26,6 +26,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
@ -67,6 +68,9 @@ public class RoleUserService implements SaasRoleUserService {
@Value("${platWorkerLeaderRoleId:100001}") @Value("${platWorkerLeaderRoleId:100001}")
private Long projWorkerLeaderRoleId; private Long projWorkerLeaderRoleId;
@Value("${axzo.role.superAdmin: {1\"entSuperAdmin\", 2: \"projSuperAdmin\", 6:\"omsSuperAdmin\"}}")
private Map<Integer, String> superAdminCodes;
/** /**
* 获取分包负责人等特殊角色 * 获取分包负责人等特殊角色
* @return * @return
@ -173,31 +177,29 @@ public class RoleUserService implements SaasRoleUserService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void createSuperAdminRole(CreateSuperAdminRoleParam param) { public void createSuperAdminRole(CreateSuperAdminRoleParam param) {
//获取超管角色 //获取超管角色
SaasRole saasRole = saasRoleDao SaasRole superAdmin = findSuperAdmin(param.getWorkspaceId(), param.getOuId(), param.getWorkspaceType());
.findRoleByTypeAndWorkspaceIdAndOuId(RoleTypeEnum.SUPER_ADMIN.getValue(), if (superAdmin == null) {
param.getWorkspaceId(), param.getOuId()); superAdmin = new SaasRole();
if (saasRole == null) { superAdmin.setDescription(RoleTypeEnum.SUPER_ADMIN.getDesc());
saasRole = new SaasRole(); superAdmin.setName(RoleTypeEnum.SUPER_ADMIN.getDesc());
saasRole.setDescription(RoleTypeEnum.SUPER_ADMIN.getDesc()); superAdmin.setWorkspaceId(param.getWorkspaceId());
saasRole.setName(RoleTypeEnum.SUPER_ADMIN.getDesc()); superAdmin.setWorkspaceType(param.getWorkspaceType());
saasRole.setWorkspaceId(param.getWorkspaceId()); superAdmin.setOwnerOuId(param.getOuId());
saasRole.setWorkspaceType(param.getWorkspaceType()); superAdmin.setRoleType(RoleTypeEnum.SUPER_ADMIN.getValue());
saasRole.setOwnerOuId(param.getOuId()); superAdmin.setIsDelete(0L);
saasRole.setRoleType(RoleTypeEnum.SUPER_ADMIN.getValue());
saasRole.setIsDelete(0L);
DictWorkSpaceTypeEnum dictWorkSpaceTypeEnum = DictWorkSpaceTypeEnum.getByValueWorkspaceType(param.getWorkspaceType()); DictWorkSpaceTypeEnum dictWorkSpaceTypeEnum = DictWorkSpaceTypeEnum.getByValueWorkspaceType(param.getWorkspaceType());
saasRole.setProductUnitType(dictWorkSpaceTypeEnum == null ? 0 : dictWorkSpaceTypeEnum.getSuperAdminProductType()); superAdmin.setProductUnitType(dictWorkSpaceTypeEnum == null ? 0 : dictWorkSpaceTypeEnum.getSuperAdminProductType());
checkRoleName(RoleTypeEnum.SUPER_ADMIN.getDesc(), param.getWorkspaceId(), param.getOuId()); checkRoleName(RoleTypeEnum.SUPER_ADMIN.getDesc(), param.getWorkspaceId(), param.getOuId());
saasRoleDao.save(saasRole); saasRoleDao.save(superAdmin);
} }
//删除当前超管角色 //删除当前超管角色
roleUserRelationDao.deleteByRoleId(Lists.newArrayList(saasRole.getId())); removeOldSuperAdmin(superAdmin.getId(), param.getWorkspaceId(), param.getOuId());
//新增关联关系 //新增关联关系
SaasRoleUserRelation saasRoleUserRelation = new SaasRoleUserRelation(); SaasRoleUserRelation saasRoleUserRelation = new SaasRoleUserRelation();
saasRoleUserRelation.setIdentityId(param.getIdentityId()); saasRoleUserRelation.setIdentityId(param.getIdentityId());
saasRoleUserRelation.setRoleId(saasRole.getId()); saasRoleUserRelation.setRoleId(superAdmin.getId());
saasRoleUserRelation.setIdentityType(param.getIdentityType().getCode()); saasRoleUserRelation.setIdentityType(param.getIdentityType().getCode());
saasRoleUserRelation.setNaturalPersonId(param.getNaturalPersonId()); saasRoleUserRelation.setNaturalPersonId(param.getNaturalPersonId());
saasRoleUserRelation.setOuId(param.getOuId()); saasRoleUserRelation.setOuId(param.getOuId());
@ -205,6 +207,30 @@ public class RoleUserService implements SaasRoleUserService {
roleUserRelationDao.save(saasRoleUserRelation); roleUserRelationDao.save(saasRoleUserRelation);
} }
private void removeOldSuperAdmin(Long id, Long workspaceId, Long ouId) {
saasRoleDao.remove(new LambdaQueryWrapper<SaasRole>()
.eq(SaasRole::getId, id)
.eq(SaasRole::getWorkspaceId, workspaceId)
.eq(SaasRole::getOwnerOuId, ouId));
}
private SaasRole findSuperAdmin(Long workspaceId, Long ouId, Integer workspaceType) {
//优先取租户超管 没有再取标准角色超管
//租户超管
SaasRole superAdmin = saasRoleDao
.findRoleByTypeAndWorkspaceIdAndOuId(RoleTypeEnum.SUPER_ADMIN.getValue(),
workspaceId, ouId);
if (superAdmin != null) {
return superAdmin;
}
//标准角超管
String superAdminCode = superAdminCodes.get(workspaceType);
if (StrUtil.isBlank(superAdminCode)) {
throw new ServiceException("租户类型[" + workspaceType + "]未配置超管编码");
}
return saasRoleDao.lambdaQuery().eq(SaasRole::getRoleCode, superAdminCode).one();
}
private void checkRoleName(String name, Long workspaceId, Long ouId) { private void checkRoleName(String name, Long workspaceId, Long ouId) {
List<SaasRole> saasRoles = saasRoleDao.listCommonRoleByNameAndWorkspaceIdAndOuId(name, List<SaasRole> saasRoles = saasRoleDao.listCommonRoleByNameAndWorkspaceIdAndOuId(name,
workspaceId, ouId); workspaceId, ouId);