feat:(REQ-2545) 配置权限时查询权限树根据应用范围来过滤
This commit is contained in:
parent
b118e80ed1
commit
7f735f2b4f
@ -27,4 +27,10 @@ public class GetFeatureResourceTreeReq {
|
||||
|
||||
/** feature类型列表 **/
|
||||
private List<Integer> featureTypes;
|
||||
|
||||
/**
|
||||
* 应用范围(原租户类型):1:企业租户 2;项目租户
|
||||
* 只有页面和应用会配置应用范围
|
||||
*/
|
||||
private Long workspaceType;
|
||||
}
|
||||
|
||||
@ -35,7 +35,8 @@ public class SaasFeatureResourceDao extends ServiceImpl<SaasFeatureResourceMappe
|
||||
return this.lambdaQuery().select(SaasFeatureResource::getId, SaasFeatureResource::getFeatureCode,
|
||||
SaasFeatureResource::getFeatureName, SaasFeatureResource::getFeatureType,
|
||||
SaasFeatureResource::getTerminal, SaasFeatureResource::getParentId,
|
||||
SaasFeatureResource::getDisplayOrder)
|
||||
SaasFeatureResource::getDisplayOrder,
|
||||
SaasFeatureResource::getWorkspaceType)
|
||||
.eq(SaasFeatureResource::getIsDelete, TableIsDeleteEnum.NORMAL.value)
|
||||
.in(CollectionUtils.isNotEmpty(req.getTerminals()), SaasFeatureResource::getTerminal, req.getTerminals())
|
||||
.eq(Objects.nonNull(req.getStatus()), SaasFeatureResource::getStatus, req.getStatus())
|
||||
|
||||
@ -28,6 +28,11 @@ public class SaasFeatureResource extends BaseEntity<SaasFeature> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 数据库默认的workspaceType
|
||||
*/
|
||||
public static final Long DEFAULT_WORKSPACE_TYPE = 0L;
|
||||
|
||||
|
||||
/**
|
||||
* 资源编码-权限码
|
||||
|
||||
@ -27,7 +27,6 @@ import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.nacos.common.utils.UuidUtils;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
@ -44,6 +43,8 @@ import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.axzo.tyr.server.repository.entity.SaasFeatureResource.DEFAULT_WORKSPACE_TYPE;
|
||||
|
||||
/**
|
||||
* 功能资源服务实现
|
||||
* 功能资源树查询增加了redis缓存,在新增、修改该表时,记得清空缓存,
|
||||
@ -119,6 +120,9 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic
|
||||
}
|
||||
|
||||
List<FeatureResourceTreeNode> treeList = TreeUtil.buildTree(saasFeatureResources.stream()
|
||||
// 因为非OMS端可能会根据应用范围来查询菜单资源,现在只有分组和页面有配置应用范围
|
||||
// 非分组和页面的菜单资源应该都能看到,所以只有有配置应用范围的菜单资源才进行过滤
|
||||
.filter(e -> filterWorkspaceType(req, e))
|
||||
.map(this::featureResource2Node)
|
||||
.sorted(Comparator.comparing(FeatureResourceDTO::getDisplayOrder))
|
||||
.collect(Collectors.toList()))
|
||||
@ -136,6 +140,19 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic
|
||||
return resultNode;
|
||||
}
|
||||
|
||||
private boolean filterWorkspaceType(GetFeatureResourceTreeReq req, SaasFeatureResource e) {
|
||||
if (Objects.isNull(req.getWorkspaceType())) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// 数据库默认值为0
|
||||
if (Objects.equals(e.getWorkspaceType(), DEFAULT_WORKSPACE_TYPE)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return Objects.equals(e.getWorkspaceType(), req.getWorkspaceType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public FeatureResourceTreeNode getTreeFeatureDescendant(Long featureId, Integer featureType) {
|
||||
List<SaasFeatureResource> descendants = featureResourceDao.lambdaQuery()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user