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 852cf5b3..0bc69735 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 @@ -1,6 +1,5 @@ package cn.axzo.tyr.server.service.impl; -import cn.axzo.basics.auth.vo.resp.SaasFeatureTreeResp; import cn.axzo.basics.common.BeanMapper; import cn.axzo.basics.common.util.StopWatchUtil; import cn.axzo.basics.common.util.TreeUtil; @@ -9,9 +8,11 @@ import cn.axzo.pokonyan.config.redis.RedisClient; import cn.axzo.tyr.client.common.enums.FeatureResourceAuthType; import cn.axzo.tyr.client.common.enums.FeatureResourceStatus; import cn.axzo.tyr.client.common.enums.FeatureResourceType; +import cn.axzo.tyr.client.model.req.CommonDictQueryReq; import cn.axzo.tyr.client.model.req.FeatureComponentSaveReq; import cn.axzo.tyr.client.model.req.FeatureResourceTreeSaveReq; import cn.axzo.tyr.client.model.req.GetFeatureResourceTreeReq; +import cn.axzo.tyr.client.model.res.CommonDictResp; import cn.axzo.tyr.client.model.res.FeatureResourceDTO; import cn.axzo.tyr.client.model.res.FeatureResourceTreeNode; import cn.axzo.tyr.server.model.ResourcePermission; @@ -19,6 +20,7 @@ import cn.axzo.tyr.server.model.ResourcePermissionQueryDTO; import cn.axzo.tyr.server.model.convert.SaasFeatureResourceConvert; import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao; import cn.axzo.tyr.server.repository.entity.SaasFeatureResource; +import cn.axzo.tyr.server.service.SaasCommonDictService; import cn.axzo.tyr.server.service.SaasFeatureResourceService; import cn.azxo.framework.common.utils.StringUtils; import cn.hutool.core.collection.CollectionUtil; @@ -28,9 +30,7 @@ import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; -import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -40,6 +40,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicLong; import java.util.function.Function; import java.util.stream.Collectors; @@ -56,19 +57,14 @@ import static cn.axzo.tyr.server.common.constants.CacheConstant.KEY_AUTH_FREE; @Slf4j @Service @RequiredArgsConstructor -@RefreshScope public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceService { + /** 功能资源树根节点所有端配置的scope **/ + private static final String RESOURCE_TERMINAL_SCOPE = "resource.terminal"; + private final SaasFeatureResourceDao featureResourceDao; private final SaasFeatureResourceCacheService saasFeatureResourceCacheService; - - /** - * 功能资源树根节点配置 - * key < - > TerminalInfo定义的terminal - * value < - > 端描述 - */ - @Value("#{${featureResourceTreeRootNodeMap:{'NT_CMS_WEB_GENERAL':'CMS端', 'NT_OMS_WEB':'OMS端'}}}") - private Map treeRootNodeMap; + private final SaasCommonDictService saasCommonDictService; @Override public List listNavByIds(List featureIds) { @@ -129,8 +125,15 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic @Override public List getTree(GetFeatureResourceTreeReq req) { - List rootNodes = treeRootNodeMap.entrySet().stream().map(e -> FeatureResourceTreeNode.builder() - .id(0L).terminal(e.getKey()).featureName(e.getValue()).children(Lists.newArrayList()).build()).collect(Collectors.toList()); + List commonDictResponses = saasCommonDictService.query(CommonDictQueryReq.builder().scope(RESOURCE_TERMINAL_SCOPE).build()); + if (CollectionUtils.isEmpty(commonDictResponses)) { + log.error("not config resource terminal in saas_common_dict table"); + return Collections.emptyList(); + } + + final AtomicLong rootIdIndex = new AtomicLong(0L); + List rootNodes = commonDictResponses.stream().map(e -> FeatureResourceTreeNode.builder() + .id(rootIdIndex.decrementAndGet()).terminal(e.getDictCode()).featureName(e.getDictValue()).children(Lists.newArrayList()).build()).collect(Collectors.toList()); StopWatchUtil watch = StopWatchUtil.createStarted("feature-resource-tree"); watch.start("dbQuery");