feat:(hotfix/20240906) 修改菜单缓存逻辑

This commit is contained in:
lilong 2024-09-11 18:24:36 +08:00
parent 10045a5588
commit 602ac65618
2 changed files with 30 additions and 8 deletions

View File

@ -1002,13 +1002,16 @@ public class PermissionQueryServiceImpl implements PermissionQueryService {
Set<Long> adminFeatureIds = resolveAdminRole(productFeatureSources, saasRole);
Set<Long> notAuthFeatureIds = resolveNotAuthFeatureIds(productFeatureSources, authFreeFeatureIds);
List<RoleSaasFeatureResourceCacheService.SaasFeatureResourceDTO> roleFeatureResources = roleFeatureResourceMap.get(saasRole.getId()).stream()
List<RoleSaasFeatureResourceCacheService.SaasFeatureResourceDTO> roleFeatureResources = Optional.ofNullable(roleFeatureResourceMap.get(saasRole.getId()))
.map(role -> role.stream()
.filter(e -> StringUtils.isBlank(treePermissionReq.getTerminal())
|| Objects.equals(e.getTerminal(), treePermissionReq.getTerminal()))
.filter(e -> CollectionUtils.isEmpty(featureTypes) || featureTypes.contains(e.getFeatureType()))
.collect(Collectors.toList());
.collect(Collectors.toList()))
.orElseGet(Lists::newArrayList);
Set<Long> normalFeatureIds = resolveNormalRole(productFeatureSources, saasRole, roleFeatureResources);
Set<Long> normalFeatureIds = resolveNormalRole(productFeatureSources, saasRole, roleFeatureResources, roleFeatureResourceMap);
Set<Long> result = Sets.newHashSet();
result.addAll(adminFeatureIds);
@ -1039,7 +1042,12 @@ public class PermissionQueryServiceImpl implements PermissionQueryService {
private Set<Long> resolveNormalRole(List<ProductSaasFeatureResourceCacheService.FeatureResourceDTO> workspaceProduct,
SaasRoleUserV2DTO.SaasRole saasRole,
List<RoleSaasFeatureResourceCacheService.SaasFeatureResourceDTO> roleFeatureResources) {
List<RoleSaasFeatureResourceCacheService.SaasFeatureResourceDTO> roleFeatureResources,
Map<Long, List<RoleSaasFeatureResourceCacheService.SaasFeatureResourceDTO>> roleFeatureResourceMap) {
if (RoleTypeEnum.isAdmin(saasRole.getRoleType())) {
return Collections.emptySet();
}
if (CollectionUtils.isEmpty(roleFeatureResources)) {
return Collections.emptySet();

View File

@ -114,6 +114,10 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
private final SaasFeatureDao saasFeatureDao;
private static final String TARGET_TYPE = "saasFeatureResourceId";
/**
* 分组这些菜单节点没有版本号默认为0方便权限过滤
*/
private static final int DEFAULT_VERSION = 0;
private LoadingCache<String, Optional<List<SaasFeatureResourceCache>>> featureResourceCache = CacheBuilder.newBuilder()
.expireAfterWrite(1, TimeUnit.DAYS)
@ -851,6 +855,7 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
.builder()
.featureId(e.getId())
.notAuth(DelegatedType.notAuth(e.getDelegatedType()))
.parentIds(e.splitPath())
.build(), Collectors.toList())));
List<SaasFeatureResourceDTO> allFeatureResources = Lists.newArrayList();
@ -872,6 +877,15 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
.builder()
.featureId(e.getId())
.notAuth(SaasFeatureResource.AuthType.isAllRole(e.getAuthType()))
.parentIds(e.resolvePath())
.uniCode(e.getUniCode())
.status(e.getStatus())
.version(Optional.ofNullable(e.getSaasPageElements())
.map(pageElement -> pageElement.stream()
.findFirst()
.map(PageElementResp::getVersion)
.orElse(DEFAULT_VERSION))
.orElse(DEFAULT_VERSION))
.build(), Collectors.toList())))
.entrySet().stream()
.map(e -> SaasFeatureResourceDTO.builder()