feat(REQ-2545): 增加根据featureResourceId查询featureCode的接口

This commit is contained in:
李昆鹏 2024-07-08 15:17:50 +08:00
parent 6c50de8e93
commit 686c638dd5
4 changed files with 44 additions and 8 deletions

View File

@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
/**
* 功能资源API接口
@ -59,4 +60,8 @@ public interface FeatureResourceApi {
/** 从基准环境查询功能资源树 **/
@PostMapping("/api/featureResource/getBaseTree")
ApiResult<List<FeatureResourceTreeNode>> getBaseTree(@RequestBody @Valid GetFeatureResourceTreeReq req);
/** 通过featureResourceIds查询对应的featureCode **/
@PostMapping("/api/featureResource/listFeatureCodeByFeatureResourceIds")
ApiResult<Map<Long, String>> listFeatureCodeByFeatureResourceIds(@RequestParam List<Long> featureResourceIds);
}

View File

@ -15,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
* 功能资源接口实现
@ -85,4 +86,9 @@ public class FeatureResourceController implements FeatureResourceApi {
public ApiResult<List<FeatureResourceTreeNode>> getBaseTree(GetFeatureResourceTreeReq req) {
return ApiResult.ok(featureResourceSyncService.getBaseTree(req));
}
@Override
public ApiResult<Map<Long, String>> listFeatureCodeByFeatureResourceIds(List<Long> featureResourceIds) {
return ApiResult.ok(featureResourceSyncService.listFeatureCodeByFeatureResourceIds(featureResourceIds));
}
}

View File

@ -5,6 +5,7 @@ import cn.axzo.tyr.client.model.req.ResourceSyncReq;
import cn.axzo.tyr.client.model.res.FeatureResourceTreeNode;
import java.util.List;
import java.util.Map;
/**
* 功能资源同步服务
@ -20,4 +21,6 @@ public interface FeatureResourceSyncService {
void syncFromBase(ResourceSyncReq req);
List<FeatureResourceTreeNode> getBaseTree(GetFeatureResourceTreeReq req);
Map<Long, String> listFeatureCodeByFeatureResourceIds(List<Long> featureResourceIds);
}

View File

@ -9,18 +9,13 @@ import cn.axzo.tyr.client.model.req.GetFeatureResourceTreeReq;
import cn.axzo.tyr.client.model.req.ResourceSyncReq;
import cn.axzo.tyr.client.model.res.FeatureResourceTreeNode;
import cn.axzo.tyr.server.inner.feign.BaseFeatureResourceApi;
import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao;
import cn.axzo.tyr.server.repository.dao.SaasPgroupPermissionRelationDao;
import cn.axzo.tyr.server.repository.dao.SaasPgroupRoleRelationDao;
import cn.axzo.tyr.server.repository.dao.SaasRoleDao;
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation;
import cn.axzo.tyr.server.repository.entity.SaasPgroupRoleRelation;
import cn.axzo.tyr.server.repository.entity.SaasRole;
import cn.axzo.tyr.server.repository.dao.*;
import cn.axzo.tyr.server.repository.entity.*;
import cn.axzo.tyr.server.service.FeatureResourceSyncService;
import cn.axzo.tyr.server.util.RpcInternalUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
@ -33,6 +28,7 @@ import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@ -59,6 +55,8 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
private final SaasPgroupPermissionRelationDao saasPgroupPermissionRelationDao;
private final SaasPageElementFeatureResourceRelationDao saasPageElementFeatureResourceRelationDao;
@Qualifier("asyncExecutor")
@Autowired
private ExecutorService asyncExecutor;
@ -128,6 +126,30 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
"get resource tree from base env", req).getData();
}
@Override
public Map<Long, String> listFeatureCodeByFeatureResourceIds(List<Long> featureResourceIds) {
if (CollectionUtils.isEmpty(featureResourceIds)) {
return Maps.newHashMap();
}
List<SaasFeatureResource> resources = featureResourceDao.lambdaQuery()
.in(SaasFeatureResource::getId, featureResourceIds)
.list();
if (CollectionUtils.isEmpty(resources)) {
return Maps.newHashMap();
}
Map<String, SaasPageElementFeatureResourceRelation> relationMap = saasPageElementFeatureResourceRelationDao.listByUniCodeAndTerminal(resources.stream().map(SaasFeatureResource::getUniCode).distinct().collect(Collectors.toList()),
resources.get(0).getTerminal(), null).stream().collect(Collectors.toMap(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode, Function.identity(), (v1, v2) -> v1));
Map<Long, String> featureResourceIdCodeMap = Maps.newHashMap();
resources.forEach(e -> {
SaasPageElementFeatureResourceRelation relation = relationMap.get(e.getUniCode());
if (Objects.nonNull(relation)) {
featureResourceIdCodeMap.put(e.getId(), relation.getPageElementCode());
}
});
return featureResourceIdCodeMap;
}
private void syncResourceProcess(List<FeatureResourceTreeNode> syncList, Map<Long, String> codeCache, Long operatorId) {
for (FeatureResourceTreeNode treeNode : syncList) {