feat:(REQ-2545) 菜单树查询时,过滤掉菜单下面没有页面的权限数据
This commit is contained in:
parent
b82206fb67
commit
9ea27b3051
@ -38,9 +38,9 @@ public class TreePermissionReq {
|
|||||||
private List<FeatureResourceType> featureResourceTypes;
|
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"))
|
.sort(Lists.newArrayList("displayOrder__ASC"))
|
||||||
.build());
|
.build());
|
||||||
// 有可能存在资源树被删除的情况
|
// 有可能存在资源树被删除的情况
|
||||||
|
// 因为会存在用户只有菜单权限,下面没有节点,这种需要过滤掉
|
||||||
|
saasFeatureResources = filterFeature(saasFeatureResources);
|
||||||
if (CollectionUtils.isEmpty(saasFeatureResources)) {
|
if (CollectionUtils.isEmpty(saasFeatureResources)) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
@ -329,6 +331,37 @@ public class PermissionQueryServiceImpl implements PermissionQueryService {
|
|||||||
(Function<TreePermissionResp, Boolean>) e -> Objects.equals(DISPLAY_STATUS, e.getStatus()));
|
(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) {
|
private List<ProductFeatureRelationVO> getProductFeatureRelationByWorkspace(Set<Long> workspaceIds) {
|
||||||
List<ServicePkgDetailRes> servicePkgDetailRes = RpcInternalUtil.rpcListProcessor(() -> servicePkgClient.getServicePkgDetailBySpaceId(workspaceIds),
|
List<ServicePkgDetailRes> servicePkgDetailRes = RpcInternalUtil.rpcListProcessor(() -> servicePkgClient.getServicePkgDetailBySpaceId(workspaceIds),
|
||||||
"查询租户的产品", workspaceIds).getData();
|
"查询租户的产品", workspaceIds).getData();
|
||||||
@ -569,7 +602,7 @@ public class PermissionQueryServiceImpl implements PermissionQueryService {
|
|||||||
|
|
||||||
List<Long> featureIds = resolveFeatureIds(treePermissionReq);
|
List<Long> featureIds = resolveFeatureIds(treePermissionReq);
|
||||||
|
|
||||||
if (Objects.nonNull(treePermissionReq.getParentFeatureId()) && CollectionUtils.isEmpty(featureIds)) {
|
if (StringUtils.isNotBlank(treePermissionReq.getUniCode()) && CollectionUtils.isEmpty(featureIds)) {
|
||||||
return Collections.emptySet();
|
return Collections.emptySet();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -632,17 +665,12 @@ public class PermissionQueryServiceImpl implements PermissionQueryService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private List<Long> resolveFeatureIds(TreePermissionReq treePermissionReq) {
|
private List<Long> resolveFeatureIds(TreePermissionReq treePermissionReq) {
|
||||||
if (Objects.isNull(treePermissionReq.getParentFeatureId())) {
|
if (StringUtils.isBlank(treePermissionReq.getUniCode())) {
|
||||||
return Collections.emptyList();
|
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()
|
PageSaasFeatureResourceReq pageSaasFeatureResourceReq = PageSaasFeatureResourceReq.builder()
|
||||||
.parentId(treePermissionReq.getParentFeatureId())
|
.uniCodes(Sets.newHashSet(treePermissionReq.getUniCode()))
|
||||||
.featureResourceTypes(featureTypes)
|
|
||||||
.build();
|
.build();
|
||||||
return featureResourceService.list(pageSaasFeatureResourceReq).stream()
|
return featureResourceService.list(pageSaasFeatureResourceReq).stream()
|
||||||
.map(SaasFeatureResourceResp::getId)
|
.map(SaasFeatureResourceResp::getId)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user