feat:(REQ-3282) 增加角色page接口

This commit is contained in:
李龙 2024-12-10 14:42:11 +08:00
parent d31cfc503d
commit 07256a629f
15 changed files with 445 additions and 44 deletions

View File

@ -5,6 +5,7 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
@Data
@ -65,6 +66,10 @@ public class SaasRoleGroupDTO {
*/
private String path;
private Date createAt;
private Date updateAt;
/**
* 角色信息
*/

View File

@ -5,6 +5,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@Builder
@NoArgsConstructor
@ -57,4 +59,19 @@ public class SaasRoleGroupRes {
* 上级分组id
*/
private Long parentId;
/**
* 层级path
*/
private String path;
/**
* 添加时间
*/
private Date createAt;
/**
* 更新时间
*/
private Date updateAt;
}

View File

@ -114,8 +114,10 @@ public class PageRoleReq {
*/
private Boolean needRoleUser;
private Boolean needPermissionRelation;
/**
* 是否需要角色跟菜单组件的关联关系不查询具体的菜单组件信息
*/
private Boolean needFeatureResourceRelation;
/**
* 是否需要预设角色因为预设角色的workspaceId和ouId为-1

View File

@ -0,0 +1,38 @@
package cn.axzo.tyr.feign.resp;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Set;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class FeatureResourceRelationResp {
/**
* 菜单资源树节点id
*/
private Long featureId;
/**
* 新旧菜单资源数标识
*/
private Integer type;
/**
* 菜单资源树节点类型
*/
private Integer featureType;
/**
* 权限点标签
* 在职:JOINED
* 离场:LEAVE
* @see cn.axzo.tyr.feign.enums.RolePermissionTagEnum
*/
private Set<String> tags;
}

View File

@ -30,6 +30,7 @@ public class RoleFeatureResourceResp {
/**
* 菜单组件的权限标签
* @see cn.axzo.tyr.feign.enums.RolePermissionTagEnum
*/
private Set<String> tags;
}

View File

@ -5,6 +5,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@Builder
@NoArgsConstructor
@ -12,4 +14,68 @@ import lombok.NoArgsConstructor;
public class RoleGroupResp {
private Long id;
/**
* 租户类型
* @see cn.axzo.apollo.workspace.common.enums.WorkspaceTypeEnum
*/
private Integer workspaceType;
/**
* 协同关系类型
* 1:总包 2:建设单位 3:监理单位 4:劳务分包 5:专业分包 6:OMS通用 7:企业通用 8:企业内班组 9:项目内班组
* 政务的就是-1
* @see cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum
*/
private Integer cooperateShipType;
/**
* 名称
*/
private String name;
/**
* 所属工作台id
*/
private Long workspaceId;
/**
* 所属单位id
*/
private Long ouId;
/**
* 上级分组id
*/
private Long parentId;
/**
* 层级path
*/
private String path;
/**
* 排序
*/
private Integer sort;
/**
* 分组CODE
*/
private String code;
/**
* 分类CODE, 用于代班长小组长的权限分类
*/
private String categoryCode;
/**
* 添加时间
*/
private Date createAt;
/**
* 更新时间
*/
private Date updateAt;
}

View File

@ -1,5 +1,6 @@
package cn.axzo.tyr.feign.resp;
import cn.axzo.tyr.feign.enums.RoleTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -36,7 +37,7 @@ public class RoleResp {
/**
* 角色类型common 普通角色 super_admin超级管理员(禁止删除) admin子管理员(禁止删除) init初始化内置角色
* @See cn.axzo.tyr.model.enums.RoleTypeEnum
* @see cn.axzo.tyr.feign.enums.RoleTypeEnum
*/
private String roleType;
@ -53,6 +54,7 @@ public class RoleResp {
/**
* 协同关系类型
* 1:总包 2:建设单位 3:监理单位 4:劳务分包 5:专业分包 6:OMS通用 7:企业通用 8:企业内班组 9:项目内班组
* @see cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum
*/
private Integer cooperateShipType;
@ -104,4 +106,9 @@ public class RoleResp {
* 角色对应的人员信息
*/
private List<RoleUserResp> roleUsers;
/**
* 角色关联的菜单组件信息只有相关的关联信息比roleFeatureResources少很多信息
*/
private List<FeatureResourceRelationResp> featureResourceRelations;
}

View File

@ -11,5 +11,33 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor
public class RoleUserResp {
private Long id;
/**
* 身份Id
*/
private Long identityId;
/**
* 身份类型 1:工人 2:从业人员 3:班组长 4:运营人员 5:政务人员
*/
private Integer identityType;
/**
* 用户personId
*/
private Long personId;
/**
* 用户名字
*/
private String realName;
/**
* 所属单位Id 用户在当前工作台的所属单位
*/
private Long ouId;
/**
* 工作台Id
*/
private Long workspaceId;
}

View File

@ -18,4 +18,9 @@ public class PermissionConstant {
public static final String FEATURE_TOP_PATH = "/0/";
/** 权限点business_no前缀 **/
public static final String FEATURE_BIZ_NO_PREFIX = "feature";
/**
* 分页查询最大PAGE_SIZE
*/
public static final Integer MAX_PAGE_SIZE = 1000;
}

View File

@ -31,7 +31,7 @@ public enum BizResultCode implements IResultCode {
TERMINAL_EXIST("100021", "新端已经存在:{}"),
TERMINAL_NOT_FOUND("100022", "原端不存在:{}"),
FEATURE_CODE_OVER_LENGTH("100023", "组件code不能超过100个字符:{}"),
MAX_PAGE_SIZE_ERROR("100024", "最大查询");
MAX_PAGE_SIZE_ERROR("100024", "最大PAGE_SIZE不能超过1000");
private String errorCode;

View File

@ -1,18 +1,25 @@
package cn.axzo.tyr.server.controller.v2;
import cn.axzo.foundation.exception.Axssert;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.foundation.result.ApiResult;
import cn.axzo.tyr.client.common.enums.FeatureResourceType;
import cn.axzo.tyr.client.model.enums.RolePermissionTagEnum;
import cn.axzo.tyr.client.model.res.SaasRoleRes;
import cn.axzo.tyr.client.model.roleuser.req.ListRoleUserRelationParam;
import cn.axzo.tyr.feign.api.RoleApi;
import cn.axzo.tyr.feign.enums.RoleTypeEnum;
import cn.axzo.tyr.feign.req.PageRoleReq;
import cn.axzo.tyr.feign.resp.FeatureResourceRelationResp;
import cn.axzo.tyr.feign.resp.RoleFeatureResourceResp;
import cn.axzo.tyr.feign.resp.RoleGroupResp;
import cn.axzo.tyr.feign.resp.RoleResp;
import cn.axzo.tyr.feign.resp.RoleUserResp;
import cn.axzo.tyr.server.service.RoleService;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
@ -21,6 +28,9 @@ import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
import static cn.axzo.tyr.server.common.constants.PermissionConstant.MAX_PAGE_SIZE;
import static cn.axzo.tyr.server.config.exception.BizResultCode.MAX_PAGE_SIZE_ERROR;
@Slf4j
@RestController
public class RoleController implements RoleApi {
@ -79,34 +89,118 @@ public class RoleController implements RoleApi {
result.setProductUnitTypes(req.getCooperateShipTypes());
result.setNeedPermission(req.getNeedFeatureResources());
result.setNeedPermissionRelation(req.getNeedFeatureResourceRelation());
result.setFeatureResourceTypes(Optional.ofNullable(req.getFeatureResourceTypes())
.map(e -> e.stream()
.map(f -> FeatureResourceType.valueOf(f.name()))
.collect(Collectors.toList()))
.orElse(null));
return result;
}
private void assembleRoleFeatureResource(SaasRoleRes saasRoleRes, RoleResp roleResp) {
if (CollectionUtils.isEmpty(saasRoleRes.getSaasPermissions())) {
return;
}
roleResp.setRoleFeatureResources(saasRoleRes.getSaasPermissions().stream()
.map(permission -> {
RoleFeatureResourceResp roleFeatureResourceResp = RoleFeatureResourceResp.builder().build();
BeanUtils.copyProperties(permission, roleFeatureResourceResp);
roleFeatureResourceResp.setTags(Optional.ofNullable(permission.getTags())
.map(tags -> tags.stream()
.map(RolePermissionTagEnum::getDesc)
.collect(Collectors.toSet())
)
.orElse(null));
return roleFeatureResourceResp;
})
.collect(Collectors.toList()));
}
private void assembleRoleGroup(SaasRoleRes saasRoleRes, RoleResp roleResp) {
if (CollectionUtils.isEmpty(saasRoleRes.getSaasRoleGroups())) {
return;
}
roleResp.setRoleGroup(saasRoleRes.getSaasRoleGroups().stream()
.map(roleGroup -> {
RoleGroupResp roleGroupResp = RoleGroupResp.builder().build();
BeanUtils.copyProperties(roleGroup, roleGroupResp);
if (StringUtils.isNotBlank(roleGroup.getWorkspaceTypeCode())) {
roleGroupResp.setWorkspaceType(Integer.valueOf(roleGroup.getWorkspaceTypeCode()));
}
// 因为角色分组页面可以选择多个会逗号隔开但是是不允许这样的数据出现的为了兼容不报错如果有逗号就取第一个返回
if (StringUtils.isNotBlank(roleGroup.getOuTypeCode())) {
if (roleGroup.getOuTypeCode().contains(",")) {
roleGroupResp.setCooperateShipType(Integer.valueOf(roleGroup.getOuTypeCode().split(",")[0]));
} else {
roleGroupResp.setCooperateShipType(Integer.valueOf(roleGroup.getOuTypeCode()));
}
}
return roleGroupResp;
})
.findFirst()
.orElse(null));
}
private void assembleRoleUser(SaasRoleRes saasRoleRes, RoleResp roleResp) {
if (CollectionUtils.isEmpty(saasRoleRes.getSaasRoleUsers())) {
return;
}
roleResp.setRoleUsers(saasRoleRes.getSaasRoleUsers().stream()
.map(saasRoleUser -> {
RoleUserResp roleUserResp = RoleUserResp.builder().build();
BeanUtils.copyProperties(saasRoleUser, roleUserResp);
return roleUserResp;
})
.collect(Collectors.toList()));
}
private void assembleFeatureResourceRelation(SaasRoleRes saasRoleRes, RoleResp roleResp) {
if (CollectionUtils.isEmpty(saasRoleRes.getPermissionRelations())) {
return;
}
roleResp.setFeatureResourceRelations(saasRoleRes.getPermissionRelations().stream()
.map(saasPermissionRelationRes -> {
FeatureResourceRelationResp featureResourceRelationResp = FeatureResourceRelationResp.builder().build();
BeanUtils.copyProperties(saasPermissionRelationRes, featureResourceRelationResp);
featureResourceRelationResp.setTags(Optional.ofNullable(saasPermissionRelationRes.getTags())
.map(tags -> tags.stream()
.map(RolePermissionTagEnum::getDesc)
.collect(Collectors.toSet())
)
.orElse(null));
return featureResourceRelationResp;
})
.collect(Collectors.toList()));
}
private RoleResp from(SaasRoleRes saasRoleRes) {
RoleResp result = RoleResp.builder().build();
BeanUtils.copyProperties(saasRoleRes, result);
if (Objects.nonNull(saasRoleRes.getSaasPermissions())) {
result.setRoleFeatureResources(saasRoleRes.getSaasPermissions().stream()
.map(permission -> {
RoleFeatureResourceResp roleFeatureResourceResp = RoleFeatureResourceResp.builder().build();
BeanUtils.copyProperties(permission, roleFeatureResourceResp);
// roleFeatureResourceResp.setUniCode();
roleFeatureResourceResp.setTags(Optional.ofNullable(permission.getTags())
.map(tags -> tags.stream()
.map(RolePermissionTagEnum::getDesc)
.collect(Collectors.toSet())
)
.orElse(null));
return roleFeatureResourceResp;
})
.collect(Collectors.toList()));
}
assembleRoleFeatureResource(saasRoleRes, result);
assembleRoleGroup(saasRoleRes, result);
assembleRoleUser(saasRoleRes, result);
assembleFeatureResourceRelation(saasRoleRes, result);
return result;
}
private void check(PageRoleReq req) {
if (Objects.nonNull(req.getPageSize())) {
Axssert.check(MAX_PAGE_SIZE >= req.getPageSize() , MAX_PAGE_SIZE_ERROR);
}
}
}

View File

@ -19,6 +19,7 @@ import java.util.List;
*/
public interface SaasRoleGroupService extends IService<SaasRoleGroup> {
@Deprecated
List<SaasRoleGroupVO> getList(QuerySaasRoleGroupReq req);
/**
@ -26,6 +27,7 @@ public interface SaasRoleGroupService extends IService<SaasRoleGroup> {
* @param req 角色分组参数
* @return 角色分组列表
*/
@Deprecated
List<SaasRoleGroupVO> getRoleGroupList(QuerySaasRoleGroupReq req);
@ -40,6 +42,7 @@ public interface SaasRoleGroupService extends IService<SaasRoleGroup> {
* @param categoryCode
* @return
*/
@Deprecated
List<SaasRoleGroupVO> listByCategoryCode(List<String> categoryCode);
/**
@ -47,6 +50,7 @@ public interface SaasRoleGroupService extends IService<SaasRoleGroup> {
* @param codes 角色组编码
* @param type 1-仅查当前code 2-对应code角色组及子级角色组 3-仅对应code角色组的子级
* **/
@Deprecated
List<SaasRoleGroup> listByCodes(List<String> codes, int type);
List<SaasRoleGroupDTO> list(ListSaasRoleGroupParam param);

View File

@ -1621,31 +1621,31 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
return Collections.emptyMap();
}
List<SaasRoleGroupRelation> roleGroupRelations = saasRoleGroupRelationDao.lambdaQuery()
.in(SaasRoleGroupRelation::getRoleId, Lists.transform(saasRoles, SaasRole::getId))
.eq(SaasRoleGroupRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value)
.list();
List<SaasRoleGroupRelation> roleGroupRelations = saasRoleGroupRelationService.list(SaasRoleGroupRelationService.ListSaasRoleGroupRelationParam.builder()
.roleIds(Lists.transform(saasRoles, SaasRole::getId))
.build());
if (CollectionUtils.isEmpty(roleGroupRelations)) {
return Collections.emptyMap();
}
Map<Long, SaasRoleGroup> saasRoleGroups = saasRoleGroupDao.query(QuerySaasRoleGroupReq.builder()
.ids(Lists.transform(roleGroupRelations, SaasRoleGroupRelation::getSaasRoleGroupId))
.build())
Map<Long, SaasRoleGroupDTO> saasRoleGroups = saasRoleGroupService.list(ListSaasRoleGroupParam.builder()
.ids(roleGroupRelations.stream()
.map(SaasRoleGroupRelation::getSaasRoleGroupId)
.collect(Collectors.toSet()))
.build())
.stream()
.collect(Collectors.toMap(SaasRoleGroup::getId, Function.identity()));
.collect(Collectors.toMap(SaasRoleGroupDTO::getId, Function.identity()));
return roleGroupRelations.stream()
.filter(e -> saasRoleGroups.get(e.getSaasRoleGroupId()) != null)
.collect(Collectors.groupingBy(SaasRoleGroupRelation::getRoleId,
Collectors.mapping(e -> {
SaasRoleGroup saasRoleGroup = saasRoleGroups.get(e.getSaasRoleGroupId());
SaasRoleGroupDTO saasRoleGroup = saasRoleGroups.get(e.getSaasRoleGroupId());
return toRoleGroupRes(saasRoleGroup);
}, Collectors.toList())));
}
private SaasRoleGroupRes toRoleGroupRes(SaasRoleGroup saasRoleGroup) {
private SaasRoleGroupRes toRoleGroupRes(SaasRoleGroupDTO saasRoleGroup) {
if (saasRoleGroup == null) {
return null;
}

View File

@ -1,26 +1,44 @@
package cn.axzo.tyr.server.controller.v2;
import cn.axzo.apollo.core.web.Results;
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.basics.profiles.dto.basic.PersonProfileDto;
import cn.axzo.foundation.exception.BusinessException;
import cn.axzo.tyr.base.BaseTest;
import cn.axzo.tyr.base.MysqlDataLoader;
import cn.axzo.tyr.client.model.enums.RolePermissionTagEnum;
import cn.axzo.tyr.feign.enums.FeatureResourceTypeEnum;
import cn.axzo.tyr.feign.enums.RoleTypeEnum;
import cn.axzo.tyr.feign.req.PageRoleReq;
import cn.axzo.tyr.feign.resp.RoleResp;
import cn.azxo.framework.common.model.CommonResponse;
import com.google.common.collect.Sets;
import org.assertj.core.util.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.time.LocalDateTime;
import java.time.ZoneId;
import java.util.List;
import static cn.axzo.tyr.server.config.exception.BizResultCode.MAX_PAGE_SIZE_ERROR;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
class RoleControllerTest extends BaseTest {
@Autowired
private MysqlDataLoader mysqlDataLoader;
@Autowired
private RoleController roleController;
@Autowired
private UserProfileServiceApi userProfileServiceApi;
@BeforeEach
@Override
@ -29,11 +47,23 @@ class RoleControllerTest extends BaseTest {
mysqlDataLoader.loadFromClassName(getClass().getSimpleName());
MockitoAnnotations.initMocks(this);
}
@Test
void list() {
void page() {
BusinessException businessException = assertThrows(BusinessException.class, ()->{
roleController.page(PageRoleReq.builder()
.pageSize(1001)
.build())
.getData()
.getData();
});
assertEquals(businessException.getErrorCode(), MAX_PAGE_SIZE_ERROR.getErrorCode());
List<RoleResp> roleResps = roleController.page(PageRoleReq.builder()
.roleIds(Sets.newHashSet(24425L))
.build())
.roleIds(Sets.newHashSet(24425L))
.pageSize(1000)
.build())
.getData()
.getData();
Assertions.assertEquals(roleResps.size(), 1);
@ -129,32 +159,136 @@ class RoleControllerTest extends BaseTest {
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(0).getId(), 153L);
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(0).getUniCode(), "oms:menu_page");
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(0).getTags().size(), 1);
Assertions.assertTrue(roleResps.get(0).getRoleFeatureResources().get(0).getTags().contains(RolePermissionTagEnum.JOINED));
Assertions.assertTrue(roleResps.get(0).getRoleFeatureResources().get(0).getTags().contains(RolePermissionTagEnum.JOINED.getDesc()));
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(0).getTerminal(), "NT_OMS_WEB");
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(1).getId(), 466L);
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(1).getUniCode(), "oms:imConfig_page");
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(1).getTags().size(), 1);
Assertions.assertTrue(roleResps.get(0).getRoleFeatureResources().get(1).getTags().contains(RolePermissionTagEnum.JOINED));
Assertions.assertTrue(roleResps.get(0).getRoleFeatureResources().get(1).getTags().contains(RolePermissionTagEnum.JOINED.getDesc()));
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(1).getTerminal(), "NT_OMS_WEB");
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(2).getId(), 467L);
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(2).getUniCode(), "oms:im_robot_page");
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(2).getTags().size(), 1);
Assertions.assertTrue(roleResps.get(0).getRoleFeatureResources().get(2).getTags().contains(RolePermissionTagEnum.JOINED));
Assertions.assertTrue(roleResps.get(0).getRoleFeatureResources().get(2).getTags().contains(RolePermissionTagEnum.JOINED.getDesc()));
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(2).getTerminal(), "NT_OMS_WEB");
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(3).getId(), 469L);
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(3).getUniCode(), "oms:msgPush_page");
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(3).getTags().size(), 1);
Assertions.assertTrue(roleResps.get(0).getRoleFeatureResources().get(3).getTags().contains(RolePermissionTagEnum.JOINED));
Assertions.assertTrue(roleResps.get(0).getRoleFeatureResources().get(3).getTags().contains(RolePermissionTagEnum.JOINED.getDesc()));
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(3).getTerminal(), "NT_OMS_WEB");
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(4).getId(), 693L);
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(4).getUniCode(), "oms:detail_backPay_btn");
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(4).getTags().size(), 1);
Assertions.assertTrue(roleResps.get(0).getRoleFeatureResources().get(4).getTags().contains(RolePermissionTagEnum.JOINED));
Assertions.assertTrue(roleResps.get(0).getRoleFeatureResources().get(4).getTags().contains(RolePermissionTagEnum.JOINED.getDesc()));
Assertions.assertEquals(roleResps.get(0).getRoleFeatureResources().get(4).getTerminal(), "NT_OMS_WEB");
roleResps = roleController.page(PageRoleReq.builder()
.roleIds(Sets.newHashSet(24425L))
.needRoleGroup(true)
.build())
.getData()
.getData();
Assertions.assertEquals(roleResps.size(), 1);
Assertions.assertNotNull(roleResps.get(0).getRoleGroup());
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getId(), 6);
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getWorkspaceType(), 6);
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getCooperateShipType(), 6);
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getName(), "研发中心");
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getWorkspaceId(), -1);
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getOuId(), -1);
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getParentId(), 0);
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getPath(), "6,");
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getSort(), 3);
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getCode(), "A1");
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getCategoryCode(), "FF");
Assertions.assertEquals(LocalDateTime.ofInstant(roleResps.get(0).getRoleGroup().getCreateAt().toInstant(), ZoneId.systemDefault()),
LocalDateTime.of(2023, 9, 19, 14, 31, 19));
Assertions.assertEquals(LocalDateTime.ofInstant(roleResps.get(0).getRoleGroup().getUpdateAt().toInstant(), ZoneId.systemDefault()),
LocalDateTime.of(2024, 5, 29, 9, 33, 24));
roleResps = roleController.page(PageRoleReq.builder()
.roleIds(Sets.newHashSet(25324L))
.needRoleGroup(true)
.build())
.getData()
.getData();
Assertions.assertEquals(roleResps.size(), 1);
Assertions.assertNotNull(roleResps.get(0).getRoleGroup());
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getId(), 13);
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getWorkspaceType(), 2);
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getCooperateShipType(), 5);
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getName(), "专业分包");
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getWorkspaceId(), -1);
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getOuId(), -1);
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getParentId(), 0);
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getPath(), "13,");
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getSort(), 1);
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getCode(), "A2");
Assertions.assertEquals(roleResps.get(0).getRoleGroup().getCategoryCode(), "");
Assertions.assertEquals(LocalDateTime.ofInstant(roleResps.get(0).getRoleGroup().getCreateAt().toInstant(), ZoneId.systemDefault()),
LocalDateTime.of(2023, 10, 23, 17, 49, 59));
Assertions.assertEquals(LocalDateTime.ofInstant(roleResps.get(0).getRoleGroup().getUpdateAt().toInstant(), ZoneId.systemDefault()),
LocalDateTime.of(2024, 8, 15, 18, 39, 13));
List<PersonProfileDto> personProfileDtos = Lists.newArrayList();
PersonProfileDto personProfileDto = new PersonProfileDto();
personProfileDto.setId(24511L);
personProfileDto.setRealName("测试名字");
personProfileDtos.add(personProfileDto);
Mockito.when(userProfileServiceApi.postPersonProfiles(Mockito.any()))
.thenReturn(CommonResponse.success(personProfileDtos));
roleResps = roleController.page(PageRoleReq.builder()
.roleIds(Sets.newHashSet(24425L))
.needRoleUser(true)
.build())
.getData()
.getData();
Assertions.assertEquals(roleResps.size(), 1);
Assertions.assertEquals(roleResps.get(0).getRoleUsers().size(), 1);
Assertions.assertEquals(roleResps.get(0).getRoleUsers().get(0).getPersonId(), 24511L);
Assertions.assertEquals(roleResps.get(0).getRoleUsers().get(0).getIdentityId(), 28802L);
Assertions.assertEquals(roleResps.get(0).getRoleUsers().get(0).getIdentityType(), 3);
Assertions.assertEquals(roleResps.get(0).getRoleUsers().get(0).getOuId(), 4L);
Assertions.assertEquals(roleResps.get(0).getRoleUsers().get(0).getWorkspaceId(), 3L);
Assertions.assertEquals(roleResps.get(0).getRoleUsers().get(0).getRealName(), "测试名字");
roleResps = roleController.page(PageRoleReq.builder()
.roleIds(Sets.newHashSet(24425L))
.needFeatureResourceRelation(true)
.build())
.getData()
.getData();
Assertions.assertEquals(roleResps.size(), 1);
Assertions.assertEquals(roleResps.get(0).getFeatureResourceRelations().size(), 10);
Assertions.assertEquals(roleResps.get(0).getFeatureResourceRelations().get(0).getFeatureId(), 153L);
Assertions.assertEquals(roleResps.get(0).getFeatureResourceRelations().get(0).getType(), 1);
Assertions.assertEquals(roleResps.get(0).getFeatureResourceRelations().get(0).getFeatureType(), 2);
Assertions.assertEquals(roleResps.get(0).getFeatureResourceRelations().get(0).getTags().size(), 1);
Assertions.assertTrue(roleResps.get(0).getFeatureResourceRelations().get(0).getTags().contains(RolePermissionTagEnum.JOINED.getDesc()));
roleResps = roleController.page(PageRoleReq.builder()
.roleIds(Sets.newHashSet(24425L))
.needFeatureResourceRelation(true)
.featureResourceTypes(Lists.newArrayList(FeatureResourceTypeEnum.PAGE))
.build())
.getData()
.getData();
Assertions.assertEquals(roleResps.size(), 1);
Assertions.assertEquals(roleResps.get(0).getFeatureResourceRelations().size(), 7);
roleResps = roleController.page(PageRoleReq.builder()
.needPresetRole(true)
.build())
.getData()
.getData();
Assertions.assertEquals(roleResps.size(), 4);
}
}

View File

@ -10,10 +10,10 @@ 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 (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)
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_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 (6, '6', '6', '研发中心', -1, -1, 0, 3, 'A1', 'FF', 0, '2023-09-19 14:31:19', '2024-05-29 09:33:24', '6,');
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 (13, '2', '5,3,4', '专业分包', -1, -1, 0, 1, 'A2', '', 0, '2023-10-23 17:49:59', '2024-08-15 18:39:13', '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 (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);