Merge remote-tracking branch 'origin/feature/REQ-2750-1' into release/20241028
# Conflicts: # tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleUserService.java
This commit is contained in:
commit
e4ecfd3fd1
@ -125,9 +125,9 @@ public class PrivateRoleController {
|
|||||||
superAdmin.setDescription(RoleTypeEnum.SUPER_ADMIN.getDesc());
|
superAdmin.setDescription(RoleTypeEnum.SUPER_ADMIN.getDesc());
|
||||||
superAdmin.setName(RoleTypeEnum.SUPER_ADMIN.getDesc());
|
superAdmin.setName(RoleTypeEnum.SUPER_ADMIN.getDesc());
|
||||||
superAdmin.setRoleCode(e.getRoleCode());
|
superAdmin.setRoleCode(e.getRoleCode());
|
||||||
superAdmin.setWorkspaceId(-1L);
|
superAdmin.setWorkspaceId(0L);
|
||||||
superAdmin.setWorkspaceType(e.getWorkspaceType());
|
superAdmin.setWorkspaceType(e.getWorkspaceType());
|
||||||
superAdmin.setOwnerOuId(-1L);
|
superAdmin.setOwnerOuId(0L);
|
||||||
superAdmin.setRoleType(RoleTypeEnum.SUPER_ADMIN.getValue());
|
superAdmin.setRoleType(RoleTypeEnum.SUPER_ADMIN.getValue());
|
||||||
superAdmin.setIsDelete(0L);
|
superAdmin.setIsDelete(0L);
|
||||||
superAdmin.setCreateAt(now);
|
superAdmin.setCreateAt(now);
|
||||||
@ -200,14 +200,14 @@ public class PrivateRoleController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Map<Integer, SaasRoleRes> initSuperAdminRoles = allSuperAdminRoles.stream()
|
Map<Integer, SaasRoleRes> initSuperAdminRoles = allSuperAdminRoles.stream()
|
||||||
.filter(e -> e.getWorkspaceId() == -1L)
|
.filter(e -> e.getWorkspaceId() == 0L)
|
||||||
.collect(Collectors.toMap(SaasRoleRes::getWorkspaceType, Function.identity()));
|
.collect(Collectors.toMap(SaasRoleRes::getWorkspaceType, Function.identity()));
|
||||||
if (initSuperAdminRoles.isEmpty()) {
|
if (initSuperAdminRoles.isEmpty()) {
|
||||||
return "ok";
|
return "ok";
|
||||||
}
|
}
|
||||||
|
|
||||||
List<SaasRoleRes> oldSuperAdminRoles = allSuperAdminRoles.stream()
|
List<SaasRoleRes> oldSuperAdminRoles = allSuperAdminRoles.stream()
|
||||||
.filter(e -> e.getWorkspaceId() != -1L)
|
.filter(e -> e.getWorkspaceId() > 0L)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(oldSuperAdminRoles)) {
|
if (CollectionUtils.isEmpty(oldSuperAdminRoles)) {
|
||||||
|
|||||||
@ -91,13 +91,9 @@ public class SaasRoleDao extends ServiceImpl<SaasRoleMapper, SaasRole> {
|
|||||||
.list();
|
.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Page<SaasRole> pageQueryForOUWorkspace(RoleWithUserQueryReq req) {
|
public Page<SaasRole> pageQueryForOUWorkspace(RoleWithUserQueryReq req, Integer superAdminWorkspaceType) {
|
||||||
IPage<SaasRole> page = new Page<>(req.getPage(), req.getPageSize());
|
IPage<SaasRole> page = new Page<>(req.getPage(), req.getPageSize());
|
||||||
return this.baseMapper.pageQueryForOUWorkspace(page, req.getOuId(), req.getWorkspaceId(), req.getWorkspaceJoinType());
|
return this.baseMapper.pageQueryForOUWorkspace(page, req.getOuId(), req.getWorkspaceId(), req.getWorkspaceJoinType(), superAdminWorkspaceType);
|
||||||
}
|
|
||||||
|
|
||||||
public List<SaasRole> listForOUWorkspace(Long ouId, Long workspaceId, Integer workspaceJoinType) {
|
|
||||||
return this.baseMapper.listForOUWorkspace(ouId, workspaceId, workspaceJoinType);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeWorkspaceOuAllRole(Long workspaceId, Long ouId) {
|
public void removeWorkspaceOuAllRole(Long workspaceId, Long ouId) {
|
||||||
|
|||||||
@ -22,7 +22,8 @@ public interface SaasRoleMapper extends BaseMapper<SaasRole> {
|
|||||||
|
|
||||||
List<SaasRoleWithUser> listRoleUserByPermissionGroup(List<Long> permissionGroupIds, Set<Long> workspaceIds);
|
List<SaasRoleWithUser> listRoleUserByPermissionGroup(List<Long> permissionGroupIds, Set<Long> workspaceIds);
|
||||||
|
|
||||||
Page<SaasRole> pageQueryForOUWorkspace(IPage<SaasRole> page, Long ouId, Long workspaceId, Integer workspaceJoinType);
|
Page<SaasRole> pageQueryForOUWorkspace(IPage<SaasRole> page, Long ouId, Long workspaceId, Integer workspaceJoinType,
|
||||||
|
Integer superAdminWorkspaceType);
|
||||||
|
|
||||||
List<SaasRole> listForOUWorkspace(Long ouId, Long workspaceId, Integer workspaceJoinType);
|
List<SaasRole> listForOUWorkspace(Long ouId, Long workspaceId, Integer workspaceJoinType);
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,8 @@
|
|||||||
package cn.axzo.tyr.server.service.impl;
|
package cn.axzo.tyr.server.service.impl;
|
||||||
|
|
||||||
|
import cn.axzo.apollo.workspace.api.workspace.WorkspaceApi;
|
||||||
|
import cn.axzo.apollo.workspace.api.workspace.req.GetSimpleWorkspaceReqV2;
|
||||||
|
import cn.axzo.apollo.workspace.api.workspace.res.SimpleWorkspaceRes;
|
||||||
import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum;
|
import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum;
|
||||||
import cn.axzo.basics.common.exception.ServiceException;
|
import cn.axzo.basics.common.exception.ServiceException;
|
||||||
import cn.axzo.basics.profiles.api.UserProfileServiceApi;
|
import cn.axzo.basics.profiles.api.UserProfileServiceApi;
|
||||||
@ -87,6 +90,7 @@ import cn.axzo.tyr.server.service.SaasRoleGroupRelationService;
|
|||||||
import cn.axzo.tyr.server.service.SaasRoleGroupService;
|
import cn.axzo.tyr.server.service.SaasRoleGroupService;
|
||||||
import cn.axzo.tyr.server.service.SaasRoleUserRelationService;
|
import cn.axzo.tyr.server.service.SaasRoleUserRelationService;
|
||||||
import cn.axzo.tyr.server.util.RpcInternalUtil;
|
import cn.axzo.tyr.server.util.RpcInternalUtil;
|
||||||
|
import cn.axzo.tyr.server.utils.RpcExternalUtil;
|
||||||
import cn.azxo.framework.common.constatns.Constants;
|
import cn.azxo.framework.common.constatns.Constants;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
@ -205,6 +209,8 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MqProducer mqProducer;
|
private MqProducer mqProducer;
|
||||||
|
@Autowired
|
||||||
|
private WorkspaceApi workspaceApi;
|
||||||
|
|
||||||
private static final String TARGET_TYPE = "saasFeatureResourceId";
|
private static final String TARGET_TYPE = "saasFeatureResourceId";
|
||||||
|
|
||||||
@ -344,9 +350,41 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
|||||||
.eq(Objects.nonNull(req.getProductUnitType()), SaasRole::getProductUnitType, req.getProductUnitType())
|
.eq(Objects.nonNull(req.getProductUnitType()), SaasRole::getProductUnitType, req.getProductUnitType())
|
||||||
.orderByDesc(BaseEntity::getId)
|
.orderByDesc(BaseEntity::getId)
|
||||||
.list();
|
.list();
|
||||||
|
|
||||||
|
list.addAll(listSuperAdmin(req));
|
||||||
|
|
||||||
return getByIds(list.stream().map(BaseEntity::getId).collect(Collectors.toList()), req.getIsCommon(), req.getWorkspaceId(), req.getOuId(), req.getIncludePermissionGroup(), req.getIncludeSpecialRole());
|
return getByIds(list.stream().map(BaseEntity::getId).collect(Collectors.toList()), req.getIsCommon(), req.getWorkspaceId(), req.getOuId(), req.getIncludePermissionGroup(), req.getIncludeSpecialRole());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 历史每个workspaceId都有一个超管角色,现在每个业务类一个超管角色,
|
||||||
|
* 新的超管角色workspaceId = 0(不是-1是因为很多接口默认就会查询-1的数据,要过滤掉超管角色比较复杂)
|
||||||
|
* 历史传入workspaceId时会查询出项目的超管角色,所以有传workspaceId时需要兼容历史接口
|
||||||
|
* @param req
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private List<SaasRole> listSuperAdmin(QuerySaasRoleReq req) {
|
||||||
|
if (CollectionUtils.isEmpty(req.getWorkspaceId())) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
GetSimpleWorkspaceReqV2 build = GetSimpleWorkspaceReqV2.builder()
|
||||||
|
.ids(req.getWorkspaceId())
|
||||||
|
.build();
|
||||||
|
List<SimpleWorkspaceRes> workspaces = RpcExternalUtil.rpcApolloProcessor(() -> workspaceApi.getListV2(build),
|
||||||
|
"查询项目信息", build);
|
||||||
|
if (CollectionUtils.isEmpty(workspaces)) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
return saasRoleDao.lambdaQuery()
|
||||||
|
.eq(SaasRole::getWorkspaceId, 0)
|
||||||
|
.eq(SaasRole::getOwnerOuId, 0)
|
||||||
|
.in(SaasRole::getWorkspaceType, Lists.transform(workspaces, SimpleWorkspaceRes::getType))
|
||||||
|
.eq(SaasRole::getRoleType, RoleTypeEnum.SUPER_ADMIN.getValue())
|
||||||
|
.list();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<QueryBatchByIdentityIdTypeRes> queryBatchByIdentityIdType(List<QueryByIdentityIdTypeReq> req) {
|
public List<QueryBatchByIdentityIdTypeRes> queryBatchByIdentityIdType(List<QueryByIdentityIdTypeReq> req) {
|
||||||
List<QueryBatchByIdentityIdTypeRes> result = new ArrayList<>();
|
List<QueryBatchByIdentityIdTypeRes> result = new ArrayList<>();
|
||||||
@ -905,11 +943,35 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
|||||||
.list();
|
.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 历史每个workspaceId都有一个超管角色,现在每个业务类一个超管角色,
|
||||||
|
* 新的超管角色workspaceId = 0(不是-1是因为很多接口默认就会查询-1的数据,要过滤掉超管角色比较复杂)
|
||||||
|
* 历史传入workspaceId时会查询出项目的超管角色,所以有传workspaceId时需要兼容历史接口
|
||||||
|
* @param req
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private Integer resolveSuperAdminWorkspaceType(RoleWithUserQueryReq req) {
|
||||||
|
if (Objects.isNull(req.getWorkspaceId())) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
GetSimpleWorkspaceReqV2 build = GetSimpleWorkspaceReqV2.builder()
|
||||||
|
.ids(Lists.newArrayList(req.getWorkspaceId()))
|
||||||
|
.build();
|
||||||
|
List<SimpleWorkspaceRes> workspaces = RpcExternalUtil.rpcApolloProcessor(() -> workspaceApi.getListV2(build),
|
||||||
|
"查询项目信息", build);
|
||||||
|
return workspaces.stream()
|
||||||
|
.map(SimpleWorkspaceRes::getType)
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResp<RoleWithUserRes> queryRoleWithUser(RoleWithUserQueryReq req) {
|
public PageResp<RoleWithUserRes> queryRoleWithUser(RoleWithUserQueryReq req) {
|
||||||
page2Default(req);
|
page2Default(req);
|
||||||
//按role进行分页查询 -
|
//按role进行分页查询 -
|
||||||
Page<SaasRole> rolePage = saasRoleDao.pageQueryForOUWorkspace(req);
|
Integer superAdminWorkspaceType = resolveSuperAdminWorkspaceType(req);
|
||||||
|
Page<SaasRole> rolePage = saasRoleDao.pageQueryForOUWorkspace(req, superAdminWorkspaceType);
|
||||||
|
|
||||||
if (CollectionUtil.isEmpty(rolePage.getRecords())) {
|
if (CollectionUtil.isEmpty(rolePage.getRecords())) {
|
||||||
return PageResp.list(req.getPage(), req.getPageSize(), 0L, Collections.emptyList());
|
return PageResp.list(req.getPage(), req.getPageSize(), 0L, Collections.emptyList());
|
||||||
}
|
}
|
||||||
@ -1366,6 +1428,9 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
|||||||
wrapper.in(CollectionUtils.isNotEmpty(roleIds), "id", roleIds);
|
wrapper.in(CollectionUtils.isNotEmpty(roleIds), "id", roleIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 因为历史是每一个workspaceId一个超管角色,现在是一个workspaceType一个超管角色,
|
||||||
|
// 为了兼容历史情况,入参有workspaceId,且roleType为空或者roleType包含superAdmin的,需要组装superAdmin的查询条件
|
||||||
|
assembleSuperAdminWrapper(param, wrapper);
|
||||||
|
|
||||||
IPage<SaasRole> page = this.page(PageConverter.toMybatis(param, SaasRole.class), wrapper);
|
IPage<SaasRole> page = this.page(PageConverter.toMybatis(param, SaasRole.class), wrapper);
|
||||||
|
|
||||||
@ -1386,6 +1451,55 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
|||||||
permissionRelations));
|
permissionRelations));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 因为历史是每一个workspaceId一个超管角色,现在是一个workspaceType一个超管角色,
|
||||||
|
* 为了兼容历史情况,入参有workspaceId,且roleType为空或者roleType包含superAdmin的,需要组装superAdmin的查询条件
|
||||||
|
* @param param
|
||||||
|
* @param wrapper
|
||||||
|
*/
|
||||||
|
private void assembleSuperAdminWrapper(PageRoleReq param, QueryWrapper<SaasRole> wrapper) {
|
||||||
|
if (Objects.isNull(param.getWorkspaceId())
|
||||||
|
&& CollectionUtils.isEmpty(param.getWorkspaceIds())
|
||||||
|
&& CollectionUtils.isEmpty(param.getWorkspaceOuPairs())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(param.getRoleTypes())
|
||||||
|
|| !param.getRoleTypes().contains(RoleTypeEnum.SUPER_ADMIN.getValue())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Long> workspaceIds = Lists.newArrayList();
|
||||||
|
if (Objects.nonNull(param.getWorkspaceId())) {
|
||||||
|
workspaceIds.add(param.getWorkspaceId());
|
||||||
|
}
|
||||||
|
if (CollectionUtils.isNotEmpty(param.getWorkspaceIds())) {
|
||||||
|
workspaceIds.addAll(param.getWorkspaceIds());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CollectionUtils.isNotEmpty(param.getWorkspaceOuPairs())) {
|
||||||
|
workspaceIds.addAll(param.getWorkspaceOuPairs().stream()
|
||||||
|
.map(ListRoleUserRelationParam.WorkspaceOuPair::getWorkspaceId)
|
||||||
|
.collect(Collectors.toList()));
|
||||||
|
}
|
||||||
|
|
||||||
|
GetSimpleWorkspaceReqV2 build = GetSimpleWorkspaceReqV2.builder()
|
||||||
|
.ids(workspaceIds)
|
||||||
|
.build();
|
||||||
|
List<SimpleWorkspaceRes> workspaces = RpcExternalUtil.rpcApolloProcessor(() -> workspaceApi.getListV2(build),
|
||||||
|
"查询项目信息", build);
|
||||||
|
if (CollectionUtils.isEmpty(workspaces)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper.or(j -> {
|
||||||
|
j.in("workspace_type", Lists.transform(workspaces, SimpleWorkspaceRes::getType));
|
||||||
|
j.eq("owner_ou_id", 0L);
|
||||||
|
j.eq("workspace_id", 0L);
|
||||||
|
j.eq("role_type", RoleTypeEnum.SUPER_ADMIN.getValue());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private Set<Long> resolveRoleGroupCodes(PageRoleReq param) {
|
private Set<Long> resolveRoleGroupCodes(PageRoleReq param) {
|
||||||
if (CollectionUtils.isEmpty(param.getRoleGroupCodes())) {
|
if (CollectionUtils.isEmpty(param.getRoleGroupCodes())) {
|
||||||
return Collections.emptySet();
|
return Collections.emptySet();
|
||||||
@ -1703,6 +1817,11 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
|||||||
ListRoleUserRelationParam listRoleUserRelationParam = ListRoleUserRelationParam.builder()
|
ListRoleUserRelationParam listRoleUserRelationParam = ListRoleUserRelationParam.builder()
|
||||||
.roleIds(roleIds)
|
.roleIds(roleIds)
|
||||||
.needUsers(param.getNeedRoleUser())
|
.needUsers(param.getNeedRoleUser())
|
||||||
|
.workspaceId(param.getWorkspaceId())
|
||||||
|
.workspaceIds(Optional.ofNullable(param.getWorkspaceIds())
|
||||||
|
.map(Sets::newHashSet)
|
||||||
|
.orElse(null))
|
||||||
|
.workspaceOuPairs(param.getWorkspaceOuPairs())
|
||||||
.build();
|
.build();
|
||||||
List<SaasRoleUserV2DTO> saasRoleUserV2DTOS = saasRoleUserRelationService.listV2(listRoleUserRelationParam);
|
List<SaasRoleUserV2DTO> saasRoleUserV2DTOS = saasRoleUserRelationService.listV2(listRoleUserRelationParam);
|
||||||
|
|
||||||
|
|||||||
@ -286,22 +286,18 @@ public class RoleUserService implements SaasRoleUserService {
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void createSuperAdminRole(CreateSuperAdminRoleParam param) {
|
public void createSuperAdminRole(CreateSuperAdminRoleParam param) {
|
||||||
//获取超管角色
|
//获取超管角色
|
||||||
SaasRole superAdmin = findSuperAdmin(param.getWorkspaceId(), param.getOuId(), param.getWorkspaceType());
|
// 因为以前一个项目一个超管
|
||||||
if (superAdmin == null) {
|
// 不根据code查询,是因为增加一个业务的超管,就需要维护
|
||||||
superAdmin = new SaasRole();
|
ListRoleReq listRoleReq = ListRoleReq.builder()
|
||||||
superAdmin.setDescription(RoleTypeEnum.SUPER_ADMIN.getDesc());
|
.roleTypes(Lists.newArrayList(RoleTypeEnum.SUPER_ADMIN.getValue()))
|
||||||
superAdmin.setName(RoleTypeEnum.SUPER_ADMIN.getDesc());
|
.workspaceType(param.getWorkspaceType())
|
||||||
superAdmin.setWorkspaceId(param.getWorkspaceId());
|
.build();
|
||||||
superAdmin.setWorkspaceType(param.getWorkspaceType());
|
SaasRoleRes superAdmin = roleService.list(listRoleReq).stream()
|
||||||
superAdmin.setOwnerOuId(param.getOuId());
|
.findFirst()
|
||||||
superAdmin.setRoleType(RoleTypeEnum.SUPER_ADMIN.getValue());
|
.orElse(null);
|
||||||
superAdmin.setIsDelete(0L);
|
|
||||||
DictWorkSpaceTypeEnum dictWorkSpaceTypeEnum = DictWorkSpaceTypeEnum.getByValueWorkspaceType(param.getWorkspaceType());
|
AssertUtil.notNull(superAdmin, "超管角色不存在,请联系业务初始化超管角色");
|
||||||
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());
|
removeOldSuperAdmin(superAdmin.getId(), param.getWorkspaceId(), param.getOuId());
|
||||||
|
|
||||||
@ -348,25 +344,28 @@ public class RoleUserService implements SaasRoleUserService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<SuperAminInfoResp> batchSuperAdminList(List<SuperAdminParam> param) {
|
public List<SuperAminInfoResp> batchSuperAdminList(List<SuperAdminParam> param) {
|
||||||
LambdaQueryChainWrapper<SaasRole> roleWrapper = saasRoleDao.lambdaQuery();
|
// 兼容上线历史数据还没清洗的间隙,查询超管角色需要根据workspaceId和预设的超管一起
|
||||||
roleWrapper.and(w ->
|
ListRoleReq listRoleReq = ListRoleReq.builder()
|
||||||
param.forEach(c -> w.or()
|
.roleTypes(Lists.newArrayList(RoleTypeEnum.SUPER_ADMIN.getValue()))
|
||||||
.eq(SaasRole::getOwnerOuId, c.getOuId())
|
.workspaceOuPairs(param.stream()
|
||||||
.eq(SaasRole::getWorkspaceId, c.getWorkspaceId())));
|
.map(e -> ListRoleUserRelationParam.WorkspaceOuPair.builder()
|
||||||
roleWrapper.eq(SaasRole::getIsDelete, TableIsDeleteEnum.NORMAL.value)
|
.workspaceId(e.getWorkspaceId())
|
||||||
.eq(SaasRole::getRoleType, RoleTypeEnum.SUPER_ADMIN.getValue());
|
.ouId(e.getOuId())
|
||||||
List<SaasRole> roleList = roleWrapper.list();
|
.build())
|
||||||
|
.collect(Collectors.toList()))
|
||||||
|
.build();
|
||||||
|
List<SaasRoleRes> roleList = roleService.list(listRoleReq);
|
||||||
if (CollectionUtils.isEmpty(roleList)) {
|
if (CollectionUtils.isEmpty(roleList)) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
LambdaQueryChainWrapper<SaasRoleUserRelation> userRoleWrapper = roleUserRelationDao.lambdaQuery();
|
LambdaQueryChainWrapper<SaasRoleUserRelation> userRoleWrapper = roleUserRelationDao.lambdaQuery();
|
||||||
userRoleWrapper.and(w ->
|
userRoleWrapper.and(w ->
|
||||||
roleList.forEach(c -> w.or()
|
param.forEach(c -> w.or()
|
||||||
.eq(SaasRoleUserRelation::getOuId, c.getOwnerOuId())
|
.eq(SaasRoleUserRelation::getOuId, c.getOuId())
|
||||||
.eq(SaasRoleUserRelation::getWorkspaceId, c.getWorkspaceId())
|
.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);
|
userRoleWrapper.eq(SaasRoleUserRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value);
|
||||||
List<SaasRoleUserRelation> relations = userRoleWrapper.list();
|
List<SaasRoleUserRelation> relations = userRoleWrapper.list();
|
||||||
|
|
||||||
@ -388,15 +387,23 @@ public class RoleUserService implements SaasRoleUserService {
|
|||||||
if (param.getWorkspaceId() == null || Objects.isNull(param.getOuId())) {
|
if (param.getWorkspaceId() == null || Objects.isNull(param.getOuId())) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
SaasRole saasRole = saasRoleDao.findRoleByTypeAndWorkspaceIdAndOuId(RoleTypeEnum.SUPER_ADMIN.getValue(),
|
|
||||||
param.getWorkspaceId(), param.getOuId());
|
// 兼容上线历史数据还没清洗的间隙,查询超管角色需要根据workspaceId和预设的超管一起
|
||||||
if (Objects.isNull(saasRole)) {
|
ListRoleReq listRoleReq = ListRoleReq.builder()
|
||||||
|
.roleTypes(Lists.newArrayList(RoleTypeEnum.SUPER_ADMIN.getValue()))
|
||||||
|
.workspaceOuPairs(Lists.newArrayList(ListRoleUserRelationParam.WorkspaceOuPair.builder()
|
||||||
|
.workspaceId(param.getWorkspaceId())
|
||||||
|
.ouId(param.getOuId())
|
||||||
|
.build()))
|
||||||
|
.build();
|
||||||
|
List<SaasRoleRes> saasRoles = roleService.list(listRoleReq);
|
||||||
|
if (CollectionUtils.isEmpty(saasRoles)) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
List<SaasRoleUserRelation> relations = roleUserRelationDao.lambdaQuery()
|
List<SaasRoleUserRelation> relations = roleUserRelationDao.lambdaQuery()
|
||||||
.eq(SaasRoleUserRelation::getWorkspaceId, param.getWorkspaceId())
|
.eq(SaasRoleUserRelation::getWorkspaceId, param.getWorkspaceId())
|
||||||
.eq(SaasRoleUserRelation::getOuId, param.getOuId())
|
.eq(SaasRoleUserRelation::getOuId, param.getOuId())
|
||||||
.in(SaasRoleUserRelation::getRoleId, saasRole.getId())
|
.in(SaasRoleUserRelation::getRoleId, saasRoles.stream().map(SaasRoleRes::getId).collect(Collectors.toList()))
|
||||||
.eq(SaasRoleUserRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value).list();
|
.eq(SaasRoleUserRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value).list();
|
||||||
if (CollectionUtils.isEmpty(relations)) {
|
if (CollectionUtils.isEmpty(relations)) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
|
|||||||
@ -104,6 +104,8 @@
|
|||||||
( r.workspace_id = #{workspaceId} AND r.owner_ou_id = #{ouId} AND (r.role_type = 'common' OR r.role_type = 'super_admin') )
|
( r.workspace_id = #{workspaceId} AND r.owner_ou_id = #{ouId} AND (r.role_type = 'common' OR r.role_type = 'super_admin') )
|
||||||
OR
|
OR
|
||||||
( r.owner_ou_id = - 1 AND FIND_IN_SET( #{workspaceJoinType},g.ou_type_code) > 0)
|
( r.owner_ou_id = - 1 AND FIND_IN_SET( #{workspaceJoinType},g.ou_type_code) > 0)
|
||||||
|
OR
|
||||||
|
( r.workspace_type = #{superAdminWorkspaceType} AND r.workspace_id = 0 AND r.owner_ou_id = 0 and r.role_type = 'super_admin')
|
||||||
)
|
)
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
@ -111,10 +113,6 @@
|
|||||||
<include refid="sql-queryForOUWorkspace"/>
|
<include refid="sql-queryForOUWorkspace"/>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="listForOUWorkspace" resultType="cn.axzo.tyr.server.repository.entity.SaasRole">
|
|
||||||
<include refid="sql-queryForOUWorkspace"/>
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<select id="listFeatureByIds" resultType="cn.axzo.tyr.server.model.RoleFeatureRelation">
|
<select id="listFeatureByIds" resultType="cn.axzo.tyr.server.model.RoleFeatureRelation">
|
||||||
SELECT rg.role_id AS roleId, pg.feature_id AS featureId
|
SELECT rg.role_id AS roleId, pg.feature_id AS featureId
|
||||||
FROM saas_pgroup_role_relation rg, saas_pgroup_permission_relation pg
|
FROM saas_pgroup_role_relation rg, saas_pgroup_permission_relation pg
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
package cn.axzo.tyr.base;
|
package cn.axzo.tyr.base;
|
||||||
|
|
||||||
|
import cn.axzo.apollo.workspace.api.workspace.WorkspaceApi;
|
||||||
|
import cn.axzo.basics.profiles.api.UserProfileServiceApi;
|
||||||
import cn.axzo.framework.rocketmq.Event;
|
import cn.axzo.framework.rocketmq.Event;
|
||||||
import cn.axzo.framework.rocketmq.EventProducer;
|
import cn.axzo.framework.rocketmq.EventProducer;
|
||||||
import cn.axzo.thrones.client.saas.ServicePkgClient;
|
import cn.axzo.thrones.client.saas.ServicePkgClient;
|
||||||
@ -43,6 +45,11 @@ public class TestConfig {
|
|||||||
@MockBean
|
@MockBean
|
||||||
private ServicePkgClient servicePkgClient;
|
private ServicePkgClient servicePkgClient;
|
||||||
|
|
||||||
|
@MockBean
|
||||||
|
private WorkspaceApi workspaceApi;
|
||||||
|
@MockBean
|
||||||
|
private UserProfileServiceApi userProfileServiceApi;
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@Primary
|
@Primary
|
||||||
public EventProducer<Object> dummyEventProducer() {
|
public EventProducer<Object> dummyEventProducer() {
|
||||||
|
|||||||
@ -69,18 +69,6 @@ public class RoleUserTest {
|
|||||||
System.out.println(JSON.toJSONString(result));
|
System.out.println(JSON.toJSONString(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testPageQueryForOUWorkspace() {
|
|
||||||
RoleWithUserQueryReq req = new RoleWithUserQueryReq();
|
|
||||||
req.setOuId(5195L);
|
|
||||||
req.setWorkspaceId(371L);
|
|
||||||
req.setWorkspaceJoinType(2);
|
|
||||||
req.setPage(1L);
|
|
||||||
req.setPageSize(20L);
|
|
||||||
Page<SaasRole> page = saasRoleDao.pageQueryForOUWorkspace(req);
|
|
||||||
System.out.println(JSON.toJSONString(page));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testListAdmin() {
|
public void testListAdmin() {
|
||||||
roleService.listAdmins(111L, 22L);
|
roleService.listAdmins(111L, 22L);
|
||||||
|
|||||||
@ -1,23 +1,34 @@
|
|||||||
package cn.axzo.tyr.server.service;
|
package cn.axzo.tyr.server.service;
|
||||||
|
|
||||||
|
import cn.axzo.apollo.core.web.Results;
|
||||||
|
import cn.axzo.apollo.workspace.api.workspace.WorkspaceApi;
|
||||||
|
import cn.axzo.apollo.workspace.api.workspace.req.GetSimpleWorkspaceReqV2;
|
||||||
|
import cn.axzo.apollo.workspace.api.workspace.res.SimpleWorkspaceRes;
|
||||||
|
import cn.axzo.basics.profiles.api.UserProfileServiceApi;
|
||||||
import cn.axzo.tyr.base.BaseTest;
|
import cn.axzo.tyr.base.BaseTest;
|
||||||
import cn.axzo.tyr.base.MysqlDataLoader;
|
import cn.axzo.tyr.base.MysqlDataLoader;
|
||||||
|
import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
|
||||||
import cn.axzo.tyr.client.model.req.ListRoleReq;
|
import cn.axzo.tyr.client.model.req.ListRoleReq;
|
||||||
|
import cn.axzo.tyr.client.model.req.QueryByIdentityIdTypeReq;
|
||||||
|
import cn.axzo.tyr.client.model.req.QuerySaasRoleReq;
|
||||||
|
import cn.axzo.tyr.client.model.res.IsSuperAdminRes;
|
||||||
import cn.axzo.tyr.client.model.res.SaasRoleRes;
|
import cn.axzo.tyr.client.model.res.SaasRoleRes;
|
||||||
|
import cn.axzo.tyr.client.model.roleuser.req.ListRoleUserRelationParam;
|
||||||
|
import cn.axzo.tyr.client.model.vo.SaasRoleVO;
|
||||||
|
import cn.azxo.framework.common.model.CommonResponse;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.mockito.Mockito;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Objects;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
|
||||||
|
|
||||||
class RoleServiceTest extends BaseTest {
|
class RoleServiceTest extends BaseTest {
|
||||||
|
|
||||||
@ -25,12 +36,17 @@ class RoleServiceTest extends BaseTest {
|
|||||||
private RoleService roleService;
|
private RoleService roleService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private MysqlDataLoader mysqlDataLoader;
|
private MysqlDataLoader mysqlDataLoader;
|
||||||
|
@Autowired
|
||||||
|
private WorkspaceApi workspaceApi;
|
||||||
|
@Autowired
|
||||||
|
private UserProfileServiceApi userProfileServiceApi;
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
@Override
|
@Override
|
||||||
public void setup() {
|
public void setup() {
|
||||||
super.setup();
|
super.setup();
|
||||||
mysqlDataLoader.loadFromClassName(getClass().getSimpleName());
|
mysqlDataLoader.loadFromClassName(getClass().getSimpleName());
|
||||||
|
MockitoAnnotations.initMocks(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -73,4 +89,227 @@ class RoleServiceTest extends BaseTest {
|
|||||||
.build());
|
.build());
|
||||||
Assertions.assertEquals(roles.size(), 2);
|
Assertions.assertEquals(roles.size(), 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void query() {
|
||||||
|
|
||||||
|
Mockito.when(workspaceApi.getListV2(Mockito.eq(GetSimpleWorkspaceReqV2.builder()
|
||||||
|
.ids(Lists.newArrayList(3L, -1L))
|
||||||
|
.build())))
|
||||||
|
.thenReturn(Results.ok(Lists.newArrayList(SimpleWorkspaceRes.builder()
|
||||||
|
.type(2)
|
||||||
|
.build())));
|
||||||
|
|
||||||
|
Mockito.when(workspaceApi.getListV2(Mockito.eq(GetSimpleWorkspaceReqV2.builder()
|
||||||
|
.ids(Lists.newArrayList(-1L))
|
||||||
|
.build())))
|
||||||
|
.thenReturn(Results.ok(Lists.newArrayList()));
|
||||||
|
|
||||||
|
// 只查询预设角色,workspaceId = -1
|
||||||
|
List<SaasRoleVO> query = roleService.query(QuerySaasRoleReq.builder().build());
|
||||||
|
Assertions.assertEquals(query.size(), 4);
|
||||||
|
// 只查询预设角色,workspaceId = -1
|
||||||
|
|
||||||
|
// 只查询预设角色和指定workspaceId的角色
|
||||||
|
query = roleService.query(QuerySaasRoleReq.builder()
|
||||||
|
.workspaceId(Lists.newArrayList(3L))
|
||||||
|
.ouId(Lists.newArrayList(4L))
|
||||||
|
.build());
|
||||||
|
Assertions.assertEquals(query.size(), 6);
|
||||||
|
// 只查询预设角色和指定workspaceId的角色
|
||||||
|
|
||||||
|
// 只查询指定workspaceId的超管角色
|
||||||
|
query = roleService.query(QuerySaasRoleReq.builder()
|
||||||
|
.roleType(Lists.newArrayList(RoleTypeEnum.SUPER_ADMIN.getValue()))
|
||||||
|
.workspaceId(Lists.newArrayList(3L))
|
||||||
|
.ouId(Lists.newArrayList(4L))
|
||||||
|
.build());
|
||||||
|
Assertions.assertEquals(query.size(), 1);
|
||||||
|
// 只查询指定workspaceId的超管角色
|
||||||
|
|
||||||
|
// 只查询指定workspaceId的超管角色、预设角色
|
||||||
|
query = roleService.query(QuerySaasRoleReq.builder()
|
||||||
|
.roleType(Lists.newArrayList(RoleTypeEnum.SUPER_ADMIN.getValue(),
|
||||||
|
RoleTypeEnum.INIT.getValue()))
|
||||||
|
.workspaceId(Lists.newArrayList(3L))
|
||||||
|
.ouId(Lists.newArrayList(4L))
|
||||||
|
.build());
|
||||||
|
Assertions.assertEquals(query.size(), 5);
|
||||||
|
// 只查询指定workspaceId的超管角色、预设角色
|
||||||
|
|
||||||
|
// 根据workspaceTypeCode查询
|
||||||
|
query = roleService.query(QuerySaasRoleReq.builder()
|
||||||
|
.workspaceTypeCode(Lists.newArrayList("2"))
|
||||||
|
.build());
|
||||||
|
Assertions.assertEquals(query.size(), 3);
|
||||||
|
// 根据workspaceTypeCode查询
|
||||||
|
|
||||||
|
// 根据workspaceId、workspaceTypeCode查询
|
||||||
|
query = roleService.query(QuerySaasRoleReq.builder()
|
||||||
|
.workspaceTypeCode(Lists.newArrayList("2"))
|
||||||
|
.workspaceId(Lists.newArrayList(3L))
|
||||||
|
.ouId(Lists.newArrayList(4L))
|
||||||
|
.build());
|
||||||
|
Assertions.assertEquals(query.size(), 4);
|
||||||
|
// 根据workspaceId、workspaceTypeCode查询
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void isSuperAdmin() {
|
||||||
|
List<IsSuperAdminRes> superAdmin = roleService.isSuperAdmin(Lists.newArrayList(QueryByIdentityIdTypeReq.builder()
|
||||||
|
.identityId(28801L)
|
||||||
|
.identityType(3)
|
||||||
|
.workspaceId(3L)
|
||||||
|
.ouId(4L)
|
||||||
|
.personId(24510L)
|
||||||
|
.build()));
|
||||||
|
Assertions.assertEquals(superAdmin.size(), 1);
|
||||||
|
Assertions.assertTrue(superAdmin.get(0).getIsSuperAdmin());
|
||||||
|
|
||||||
|
superAdmin = roleService.isSuperAdmin(Lists.newArrayList(QueryByIdentityIdTypeReq.builder()
|
||||||
|
.identityId(28802L)
|
||||||
|
.identityType(3)
|
||||||
|
.workspaceId(3L)
|
||||||
|
.ouId(4L)
|
||||||
|
.personId(24511L)
|
||||||
|
.build()));
|
||||||
|
Assertions.assertEquals(superAdmin.size(), 1);
|
||||||
|
Assertions.assertFalse(superAdmin.get(0).getIsSuperAdmin());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void listSuperAdmin() {
|
||||||
|
Mockito.when(workspaceApi.getListV2(Mockito.eq(GetSimpleWorkspaceReqV2.builder()
|
||||||
|
.ids(Lists.newArrayList(3L, -1L))
|
||||||
|
.build())))
|
||||||
|
.thenReturn(Results.ok(Lists.newArrayList(SimpleWorkspaceRes.builder()
|
||||||
|
.type(2)
|
||||||
|
.build())));
|
||||||
|
|
||||||
|
Mockito.when(workspaceApi.getListV2(Mockito.eq(GetSimpleWorkspaceReqV2.builder()
|
||||||
|
.ids(Lists.newArrayList(3L))
|
||||||
|
.build())))
|
||||||
|
.thenReturn(Results.ok(Lists.newArrayList(SimpleWorkspaceRes.builder()
|
||||||
|
.type(2)
|
||||||
|
.build())));
|
||||||
|
|
||||||
|
Mockito.when(workspaceApi.getListV2(Mockito.eq(GetSimpleWorkspaceReqV2.builder()
|
||||||
|
.ids(Lists.newArrayList(-1L))
|
||||||
|
.build())))
|
||||||
|
.thenReturn(Results.ok(Lists.newArrayList()));
|
||||||
|
|
||||||
|
Mockito.when(userProfileServiceApi.postPersonProfiles(Mockito.any()))
|
||||||
|
.thenReturn(CommonResponse.success(Lists.newArrayList()));
|
||||||
|
|
||||||
|
// 根据workspaceId查询所有角色,包括超管
|
||||||
|
List<SaasRoleRes> roles = roleService.list(ListRoleReq.builder()
|
||||||
|
.workspaceOuPairs(Lists.newArrayList(ListRoleUserRelationParam.WorkspaceOuPair.builder()
|
||||||
|
.workspaceId(3L)
|
||||||
|
.ouId(4L)
|
||||||
|
.build()))
|
||||||
|
.needRoleUser(true)
|
||||||
|
.build());
|
||||||
|
Assertions.assertEquals(roles.size(), 2);
|
||||||
|
Assertions.assertEquals(roles.stream()
|
||||||
|
.filter(e -> Objects.equals(e.getRoleType(), RoleTypeEnum.SUPER_ADMIN.getValue()))
|
||||||
|
.map(SaasRoleRes::getSaasRoleUsers)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.flatMap(Collection::stream)
|
||||||
|
.collect(Collectors.toList())
|
||||||
|
.size(), 1);
|
||||||
|
|
||||||
|
Assertions.assertEquals(roles.stream()
|
||||||
|
.filter(e -> Objects.equals(e.getRoleType(), RoleTypeEnum.COMMON.getValue()))
|
||||||
|
.map(SaasRoleRes::getSaasRoleUsers)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.flatMap(Collection::stream)
|
||||||
|
.collect(Collectors.toList())
|
||||||
|
.size(), 0);
|
||||||
|
// 根据workspaceId查询所有角色,包括超管
|
||||||
|
|
||||||
|
// 根据workspaceId查询超管角色
|
||||||
|
roles = roleService.list(ListRoleReq.builder()
|
||||||
|
.workspaceOuPairs(Lists.newArrayList(ListRoleUserRelationParam.WorkspaceOuPair.builder()
|
||||||
|
.workspaceId(3L)
|
||||||
|
.ouId(4L)
|
||||||
|
.build()))
|
||||||
|
.roleTypes(Lists.newArrayList(RoleTypeEnum.SUPER_ADMIN.getValue()))
|
||||||
|
.needRoleUser(true)
|
||||||
|
.build());
|
||||||
|
Assertions.assertEquals(roles.size(), 1);
|
||||||
|
Assertions.assertEquals(roles.stream()
|
||||||
|
.filter(e -> Objects.equals(e.getRoleType(), RoleTypeEnum.SUPER_ADMIN.getValue()))
|
||||||
|
.map(SaasRoleRes::getSaasRoleUsers)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.flatMap(Collection::stream)
|
||||||
|
.collect(Collectors.toList())
|
||||||
|
.size(), 1);
|
||||||
|
// 根据workspaceId查询超管角色
|
||||||
|
|
||||||
|
// 根据workspaceId查询自定义角色
|
||||||
|
roles = roleService.list(ListRoleReq.builder()
|
||||||
|
.workspaceOuPairs(Lists.newArrayList(ListRoleUserRelationParam.WorkspaceOuPair.builder()
|
||||||
|
.workspaceId(3L)
|
||||||
|
.ouId(4L)
|
||||||
|
.build()))
|
||||||
|
.roleTypes(Lists.newArrayList(RoleTypeEnum.COMMON.getValue()))
|
||||||
|
.needRoleUser(true)
|
||||||
|
.build());
|
||||||
|
Assertions.assertEquals(roles.size(), 1);
|
||||||
|
Assertions.assertEquals(roles.stream()
|
||||||
|
.filter(e -> Objects.equals(e.getRoleType(), RoleTypeEnum.COMMON.getValue()))
|
||||||
|
.map(SaasRoleRes::getSaasRoleUsers)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.flatMap(Collection::stream)
|
||||||
|
.collect(Collectors.toList())
|
||||||
|
.size(), 0);
|
||||||
|
// 根据workspaceId查询自定义角色
|
||||||
|
|
||||||
|
// 根据workspaceId查询自定义角色、预设角色
|
||||||
|
roles = roleService.list(ListRoleReq.builder()
|
||||||
|
.workspaceOuPairs(Lists.newArrayList(ListRoleUserRelationParam.WorkspaceOuPair.builder()
|
||||||
|
.workspaceId(3L)
|
||||||
|
.ouId(4L)
|
||||||
|
.build()))
|
||||||
|
.needRoleUser(true)
|
||||||
|
.needPresetRole(true)
|
||||||
|
.build());
|
||||||
|
Assertions.assertEquals(roles.size(), 6);
|
||||||
|
Assertions.assertEquals(roles.stream()
|
||||||
|
.filter(e -> Objects.equals(e.getRoleType(), RoleTypeEnum.COMMON.getValue()))
|
||||||
|
.map(SaasRoleRes::getSaasRoleUsers)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.flatMap(Collection::stream)
|
||||||
|
.collect(Collectors.toList())
|
||||||
|
.size(), 0);
|
||||||
|
Assertions.assertEquals(roles.stream()
|
||||||
|
.filter(e -> Objects.equals(e.getRoleType(), RoleTypeEnum.SUPER_ADMIN.getValue()))
|
||||||
|
.map(SaasRoleRes::getSaasRoleUsers)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.flatMap(Collection::stream)
|
||||||
|
.collect(Collectors.toList())
|
||||||
|
.size(), 1);
|
||||||
|
// 根据workspaceId查询自定义角色、预设角色
|
||||||
|
|
||||||
|
// 查询所有角色
|
||||||
|
roles = roleService.list(ListRoleReq.builder()
|
||||||
|
.build());
|
||||||
|
Assertions.assertEquals(roles.size(), 9);
|
||||||
|
// 查询所有角色
|
||||||
|
|
||||||
|
// 查询预设角色
|
||||||
|
roles = roleService.list(ListRoleReq.builder()
|
||||||
|
.needPresetRole(true)
|
||||||
|
.build());
|
||||||
|
Assertions.assertEquals(roles.size(), 4);
|
||||||
|
// 查询预设角色
|
||||||
|
|
||||||
|
// 直接查询超管角色
|
||||||
|
roles = roleService.list(ListRoleReq.builder()
|
||||||
|
.roleTypes(Lists.newArrayList(RoleTypeEnum.SUPER_ADMIN.getValue()))
|
||||||
|
.workspaceType(2)
|
||||||
|
.build());
|
||||||
|
Assertions.assertEquals(roles.size(), 1);
|
||||||
|
// 直接查询超管角色
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,55 @@
|
|||||||
|
package cn.axzo.tyr.server.service.impl;
|
||||||
|
|
||||||
|
import cn.axzo.apollo.core.web.Results;
|
||||||
|
import cn.axzo.apollo.workspace.api.workspace.WorkspaceApi;
|
||||||
|
import cn.axzo.apollo.workspace.api.workspace.req.GetSimpleWorkspaceReqV2;
|
||||||
|
import cn.axzo.apollo.workspace.api.workspace.res.SimpleWorkspaceRes;
|
||||||
|
import cn.axzo.tyr.base.BaseTest;
|
||||||
|
import cn.axzo.tyr.base.MysqlDataLoader;
|
||||||
|
import cn.axzo.tyr.client.model.roleuser.dto.SuperAminInfoResp;
|
||||||
|
import cn.axzo.tyr.client.model.roleuser.req.SuperAdminParam;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import org.junit.jupiter.api.Assertions;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import org.mockito.MockitoAnnotations;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
class RoleUserServiceTest extends BaseTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RoleUserService roleUserService;
|
||||||
|
@Autowired
|
||||||
|
private MysqlDataLoader mysqlDataLoader;
|
||||||
|
@Autowired
|
||||||
|
private WorkspaceApi workspaceApi;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
@Override
|
||||||
|
public void setup() {
|
||||||
|
super.setup();
|
||||||
|
mysqlDataLoader.loadFromClassName(getClass().getSimpleName());
|
||||||
|
MockitoAnnotations.initMocks(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void superAdminList() {
|
||||||
|
|
||||||
|
Mockito.when(workspaceApi.getListV2(Mockito.eq(GetSimpleWorkspaceReqV2.builder()
|
||||||
|
.ids(Lists.newArrayList(3L))
|
||||||
|
.build())))
|
||||||
|
.thenReturn(Results.ok(Lists.newArrayList(SimpleWorkspaceRes.builder()
|
||||||
|
.type(2)
|
||||||
|
.build())));
|
||||||
|
|
||||||
|
List<SuperAminInfoResp> superAminInfoResps = roleUserService.superAdminList(SuperAdminParam.builder()
|
||||||
|
.workspaceId(3L)
|
||||||
|
.ouId(4L)
|
||||||
|
.build());
|
||||||
|
|
||||||
|
Assertions.assertEquals(superAminInfoResps.size(), 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -10,7 +10,52 @@ INSERT INTO saas_role_group_relation (id, role_id, saas_role_group_id, is_delete
|
|||||||
INSERT INTO saas_role_group_relation (id, role_id, saas_role_group_id, is_delete, create_at, update_at) VALUES (25, 25326, 13, 0, '2023-10-23 17:50:00', '2023-10-23 17:49:59');
|
INSERT INTO saas_role_group_relation (id, role_id, saas_role_group_id, is_delete, create_at, update_at) VALUES (25, 25326, 13, 0, '2023-10-23 17:50:00', '2023-10-23 17:49:59');
|
||||||
INSERT INTO saas_role_group_relation (id, role_id, saas_role_group_id, is_delete, create_at, update_at) VALUES (26, 25327, 13, 0, '2023-10-23 17:50:00', '2023-10-23 17:49:59');
|
INSERT INTO saas_role_group_relation (id, role_id, saas_role_group_id, is_delete, create_at, update_at) VALUES (26, 25327, 13, 0, '2023-10-23 17:50:00', '2023-10-23 17:49:59');
|
||||||
|
|
||||||
INSERT INTO saas_role_group (id, workspace_type_code, ou_type_code, name, workspace_id, ou_id, parent_id, sort, code, category_code, is_delete, create_at, update_at) VALUES (6, '6', '6', '研发中心', -1, -1, 0, 3, 'A1', '', 0, '2023-09-19 14:31:19', '2024-05-29 09:33:24');
|
INSERT INTO saas_role_group (id, workspace_type_code, ou_type_code, name, workspace_id, ou_id, parent_id, sort, code, category_code, is_delete, create_at, update_at)
|
||||||
INSERT INTO saas_role_group (id, workspace_type_code, ou_type_code, name, workspace_id, ou_id, parent_id, sort, code, category_code, is_delete, create_at, update_at) VALUES (13, '2', '5', '专业分包', -1, -1, 0, 1, 'A2', '', 0, '2023-10-23 17:49:59', '2024-08-15 18:39:13');
|
VALUES (6, '6', '6', '研发中心', -1, -1, 0, 3, 'A1', '', 0, '2023-09-19 14:31:19', '2024-05-29 09:33:24');
|
||||||
|
INSERT INTO saas_role_group (id, workspace_type_code, ou_type_code, name, workspace_id, ou_id, parent_id, sort, code, category_code, is_delete, create_at, update_at)
|
||||||
|
VALUES (13, '2', '5', '专业分包', -1, -1, 0, 1, 'A2', '', 0, '2023-10-23 17:49:59', '2024-08-15 18:39:13');
|
||||||
|
|
||||||
|
-- INSERT INTO saas_role (id, NAME, description, role_type, role_code, workspace_id, owner_ou_id, product_unit_type, workspace_type, is_delete, create_at, update_at, create_by, update_by, fit_ou_type_bit, fit_ou_node_type_bit, position_template_id, project_team_manage_role_resource_id, from_pre_role_id, job_code, is_display, sort, enabled)
|
||||||
|
-- VALUES (3414, '超级管理员', '', 'super_admin', '', 3, 4, 1, 2, 0, '2022-10-19 15:52:33', '2024-09-29 17:16:27', 0, 0, 65535, 65535, 0, 0, 0, '', 1, 0, 1);
|
||||||
|
-- INSERT INTO saas_role (id, NAME, description, role_type, role_code, workspace_id, owner_ou_id, product_unit_type, workspace_type, is_delete, create_at, update_at, create_by, update_by, fit_ou_type_bit, fit_ou_node_type_bit, position_template_id, project_team_manage_role_resource_id, from_pre_role_id, job_code, is_display, sort, enabled)
|
||||||
|
-- VALUES (3415, '超级管理员', '', 'super_admin', '', 8, 1, 1, 2, 0, '2022-10-19 15:52:33', '2024-09-29 17:16:27', 0, 0, 65535, 65535, 0, 0, 0, '', 1, 0, 1);
|
||||||
|
INSERT INTO saas_role (id, NAME, description, role_type, role_code, workspace_id, owner_ou_id, product_unit_type, workspace_type, is_delete, create_at, update_at, create_by, update_by, fit_ou_type_bit, fit_ou_node_type_bit, position_template_id, project_team_manage_role_resource_id, from_pre_role_id, job_code, is_display, sort, enabled)
|
||||||
|
VALUES (101100, '超级管理员', '超级管理员', 'super_admin', 'ou_superadmin', 0, 0, 7, 1, 0, '2024-09-25 21:47:42', '2024-09-29 17:17:27', 2051297, 2051297, 1, 65535, 0, null, 0, '', 1, 0, 1);
|
||||||
|
INSERT INTO saas_role (id, NAME, description, role_type, role_code, workspace_id, owner_ou_id, product_unit_type, workspace_type, is_delete, create_at, update_at, create_by, update_by, fit_ou_type_bit, fit_ou_node_type_bit, position_template_id, project_team_manage_role_resource_id, from_pre_role_id, job_code, is_display, sort, enabled)
|
||||||
|
VALUES (101101, '超级管理员', '超级管理员', 'super_admin', 'pro_superadmin', 0, 0, 1, 2, 0, '2024-09-25 21:47:42', '2024-09-29 17:17:27', 2051297, 2051297, 1, 65535, 0, null, 0, '', 1, 0, 1);
|
||||||
|
INSERT INTO saas_role (id, NAME, description, role_type, role_code, workspace_id, owner_ou_id, product_unit_type, workspace_type, is_delete, create_at, update_at, create_by, update_by, fit_ou_type_bit, fit_ou_node_type_bit, position_template_id, project_team_manage_role_resource_id, from_pre_role_id, job_code, is_display, sort, enabled)
|
||||||
|
VALUES (101102, '超级管理员', '超级管理员', 'super_admin', 'oms_superadmin', 0, 0, 6, 6, 0, '2024-09-25 21:47:42', '2024-09-29 17:17:27', 2051297, 2051297, 1, 65535, 0, null, 0, '', 1, 0, 1);
|
||||||
|
INSERT INTO saas_role (id, NAME, description, role_type, role_code, workspace_id, owner_ou_id, product_unit_type, workspace_type, is_delete, create_at, update_at, create_by, update_by, fit_ou_type_bit, fit_ou_node_type_bit, position_template_id, project_team_manage_role_resource_id, from_pre_role_id, job_code, is_display, sort, enabled)
|
||||||
|
VALUES (101103, '超级管理员', '超级管理员', 'super_admin', 'zw_superadmin', 0, 0, 3, 3, 0, '2024-09-25 21:47:42', '2024-09-29 17:17:27', 2051297, 2051297, 1, 65535, 0, null, 0, '', 1, 0, 1);
|
||||||
|
|
||||||
|
INSERT INTO saas_role (id, NAME, description, role_type, role_code, workspace_id, owner_ou_id, product_unit_type, workspace_type, is_delete, create_at, update_at, create_by, update_by, fit_ou_type_bit, fit_ou_node_type_bit, position_template_id, project_team_manage_role_resource_id, from_pre_role_id, job_code, is_display, sort, enabled)
|
||||||
|
VALUES (3416, '自定义', '', 'common', '', 3, 4, 1, 2, 0, '2022-10-19 15:52:33', '2024-09-29 17:16:27', 0, 0, 65535, 65535, 0, 0, 0, '', 1, 0, 1);
|
||||||
|
|
||||||
|
INSERT INTO saas_role_group_relation (id, role_id, saas_role_group_id, is_delete, create_at, update_at)
|
||||||
|
VALUES (549, 101100, 18, 0, '2024-09-25 21:47:42', '2024-09-25 21:47:42');
|
||||||
|
INSERT INTO saas_role_group_relation (id, role_id, saas_role_group_id, is_delete, create_at, update_at)
|
||||||
|
VALUES (550, 101101, 14, 0, '2024-09-25 21:47:42', '2024-09-25 21:47:42');
|
||||||
|
INSERT INTO saas_role_group_relation (id, role_id, saas_role_group_id, is_delete, create_at, update_at)
|
||||||
|
VALUES (551, 101102, 57, 0, '2024-09-25 21:47:42', '2024-09-25 21:47:42');
|
||||||
|
|
||||||
|
INSERT INTO saas_role_group (id, workspace_type_code, ou_type_code, name, workspace_id, ou_id, parent_id, sort, code, category_code, is_delete, create_at, update_at, path)
|
||||||
|
VALUES (14, '2', '1', '总包单位', -1, -1, 0, 1, '', '', 0, '2023-10-23 17:50:04', '2024-09-10 10:18:44', '14,');
|
||||||
|
INSERT INTO saas_role_group (id, workspace_type_code, ou_type_code, name, workspace_id, ou_id, parent_id, sort, code, category_code, is_delete, create_at, update_at, path)
|
||||||
|
VALUES (18, '1', '7', '企业通用', -1, -1, 0, 4, '', '', 0, '2023-10-23 17:50:15', '2024-09-10 10:18:44', '18,');
|
||||||
|
INSERT INTO saas_role_group (id, workspace_type_code, ou_type_code, name, workspace_id, ou_id, parent_id, sort, code, category_code, is_delete, create_at, update_at, path)
|
||||||
|
VALUES (57, '6', '6', 'OMS超管组', -1, -1, 0, 9, 'omsSuperAdminGroup', '', 0, '2024-04-17 11:38:28', '2024-09-10 10:18:45', '57,');
|
||||||
|
|
||||||
|
INSERT INTO saas_role_user_relation (id, identity_id, role_id, identity_type, natural_person_id, workspace_id, ou_id, resource_type, resource_id, is_delete, create_at, update_at, create_by, update_by, job_type)
|
||||||
|
VALUES (197519, 28801, 3414, 3, 24510, 3, 4, 0, 0, 0, '2024-01-18 16:36:16', '2024-09-29 17:16:39', 0, 0, 2);
|
||||||
|
INSERT INTO saas_role_user_relation (id, identity_id, role_id, identity_type, natural_person_id, workspace_id, ou_id, resource_type, resource_id, is_delete, create_at, update_at, create_by, update_by, job_type)
|
||||||
|
VALUES (183677, 40, 3415, 3, 2232, 8, 1, 0, 0, 0, '2023-10-06 15:13:35', '2024-09-29 17:16:39', 0, 0, 2);
|
||||||
|
INSERT INTO saas_role_user_relation (id, identity_id, role_id, identity_type, natural_person_id, workspace_id, ou_id, resource_type, resource_id, is_delete, create_at, update_at, create_by, update_by, job_type)
|
||||||
|
VALUES (1158315, 28801, 101100, 3, 24510, 3, 4, 0, 0, 0, '2024-09-29 16:33:31', '2024-09-29 16:33:31', 0, 0, 2);
|
||||||
|
INSERT INTO saas_role_user_relation (id, identity_id, role_id, identity_type, natural_person_id, workspace_id, ou_id, resource_type, resource_id, is_delete, create_at, update_at, create_by, update_by, job_type)
|
||||||
|
VALUES (1157571, 40, 101101, 3, 2232, 8, 1, 0, 0, 0, '2024-09-27 09:39:49', '2024-09-27 09:39:48', 0, 0, 2);
|
||||||
|
INSERT INTO saas_role_user_relation (id, identity_id, role_id, identity_type, natural_person_id, workspace_id, ou_id, resource_type, resource_id, is_delete, create_at, update_at, create_by, update_by, job_type)
|
||||||
|
VALUES (197520, 28802, 24425, 3, 24511, 3, 4, 0, 0, 0, '2024-01-18 16:36:16', '2024-09-29 17:16:39', 0, 0, 2);
|
||||||
|
INSERT INTO saas_role_user_relation (id, identity_id, role_id, identity_type, natural_person_id, workspace_id, ou_id, resource_type, resource_id, is_delete, create_at, update_at, create_by, update_by, job_type)
|
||||||
|
VALUES (1157572, 40, 101101, 3, 2232, 3, 4, 0, 0, 0, '2024-09-27 09:39:49', '2024-09-27 09:39:48', 0, 0, 2);
|
||||||
|
|
||||||
#-->SaasRoleUserRelationServiceImplTest.sql
|
#-->SaasRoleUserRelationServiceImplTest.sql
|
||||||
25
tyr-server/src/test/resources/mysql/RoleUserServiceTest.sql
Normal file
25
tyr-server/src/test/resources/mysql/RoleUserServiceTest.sql
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#-->DEFAULT
|
||||||
|
|
||||||
|
INSERT INTO saas_role (id, NAME, description, role_type, role_code, workspace_id, owner_ou_id, product_unit_type, workspace_type, is_delete, create_at, update_at, create_by, update_by, fit_ou_type_bit, fit_ou_node_type_bit, position_template_id, project_team_manage_role_resource_id, from_pre_role_id, job_code, is_display, sort, enabled)
|
||||||
|
VALUES (101100, '超级管理员', '超级管理员', 'super_admin', 'ou_superadmin', 0, 0, 7, 1, 0, '2024-09-25 21:47:42', '2024-09-29 17:17:27', 2051297, 2051297, 1, 65535, 0, null, 0, '', 1, 0, 1);
|
||||||
|
INSERT INTO saas_role (id, NAME, description, role_type, role_code, workspace_id, owner_ou_id, product_unit_type, workspace_type, is_delete, create_at, update_at, create_by, update_by, fit_ou_type_bit, fit_ou_node_type_bit, position_template_id, project_team_manage_role_resource_id, from_pre_role_id, job_code, is_display, sort, enabled)
|
||||||
|
VALUES (101101, '超级管理员', '超级管理员', 'super_admin', 'pro_superadmin', 0, 0, 1, 2, 0, '2024-09-25 21:47:42', '2024-09-29 17:17:27', 2051297, 2051297, 1, 65535, 0, null, 0, '', 1, 0, 1);
|
||||||
|
INSERT INTO saas_role (id, NAME, description, role_type, role_code, workspace_id, owner_ou_id, product_unit_type, workspace_type, is_delete, create_at, update_at, create_by, update_by, fit_ou_type_bit, fit_ou_node_type_bit, position_template_id, project_team_manage_role_resource_id, from_pre_role_id, job_code, is_display, sort, enabled)
|
||||||
|
VALUES (101102, '超级管理员', '超级管理员', 'super_admin', 'oms_superadmin', 0, 0, 6, 6, 0, '2024-09-25 21:47:42', '2024-09-29 17:17:27', 2051297, 2051297, 1, 65535, 0, null, 0, '', 1, 0, 1);
|
||||||
|
INSERT INTO saas_role (id, NAME, description, role_type, role_code, workspace_id, owner_ou_id, product_unit_type, workspace_type, is_delete, create_at, update_at, create_by, update_by, fit_ou_type_bit, fit_ou_node_type_bit, position_template_id, project_team_manage_role_resource_id, from_pre_role_id, job_code, is_display, sort, enabled)
|
||||||
|
VALUES (101103, '超级管理员', '超级管理员', 'super_admin', 'zw_superadmin', 0, 0, 3, 3, 0, '2024-09-25 21:47:42', '2024-09-29 17:17:27', 2051297, 2051297, 1, 65535, 0, null, 0, '', 1, 0, 1);
|
||||||
|
|
||||||
|
INSERT INTO saas_role_user_relation (id, identity_id, role_id, identity_type, natural_person_id, workspace_id, ou_id, resource_type, resource_id, is_delete, create_at, update_at, create_by, update_by, job_type)
|
||||||
|
VALUES (197519, 28801, 3414, 3, 24510, 3, 4, 0, 0, 0, '2024-01-18 16:36:16', '2024-09-29 17:16:39', 0, 0, 2);
|
||||||
|
INSERT INTO saas_role_user_relation (id, identity_id, role_id, identity_type, natural_person_id, workspace_id, ou_id, resource_type, resource_id, is_delete, create_at, update_at, create_by, update_by, job_type)
|
||||||
|
VALUES (183677, 40, 3415, 3, 2232, 8, 1, 0, 0, 0, '2023-10-06 15:13:35', '2024-09-29 17:16:39', 0, 0, 2);
|
||||||
|
INSERT INTO saas_role_user_relation (id, identity_id, role_id, identity_type, natural_person_id, workspace_id, ou_id, resource_type, resource_id, is_delete, create_at, update_at, create_by, update_by, job_type)
|
||||||
|
VALUES (1158315, 28801, 101100, 3, 24510, 3, 4, 0, 0, 0, '2024-09-29 16:33:31', '2024-09-29 16:33:31', 0, 0, 2);
|
||||||
|
INSERT INTO saas_role_user_relation (id, identity_id, role_id, identity_type, natural_person_id, workspace_id, ou_id, resource_type, resource_id, is_delete, create_at, update_at, create_by, update_by, job_type)
|
||||||
|
VALUES (1157571, 40, 101101, 3, 2232, 8, 1, 0, 0, 0, '2024-09-27 09:39:49', '2024-09-27 09:39:48', 0, 0, 2);
|
||||||
|
INSERT INTO saas_role_user_relation (id, identity_id, role_id, identity_type, natural_person_id, workspace_id, ou_id, resource_type, resource_id, is_delete, create_at, update_at, create_by, update_by, job_type)
|
||||||
|
VALUES (197520, 28802, 24425, 3, 24511, 3, 4, 0, 0, 0, '2024-01-18 16:36:16', '2024-09-29 17:16:39', 0, 0, 2);
|
||||||
|
INSERT INTO saas_role_user_relation (id, identity_id, role_id, identity_type, natural_person_id, workspace_id, ou_id, resource_type, resource_id, is_delete, create_at, update_at, create_by, update_by, job_type)
|
||||||
|
VALUES (1157572, 40, 101101, 3, 2232, 3, 4, 0, 0, 0, '2024-09-27 09:39:49', '2024-09-27 09:39:48', 0, 0, 2);
|
||||||
|
|
||||||
|
#-->SaasRoleUserRelationServiceImplTest.sql
|
||||||
Loading…
Reference in New Issue
Block a user