feat:(2227-superAdmin):调整超管创建
This commit is contained in:
parent
693b97b733
commit
4cf6494758
@ -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)
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user