feat:(REQ-2545) 配置权限时查询权限树根据应用范围来过滤

This commit is contained in:
lilong 2024-06-19 09:50:24 +08:00
parent b118e80ed1
commit 7f735f2b4f
4 changed files with 31 additions and 2 deletions

View File

@ -27,4 +27,10 @@ public class GetFeatureResourceTreeReq {
/** feature类型列表 **/
private List<Integer> featureTypes;
/**
* 应用范围(原租户类型)1:企业租户 2;项目租户
* 只有页面和应用会配置应用范围
*/
private Long workspaceType;
}

View File

@ -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())

View File

@ -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;
/**
* 资源编码-权限码

View File

@ -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()