feat:(REQ-2545) 菜单树查询时,过滤掉菜单下面没有页面的权限数据
This commit is contained in:
parent
b82206fb67
commit
9ea27b3051
@ -38,9 +38,9 @@ public class TreePermissionReq {
|
||||
private List<FeatureResourceType> featureResourceTypes;
|
||||
|
||||
/**
|
||||
* 父节点id
|
||||
* 菜单节点的uniCode
|
||||
*/
|
||||
private Long parentFeatureId;
|
||||
private String uniCode;
|
||||
|
||||
/**
|
||||
* 是否需要返回权限码
|
||||
|
||||
@ -306,6 +306,8 @@ public class PermissionQueryServiceImpl implements PermissionQueryService {
|
||||
.sort(Lists.newArrayList("displayOrder__ASC"))
|
||||
.build());
|
||||
// 有可能存在资源树被删除的情况
|
||||
// 因为会存在用户只有菜单权限,下面没有节点,这种需要过滤掉
|
||||
saasFeatureResources = filterFeature(saasFeatureResources);
|
||||
if (CollectionUtils.isEmpty(saasFeatureResources)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
@ -329,6 +331,37 @@ public class PermissionQueryServiceImpl implements PermissionQueryService {
|
||||
(Function<TreePermissionResp, Boolean>) e -> Objects.equals(DISPLAY_STATUS, e.getStatus()));
|
||||
}
|
||||
|
||||
private List<SaasFeatureResourceResp> filterFeature(List<SaasFeatureResourceResp> saasFeatureResources) {
|
||||
if (CollectionUtils.isEmpty(saasFeatureResources)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
List<SaasFeatureResourceResp> excludeMenuFeatures = saasFeatureResources.stream()
|
||||
.filter(e -> Objects.equals(DISPLAY_STATUS, e.getStatus()))
|
||||
.filter(e -> !Objects.equals(FeatureResourceType.MENU.getCode(), e.getFeatureType()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (CollectionUtils.isEmpty(excludeMenuFeatures)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
// 根据页面找父级所有菜单节点
|
||||
Set<Long> excludeMenuFeatureIds = excludeMenuFeatures.stream()
|
||||
.map(e -> Lists.newArrayList(e.getPath().split(",")))
|
||||
.flatMap(Collection::stream)
|
||||
.filter(Objects::nonNull)
|
||||
.map(Long::valueOf)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
|
||||
List<SaasFeatureResourceResp> menuFeatures = saasFeatureResources.stream()
|
||||
.filter(e -> excludeMenuFeatureIds.contains(e.getId()))
|
||||
.filter(e -> Objects.equals(FeatureResourceType.MENU.getCode(), e.getFeatureType()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
excludeMenuFeatures.addAll(menuFeatures);
|
||||
return excludeMenuFeatures;
|
||||
}
|
||||
|
||||
private List<ProductFeatureRelationVO> getProductFeatureRelationByWorkspace(Set<Long> workspaceIds) {
|
||||
List<ServicePkgDetailRes> servicePkgDetailRes = RpcInternalUtil.rpcListProcessor(() -> servicePkgClient.getServicePkgDetailBySpaceId(workspaceIds),
|
||||
"查询租户的产品", workspaceIds).getData();
|
||||
@ -569,7 +602,7 @@ public class PermissionQueryServiceImpl implements PermissionQueryService {
|
||||
|
||||
List<Long> featureIds = resolveFeatureIds(treePermissionReq);
|
||||
|
||||
if (Objects.nonNull(treePermissionReq.getParentFeatureId()) && CollectionUtils.isEmpty(featureIds)) {
|
||||
if (StringUtils.isNotBlank(treePermissionReq.getUniCode()) && CollectionUtils.isEmpty(featureIds)) {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
@ -632,17 +665,12 @@ public class PermissionQueryServiceImpl implements PermissionQueryService {
|
||||
}
|
||||
|
||||
private List<Long> resolveFeatureIds(TreePermissionReq treePermissionReq) {
|
||||
if (Objects.isNull(treePermissionReq.getParentFeatureId())) {
|
||||
if (StringUtils.isBlank(treePermissionReq.getUniCode())) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
List<Integer> featureTypes = Optional.ofNullable(treePermissionReq.getFeatureResourceTypes())
|
||||
.map(e -> e.stream().map(FeatureResourceType::getCode).collect(Collectors.toList()))
|
||||
.orElse(null);
|
||||
|
||||
PageSaasFeatureResourceReq pageSaasFeatureResourceReq = PageSaasFeatureResourceReq.builder()
|
||||
.parentId(treePermissionReq.getParentFeatureId())
|
||||
.featureResourceTypes(featureTypes)
|
||||
.uniCodes(Sets.newHashSet(treePermissionReq.getUniCode()))
|
||||
.build();
|
||||
return featureResourceService.list(pageSaasFeatureResourceReq).stream()
|
||||
.map(SaasFeatureResourceResp::getId)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user