From 346dab82473987455170818ace74b0b1397c2176 Mon Sep 17 00:00:00 2001 From: zhansihu Date: Mon, 15 Apr 2024 23:06:57 +0800 Subject: [PATCH] =?UTF-8?q?feat(2227-permissionQuery):=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=85=8D=E6=8E=88=E6=9D=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/PermissionQueryServiceImpl.java | 9 ++++++++- .../service/impl/SaasFeatureResourceServiceImpl.java | 11 ++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionQueryServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionQueryServiceImpl.java index 863ff70c..225b04ea 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionQueryServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionQueryServiceImpl.java @@ -6,6 +6,7 @@ import cn.axzo.basics.common.util.NumberUtil; import cn.axzo.basics.common.util.TreeUtil; import cn.axzo.framework.auth.domain.TerminalInfo; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; +import cn.axzo.tyr.client.common.enums.FeatureResourceAuthType; import cn.axzo.tyr.client.common.enums.RoleTypeEnum; import cn.axzo.tyr.client.model.base.WorkspaceOUPair; import cn.axzo.tyr.client.model.enums.IdentityType; @@ -235,13 +236,19 @@ public class PermissionQueryServiceImpl implements PermissionQueryService { } private List buildNormalPermission(RoleWithFeature role, List allFeatures) { + Set featureIds = featureResourceService.permissionQuery(ResourcePermissionQueryDTO.builder() + .authTypes(Collections.singletonList(FeatureResourceAuthType.ALL_ROLE.getCode())) + .build()) + .stream() + .map(ResourcePermission::getId) + .collect(Collectors.toSet()); //普通角色:角色同类型的租户产品权限已分配 且角色上已分配 + 免授权 Set roleFeatures = role.getFeatureIds(); return allFeatures.stream() .filter(f -> Objects.equals(f.getProductUnitType(), role.getProductUnitType()) || !NumberUtil.isPositiveNumber(role.getProductUnitType())) .map(WorkspaceFeatureRelation::getFeatureId) - .filter(id -> roleFeatures.contains(id) || featureResourceService.isAuthFree(id)) + .filter(id -> roleFeatures.contains(id) || featureIds.contains(id)) .collect(Collectors.toList()); } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureResourceServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureResourceServiceImpl.java index 0dc69631..7e919c7e 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureResourceServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureResourceServiceImpl.java @@ -44,6 +44,7 @@ import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; import java.util.function.Function; @@ -118,16 +119,12 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic } //load from DB - String[] featureIds = this.permissionQuery(ResourcePermissionQueryDTO.builder() + Set featureIds = this.permissionQuery(ResourcePermissionQueryDTO.builder() .authTypes(Collections.singletonList(FeatureResourceAuthType.ALL_ROLE.getCode())) .build()) .stream() - .map(ResourcePermission::getId).map(String::valueOf) - .toArray(String[]::new); - RedisClient.SetOps.sAdd(KEY_AUTH_FREE, featureIds); - RedisClient.KeyOps.expire(KEY_AUTH_FREE, 120L, TimeUnit.MINUTES); - - return RedisClient.SetOps.sIsMember(KEY_AUTH_FREE, featureId); + .map(ResourcePermission::getId).collect(Collectors.toSet()); + return false; } @Override