创建超级管理员角色
This commit is contained in:
parent
31958870c9
commit
692a0a0e66
@ -61,8 +61,8 @@ public interface TyrSaasRoleUserApi {
|
||||
@PostMapping("api/saas-role-user/create-agency-admin-role")
|
||||
ApiResult<CreateAdminRoleDTO> createAgencyAdminRole(@RequestBody @Valid CreateAgencyAdminRoleParam param);
|
||||
|
||||
@PostMapping("api/saas-role-user/create-workspace-admin-role")
|
||||
ApiResult<CreateAdminRoleDTO> createWorkspaceAdminRole(@RequestBody @Valid @NotEmpty List<CreateWorkspaceAdminRoleParam> params);
|
||||
@PostMapping("api/saas-role-user/create-super-admin-role")
|
||||
ApiResult<Void> createSuperAdminRole(@RequestBody @Valid @NotEmpty CreateSuperAminRoleParam param);
|
||||
|
||||
/**
|
||||
* 移除超管角色
|
||||
|
||||
@ -1,14 +1,13 @@
|
||||
package cn.axzo.tyr.client.model.roleuser.req;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
|
||||
import cn.axzo.tyr.client.model.enums.IdentityType;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@Data
|
||||
public class CreateWorkspaceAdminRoleParam {
|
||||
public class CreateSuperAminRoleParam {
|
||||
|
||||
/**
|
||||
* 工作台id,与context校验
|
||||
@ -23,15 +22,19 @@ public class CreateWorkspaceAdminRoleParam {
|
||||
private Long ouId;
|
||||
|
||||
/**
|
||||
* 手机号
|
||||
* 适用单位类型 1:总包 2:建设单位 4:监理单位 8:劳务分包 16:专业分包 0都可以用 只会挂在最末级
|
||||
* <p>
|
||||
* 业务层,这个字段不要直接用。有变种的getter、setter,或者直接用解释工具。
|
||||
*/
|
||||
@NotBlank(message = "phone不能为空")
|
||||
private String phone;
|
||||
private Long fitOuTypeBit;
|
||||
|
||||
/**
|
||||
* 昵称
|
||||
*
|
||||
* 适用节点类型 1:部门 2:班组 4:小组 只会挂在最末级
|
||||
*
|
||||
* 业务层,这个字段不要直接用
|
||||
*/
|
||||
private String nickName;
|
||||
private Long fitOuNodeTypeBit;
|
||||
|
||||
/**
|
||||
* 角色Id,必填
|
||||
@ -39,6 +42,12 @@ public class CreateWorkspaceAdminRoleParam {
|
||||
*/
|
||||
private RoleTypeEnum roleType;
|
||||
|
||||
/**
|
||||
* 身份id
|
||||
*/
|
||||
@NotNull(message = "identityId不能为空")
|
||||
private Long identityId;
|
||||
|
||||
/**
|
||||
* 身份类型
|
||||
*/
|
||||
@ -48,4 +57,6 @@ public class CreateWorkspaceAdminRoleParam {
|
||||
@NotNull(message = "workspaceType不能为空")
|
||||
private Integer workspaceType;
|
||||
|
||||
private Long naturalPersonId;
|
||||
|
||||
}
|
||||
@ -8,7 +8,6 @@ import cn.axzo.tyr.client.model.roleuser.dto.SuperAdminInfoDTO;
|
||||
import cn.axzo.tyr.client.model.roleuser.req.*;
|
||||
import cn.axzo.tyr.server.service.SaasRoleUserRelationService;
|
||||
import cn.axzo.tyr.server.service.SaasRoleUserService;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
@ -63,9 +62,9 @@ public class RoleUserController implements TyrSaasRoleUserApi {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<CreateAdminRoleDTO> createWorkspaceAdminRole(List<CreateWorkspaceAdminRoleParam> params) {
|
||||
// todo cn.axzo.basics.auth.api.SaasRoleApi#grantAdminRoleByPhone
|
||||
return ApiResult.ok(new CreateAdminRoleDTO());
|
||||
public ApiResult<Void> createSuperAdminRole(CreateSuperAminRoleParam param) {
|
||||
saasRoleUserService.createSuperAdminRole(param);
|
||||
return ApiResult.ok();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -2,10 +2,13 @@ package cn.axzo.tyr.server.repository.dao;
|
||||
|
||||
import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum;
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
|
||||
import cn.axzo.tyr.client.model.enums.IdentityType;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasRole;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasRoleWithUser;
|
||||
import cn.axzo.tyr.server.repository.mapper.SaasRoleMapper;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.stereotype.Repository;
|
||||
@ -53,5 +56,30 @@ public class SaasRoleDao extends ServiceImpl<SaasRoleMapper, SaasRole> {
|
||||
}
|
||||
return this.getBaseMapper().listRoleUserByPermissionGroup(permissionGroupIdList, workspaceIds);
|
||||
}
|
||||
|
||||
public SaasRole findRoleByTypeAndWorkspaceIdAndOuId(String roleType, Long workspaceId,
|
||||
Long ouId) {
|
||||
List<SaasRole> list = this.lambdaQuery()
|
||||
.eq(SaasRole::getRoleType, roleType)
|
||||
.eq(SaasRole::getWorkspaceId, workspaceId)
|
||||
.eq(SaasRole::getOwnerOuId, ouId)
|
||||
.eq(SaasRole::getIsDelete, TableIsDeleteEnum.NORMAL.value)
|
||||
.list();
|
||||
if(CollUtil.isEmpty(list)){
|
||||
return null;
|
||||
}
|
||||
return list.get(0);
|
||||
}
|
||||
|
||||
public List<SaasRole> listCommonRoleByNameAndWorkspaceIdAndOuId(String name, Long workspaceId,
|
||||
Long ouId) {
|
||||
return lambdaQuery().eq(SaasRole::getName, name)
|
||||
.eq(SaasRole::getWorkspaceId, workspaceId)
|
||||
.eq(SaasRole::getOwnerOuId, ouId)
|
||||
.eq(SaasRole::getRoleType, RoleTypeEnum.COMMON.getValue())
|
||||
.eq(SaasRole::getIsDelete, TableIsDeleteEnum.NORMAL.value)
|
||||
.select(SaasRole::getId)
|
||||
.list();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,10 +1,8 @@
|
||||
package cn.axzo.tyr.server.service;
|
||||
|
||||
import cn.axzo.tyr.client.model.enums.IdentityType;
|
||||
import cn.axzo.tyr.client.model.roleuser.req.DeleteRoleUserParam;
|
||||
import cn.axzo.tyr.client.model.roleuser.req.DeleteUserRoleParam;
|
||||
import cn.axzo.tyr.client.model.roleuser.req.RoleUserParam;
|
||||
import cn.axzo.tyr.client.model.roleuser.req.RoleUserReq;
|
||||
import cn.axzo.tyr.client.model.roleuser.dto.CreateAdminRoleDTO;
|
||||
import cn.axzo.tyr.client.model.roleuser.req.*;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasRoleUserRelation;
|
||||
|
||||
import java.util.List;
|
||||
@ -60,4 +58,10 @@ public interface SaasRoleUserService {
|
||||
* @return
|
||||
*/
|
||||
List<SaasRoleUserRelation> queryByWorkspaceIdOrOu(Long identityId, IdentityType identityType, Set<Long> workspaceIds, Set<Long> ouIds);
|
||||
|
||||
/**
|
||||
* workpaceId + ownerOuId + roleId + 手机号 + 姓名 赋予角色(支持角色赋予的同时 角色创建)
|
||||
* work for: 组织 + 服务包
|
||||
*/
|
||||
void createSuperAdminRole(CreateSuperAminRoleParam param);
|
||||
}
|
||||
@ -1,10 +1,12 @@
|
||||
package cn.axzo.tyr.server.service.impl;
|
||||
|
||||
import cn.axzo.basics.common.exception.ServiceException;
|
||||
import cn.axzo.basics.common.util.AssertUtil;
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
|
||||
import cn.axzo.tyr.client.model.BaseWorkspaceModel;
|
||||
import cn.axzo.tyr.client.model.enums.IdentityType;
|
||||
import cn.axzo.tyr.client.model.roleuser.req.CreateSuperAminRoleParam;
|
||||
import cn.axzo.tyr.client.model.roleuser.req.DeleteRoleUserParam;
|
||||
import cn.axzo.tyr.client.model.roleuser.req.DeleteUserRoleParam;
|
||||
import cn.axzo.tyr.client.model.roleuser.req.RoleUserReq;
|
||||
@ -16,6 +18,7 @@ import cn.axzo.tyr.server.service.SaasRoleUserService;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.alibaba.nacos.common.utils.CollectionUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -142,4 +145,44 @@ public class RoleUserService implements SaasRoleUserService {
|
||||
public List<SaasRoleUserRelation> queryByWorkspaceIdOrOu(Long identityId, IdentityType identityType, Set<Long> workspaceIds, Set<Long> ouIds) {
|
||||
return roleUserRelationDao.queryByWorkspaceIdOrOu(identityId, identityType, workspaceIds, ouIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void createSuperAdminRole(CreateSuperAminRoleParam 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);
|
||||
|
||||
checkRoleName(RoleTypeEnum.SUPER_ADMIN.getDesc(), param.getWorkspaceId(), param.getOuId());
|
||||
saasRoleDao.save(saasRole);
|
||||
}
|
||||
//删除当前超管角色
|
||||
roleUserRelationDao.deleteByRoldId(Lists.newArrayList(saasRole.getId()));
|
||||
|
||||
//新增关联关系
|
||||
SaasRoleUserRelation saasRoleUserRelation = new SaasRoleUserRelation();
|
||||
saasRoleUserRelation.setIdentityId(param.getIdentityId());
|
||||
saasRoleUserRelation.setRoleId(saasRole.getId());
|
||||
saasRoleUserRelation.setIdentityType(param.getIdentityType().getCode());
|
||||
saasRoleUserRelation.setNaturalPersonId(param.getNaturalPersonId());
|
||||
saasRoleUserRelation.setOuId(param.getOuId());
|
||||
saasRoleUserRelation.setWorkspaceId(param.getWorkspaceId());
|
||||
roleUserRelationDao.save(saasRoleUserRelation);
|
||||
}
|
||||
|
||||
private void checkRoleName(String name, Long workspaceId, Long ouId) {
|
||||
List<SaasRole> saasRoles = saasRoleDao.listCommonRoleByNameAndWorkspaceIdAndOuId(name,
|
||||
workspaceId, ouId);
|
||||
AssertUtil.isEmpty(saasRoles, "已存在相同的角色名称,请更换角色名称");
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user