Merge branch 'feature/REQ-2227' of https://axzsource.com/universal/infrastructure/backend/tyr into feature/REQ-2227

This commit is contained in:
lvshaohua 2024-04-10 17:46:59 +08:00
commit f9b3d9fc39

View File

@ -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<String, String> treeRootNodeMap;
private final SaasCommonDictService saasCommonDictService;
@Override
public List<SaasFeatureResource> listNavByIds(List<Long> featureIds) {
@ -129,8 +125,15 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic
@Override
public List<FeatureResourceTreeNode> getTree(GetFeatureResourceTreeReq req) {
List<FeatureResourceTreeNode> rootNodes = treeRootNodeMap.entrySet().stream().map(e -> FeatureResourceTreeNode.builder()
.id(0L).terminal(e.getKey()).featureName(e.getValue()).children(Lists.newArrayList()).build()).collect(Collectors.toList());
List<CommonDictResp> 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<FeatureResourceTreeNode> 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");