diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/permission/PermissionPointTreeQueryReq.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/permission/PermissionPointTreeQueryReq.java index 978a9d01..28ed8ce6 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/permission/PermissionPointTreeQueryReq.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/permission/PermissionPointTreeQueryReq.java @@ -3,6 +3,7 @@ package cn.axzo.tyr.client.model.permission; import lombok.Data; import java.util.List; +import java.util.Set; /** * 权限点树形查询请求参数 @@ -27,7 +28,7 @@ public class PermissionPointTreeQueryReq { private List terminalList; /** 权限点ID列表 **/ - private List ids; + private Set ids; /** 权限点terminal对应workspaceType **/ private List workspaceType; diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionPointServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionPointServiceImpl.java index 001fe90f..2078213c 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionPointServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionPointServiceImpl.java @@ -140,7 +140,8 @@ public class PermissionPointServiceImpl implements PermissionPointService { private List filterTreeNode(PermissionPointTreeQueryReq request, List treeList) { //过滤条件 boolean needFilter = StrUtil.isNotBlank(request.getKeyword()) - || request.getDelegateType() != 0; + || request.getDelegateType() != 0 + || CollectionUtil.isNotEmpty(request.getIds()); if (needFilter) { return treeList.stream().filter(x -> this.recursionFilter(request, x)).collect(Collectors.toList()); @@ -149,14 +150,17 @@ public class PermissionPointServiceImpl implements PermissionPointService { } private boolean recursionFilter(PermissionPointTreeQueryReq request, PermissionPointTreeNode node) { - + // 过滤参数为空时 认为匹配成功 //条件匹配 - 关键字 boolean matchKeyword = request.getKeyword() == null || node.getPermissionName().contains(request.getKeyword()); //条件匹配 - 授权策略类型 boolean matchDelegateType = request.getDelegateType() == 0 || Objects.equals(request.getDelegateType(), node.getDelegatedType()); - if (matchKeyword && matchDelegateType) { + //条件匹配 - ID + boolean matchId = CollectionUtil.isEmpty(request.getIds()) || request.getIds().contains(node.getPermissionPointId()); + + if (matchKeyword && matchDelegateType && matchId) { //如果匹配直接返回,否则过滤子节点 return true; }