feat:(2227-superAdmin):调整超管创建
This commit is contained in:
parent
693b97b733
commit
4cf6494758
@ -89,6 +89,7 @@ public class PermissionQueryServiceImpl implements PermissionQueryService {
|
||||
.collect(Collectors.toList());
|
||||
//反查资源信息
|
||||
List<SaasFeatureResource> resourceList = featureResourceService.listNavByIds(featureIds);
|
||||
//TODO: 默认只支持两级
|
||||
List<Long> menuIds = resourceList.stream()
|
||||
.filter(r -> FeatureResourceType.PAGE.apply(r.getFeatureType()))
|
||||
.map(SaasFeatureResource::getParentId)
|
||||
|
||||
@ -26,6 +26,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.nacos.common.utils.CollectionUtils;
|
||||
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.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
@ -67,6 +68,9 @@ public class RoleUserService implements SaasRoleUserService {
|
||||
@Value("${platWorkerLeaderRoleId:100001}")
|
||||
private Long projWorkerLeaderRoleId;
|
||||
|
||||
@Value("${axzo.role.superAdmin: {1:\"entSuperAdmin\", 2: \"projSuperAdmin\", 6:\"omsSuperAdmin\"}}")
|
||||
private Map<Integer, String> superAdminCodes;
|
||||
|
||||
/**
|
||||
* 获取分包负责人等特殊角色
|
||||
* @return
|
||||
@ -173,31 +177,29 @@ public class RoleUserService implements SaasRoleUserService {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void createSuperAdminRole(CreateSuperAdminRoleParam param) {
|
||||
//获取超管角色
|
||||
SaasRole saasRole = saasRoleDao
|
||||
.findRoleByTypeAndWorkspaceIdAndOuId(RoleTypeEnum.SUPER_ADMIN.getValue(),
|
||||
param.getWorkspaceId(), param.getOuId());
|
||||
if (saasRole == null) {
|
||||
saasRole = new SaasRole();
|
||||
saasRole.setDescription(RoleTypeEnum.SUPER_ADMIN.getDesc());
|
||||
saasRole.setName(RoleTypeEnum.SUPER_ADMIN.getDesc());
|
||||
saasRole.setWorkspaceId(param.getWorkspaceId());
|
||||
saasRole.setWorkspaceType(param.getWorkspaceType());
|
||||
saasRole.setOwnerOuId(param.getOuId());
|
||||
saasRole.setRoleType(RoleTypeEnum.SUPER_ADMIN.getValue());
|
||||
saasRole.setIsDelete(0L);
|
||||
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());
|
||||
saasRole.setProductUnitType(dictWorkSpaceTypeEnum == null ? 0 : dictWorkSpaceTypeEnum.getSuperAdminProductType());
|
||||
superAdmin.setProductUnitType(dictWorkSpaceTypeEnum == null ? 0 : dictWorkSpaceTypeEnum.getSuperAdminProductType());
|
||||
|
||||
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.setIdentityId(param.getIdentityId());
|
||||
saasRoleUserRelation.setRoleId(saasRole.getId());
|
||||
saasRoleUserRelation.setRoleId(superAdmin.getId());
|
||||
saasRoleUserRelation.setIdentityType(param.getIdentityType().getCode());
|
||||
saasRoleUserRelation.setNaturalPersonId(param.getNaturalPersonId());
|
||||
saasRoleUserRelation.setOuId(param.getOuId());
|
||||
@ -205,6 +207,30 @@ public class RoleUserService implements SaasRoleUserService {
|
||||
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) {
|
||||
List<SaasRole> saasRoles = saasRoleDao.listCommonRoleByNameAndWorkspaceIdAndOuId(name,
|
||||
workspaceId, ouId);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user