通过名称获取角色
This commit is contained in:
parent
b24927820a
commit
a009656d5f
@ -8,6 +8,7 @@ import cn.axzo.tyr.client.model.req.QuerySaasRoleReq;
|
||||
import cn.axzo.tyr.client.model.req.RoleWithUserQueryReq;
|
||||
import cn.axzo.tyr.client.model.res.IsSuperAdminRes;
|
||||
import cn.axzo.tyr.client.model.res.QueryBatchByIdentityIdTypeRes;
|
||||
import cn.axzo.tyr.client.model.res.QueryRoleByNameResp;
|
||||
import cn.axzo.tyr.client.model.res.RoleWithUserRes;
|
||||
import cn.axzo.tyr.client.model.vo.SaasRoleVO;
|
||||
import cn.axzo.tyr.client.model.vo.SaveOrUpdateRoleVO;
|
||||
@ -82,7 +83,7 @@ public interface TyrSaasRoleApi {
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/api/saasRole/findRoleByName")
|
||||
ApiResult<List<SaasRoleVO>> findRoleByName(@RequestBody @Valid QueryRoleByNameReq req);
|
||||
ApiResult<List<QueryRoleByNameResp>> findRoleByName(@RequestBody @Valid QueryRoleByNameReq req);
|
||||
|
||||
|
||||
/** 分页查询角色含用户 **/
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package cn.axzo.tyr.client.model.req;
|
||||
|
||||
import cn.axzo.tyr.client.common.enums.WorkspaceJoinType;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@ -25,6 +26,19 @@ public class FeaturePermissionReq {
|
||||
@NotNull
|
||||
@Min(value = 1)
|
||||
Long workspaceId;
|
||||
|
||||
/**
|
||||
* 工作台类型
|
||||
*/
|
||||
@NotNull
|
||||
private Integer workspaceType;
|
||||
|
||||
/**
|
||||
* 使用{@link WorkspaceJoinType}
|
||||
*/
|
||||
@NotNull
|
||||
private Integer workspaceJoinType;
|
||||
|
||||
/**
|
||||
* 单位id
|
||||
*/
|
||||
|
||||
@ -21,6 +21,16 @@ public class FeatureTreeReq {
|
||||
*/
|
||||
private Long workspaceId;
|
||||
|
||||
/**
|
||||
* 工作台类型
|
||||
*/
|
||||
private Integer workspaceType;
|
||||
|
||||
/**
|
||||
* 单位类型
|
||||
*/
|
||||
private Integer ouTypeCode;
|
||||
|
||||
/**
|
||||
* 单位Id
|
||||
*/
|
||||
|
||||
@ -18,4 +18,9 @@ public class QueryRoleByNameReq extends BaseWorkspaceAndOuModel {
|
||||
@NotEmpty(message = "角色名字不能为空")
|
||||
private List<String> roleNames;
|
||||
|
||||
/**
|
||||
* 单位类型字典code
|
||||
*/
|
||||
private List<String> ouTypeCode;
|
||||
|
||||
}
|
||||
@ -0,0 +1,26 @@
|
||||
package cn.axzo.tyr.client.model.res;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author honghao.zhang
|
||||
* @since 2023/10/19 11:38
|
||||
*/
|
||||
@Data
|
||||
public class QueryRoleByNameResp {
|
||||
|
||||
/**
|
||||
* 角色名字
|
||||
*/
|
||||
private String roleName;
|
||||
|
||||
/**
|
||||
* 角色Id
|
||||
*/
|
||||
private Long roleId;
|
||||
|
||||
/**
|
||||
* 角色类型:common 普通角色 super_admin超级管理员(禁止删除) admin子管理员(禁止删除) init初始化内置角色
|
||||
*/
|
||||
private String roleType;
|
||||
}
|
||||
@ -10,6 +10,7 @@ import cn.axzo.tyr.client.model.req.QuerySaasRoleReq;
|
||||
import cn.axzo.tyr.client.model.req.RoleWithUserQueryReq;
|
||||
import cn.axzo.tyr.client.model.res.IsSuperAdminRes;
|
||||
import cn.axzo.tyr.client.model.res.QueryBatchByIdentityIdTypeRes;
|
||||
import cn.axzo.tyr.client.model.res.QueryRoleByNameResp;
|
||||
import cn.axzo.tyr.client.model.res.RoleWithUserRes;
|
||||
import cn.axzo.tyr.client.model.vo.SaasRoleVO;
|
||||
import cn.axzo.tyr.client.model.vo.SaveOrUpdateRoleVO;
|
||||
@ -79,7 +80,7 @@ public class SaasRoleController implements TyrSaasRoleApi {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<List<SaasRoleVO>> findRoleByName(QueryRoleByNameReq req) {
|
||||
public ApiResult<List<QueryRoleByNameResp>> findRoleByName(QueryRoleByNameReq req) {
|
||||
return ApiResult.ok(roleService.findRoleByName(req));
|
||||
}
|
||||
|
||||
|
||||
@ -81,13 +81,14 @@ public class SaasRoleDao extends ServiceImpl<SaasRoleMapper, SaasRole> {
|
||||
.list();
|
||||
}
|
||||
|
||||
public List<SaasRole> findRoleByName(Long ouId, Long workspaceId,
|
||||
public List<SaasRole> findRoleByName(Long ouId, Long workspaceId,List<Long> roleIds,
|
||||
List<String> roleNames) {
|
||||
return this.lambdaQuery()
|
||||
return this.lambdaQuery().select(SaasRole::getId, SaasRole::getName, SaasRole::getRoleType)
|
||||
.eq(workspaceId != null && workspaceId != 0, SaasRole::getWorkspaceId, workspaceId)
|
||||
.eq(ouId != null && ouId != 0, SaasRole::getOwnerOuId, ouId)
|
||||
.in(CollectionUtils.isNotEmpty(roleIds), SaasRole::getId, roleIds)
|
||||
.in(CollectionUtils.isNotEmpty(roleNames), SaasRole::getName, roleNames)
|
||||
.eq(SaasRole::getIsDelete, TableIsDeleteEnum.NORMAL.value).list();
|
||||
.list();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -2,12 +2,10 @@ package cn.axzo.tyr.server.service;
|
||||
|
||||
import cn.axzo.framework.domain.page.PageResp;
|
||||
import cn.axzo.tyr.client.model.enums.IdentityType;
|
||||
import cn.axzo.tyr.client.model.req.QueryByIdentityIdTypeReq;
|
||||
import cn.axzo.tyr.client.model.req.QueryRoleByNameReq;
|
||||
import cn.axzo.tyr.client.model.req.QuerySaasRoleReq;
|
||||
import cn.axzo.tyr.client.model.req.RoleWithUserQueryReq;
|
||||
import cn.axzo.tyr.client.model.req.*;
|
||||
import cn.axzo.tyr.client.model.res.IsSuperAdminRes;
|
||||
import cn.axzo.tyr.client.model.res.QueryBatchByIdentityIdTypeRes;
|
||||
import cn.axzo.tyr.client.model.res.QueryRoleByNameResp;
|
||||
import cn.axzo.tyr.client.model.res.RoleWithUserRes;
|
||||
import cn.axzo.tyr.client.model.vo.SaasRoleVO;
|
||||
import cn.axzo.tyr.client.model.vo.SaveOrUpdateRoleVO;
|
||||
@ -59,7 +57,7 @@ public interface RoleService {
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
List<SaasRoleVO> findRoleByName(QueryRoleByNameReq req);
|
||||
List<QueryRoleByNameResp> findRoleByName(QueryRoleByNameReq req);
|
||||
|
||||
/** 分页查询角色含用户 **/
|
||||
PageResp<RoleWithUserRes> queryRoleWithUser(RoleWithUserQueryReq req);
|
||||
@ -71,4 +69,5 @@ public interface RoleService {
|
||||
* @return
|
||||
*/
|
||||
List<SaasRoleVO> queryRoleByRoleTypes(QueryByIdentityIdTypeReq req, List<String> roleTypes);
|
||||
|
||||
}
|
||||
|
||||
@ -9,13 +9,9 @@ import cn.axzo.tyr.client.model.enums.IdentityType;
|
||||
import cn.axzo.tyr.client.model.enums.PermissionGroupType;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode;
|
||||
import cn.axzo.tyr.client.model.req.*;
|
||||
import cn.axzo.tyr.client.model.req.QueryByIdentityIdTypeReq;
|
||||
import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq;
|
||||
import cn.axzo.tyr.client.model.req.QuerySaasRoleGroupReq;
|
||||
import cn.axzo.tyr.client.model.req.QuerySaasRoleReq;
|
||||
import cn.axzo.tyr.client.model.req.RoleWithUserQueryReq;
|
||||
import cn.axzo.tyr.client.model.res.IsSuperAdminRes;
|
||||
import cn.axzo.tyr.client.model.res.QueryBatchByIdentityIdTypeRes;
|
||||
import cn.axzo.tyr.client.model.res.QueryRoleByNameResp;
|
||||
import cn.axzo.tyr.client.model.res.RoleWithUserRes;
|
||||
import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO;
|
||||
import cn.axzo.tyr.client.model.vo.SaasRoleGroupVO;
|
||||
@ -508,8 +504,30 @@ public class RoleServiceImpl implements RoleService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SaasRoleVO> findRoleByName(QueryRoleByNameReq req) {
|
||||
List<SaasRole> roleList = saasRoleDao.findRoleByName(req.getOuId(), req.getWorkspaceId(), req.getRoleNames());
|
||||
return BeanUtil.copyToList(roleList, SaasRoleVO.class);
|
||||
public List<QueryRoleByNameResp> findRoleByName(QueryRoleByNameReq req) {
|
||||
List<Long> relationRoleIds = Lists.newArrayList();
|
||||
if (CollectionUtils.isNotEmpty(req.getOuTypeCode())) {
|
||||
List<SaasRoleGroup> roleGroup = saasRoleGroupDao.query(QuerySaasRoleGroupReq.builder()
|
||||
.ouTypeCode(req.getOuTypeCode())
|
||||
.build());
|
||||
if (CollectionUtils.isEmpty(roleGroup)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<SaasRoleGroupRelation> groupRelation = roleGroupRelationDao.lambdaQuery()
|
||||
.in(SaasRoleGroupRelation::getSaasRoleGroupId, roleGroup.stream().map(BaseEntity::getId).collect(Collectors.toList()))
|
||||
.list();
|
||||
if (CollectionUtils.isEmpty(groupRelation)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
relationRoleIds = groupRelation.stream().map(SaasRoleGroupRelation::getRoleId).collect(Collectors.toList());
|
||||
}
|
||||
List<SaasRole> roleList = saasRoleDao.findRoleByName(req.getOuId(), req.getWorkspaceId(), relationRoleIds, req.getRoleNames());
|
||||
return roleList.stream().map(item -> {
|
||||
QueryRoleByNameResp resp = new QueryRoleByNameResp();
|
||||
resp.setRoleName(item.getName());
|
||||
resp.setRoleId(item.getId());
|
||||
resp.setRoleType(item.getRoleType());
|
||||
return resp;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,36 +1,22 @@
|
||||
package cn.axzo.tyr.server.service.impl;
|
||||
|
||||
import cn.axzo.framework.domain.ServiceException;
|
||||
import cn.axzo.thrones.client.saas.ServicePkgClient;
|
||||
import cn.axzo.thrones.client.saas.entity.serivicepgkproduct.ServicePkgProduct;
|
||||
import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
|
||||
import cn.axzo.tyr.client.model.enums.IdentityType;
|
||||
import cn.axzo.tyr.client.model.req.FeaturePermissionReq;
|
||||
import cn.axzo.tyr.client.model.req.FeatureTreeReq;
|
||||
import cn.axzo.tyr.client.model.req.QueryByIdentityIdTypeReq;
|
||||
import cn.axzo.tyr.client.model.req.IdentityAuthReq;
|
||||
import cn.axzo.tyr.client.model.res.FeaturePermissionRes;
|
||||
import cn.axzo.tyr.client.model.res.FeatureTreeResp;
|
||||
import cn.axzo.tyr.client.model.vo.SaasRoleVO;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasFeatureDao;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasFeature;
|
||||
import cn.axzo.tyr.server.service.RoleService;
|
||||
import cn.axzo.tyr.client.model.res.IdentityAuthRes;
|
||||
import cn.axzo.tyr.server.service.SaasFeatureService;
|
||||
import cn.axzo.tyr.server.util.IdPathUtil;
|
||||
import cn.azxo.framework.common.logger.MethodAroundLog;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.axzo.tyr.server.service.TyrSaasAuthService;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.axzo.tyr.server.util.RpcInternalUtil.checkAndGetData;
|
||||
|
||||
/**
|
||||
* @author honghao.zhang
|
||||
* @since 2023/10/18 18:26
|
||||
@ -40,163 +26,33 @@ import static cn.axzo.tyr.server.util.RpcInternalUtil.checkAndGetData;
|
||||
@RequiredArgsConstructor
|
||||
public class SaasFeatureServiceImpl implements SaasFeatureService {
|
||||
|
||||
private final RoleService roleService;
|
||||
private final ServicePkgClient servicePkgClient;
|
||||
private final SaasFeatureDao saasFeatureDao;
|
||||
private final TyrSaasAuthService tyrSaasAuthService;
|
||||
|
||||
@Override
|
||||
public FeaturePermissionRes listPermissionCodes(FeaturePermissionReq req) {
|
||||
FeaturePermissionRes featurePermissionRes = new FeaturePermissionRes();
|
||||
QueryByIdentityIdTypeReq idTypeReq = QueryByIdentityIdTypeReq.builder()
|
||||
.identityId(req.getIdentityId()).identityType(req.getIdentityType())
|
||||
.ouId(req.getOuId()).workspaceId(req.getWorkspaceId())
|
||||
.build();
|
||||
List<SaasRoleVO> saasRoleVOS = roleService.queryRoleByRoleTypes(idTypeReq, Lists.newArrayList(RoleTypeEnum.SUPER_ADMIN.getValue(),
|
||||
RoleTypeEnum.ADMIN.getValue()));
|
||||
featurePermissionRes.setSuperAdmin(saasRoleVOS.stream().anyMatch(e -> RoleTypeEnum.SUPER_ADMIN.getValue().equals(e.getRoleType())));
|
||||
FeatureTreeReq featureTreeReq = new FeatureTreeReq();
|
||||
featureTreeReq.setIdentityId(req.getIdentityId());
|
||||
featureTreeReq.setIdentityType(req.getIdentityType());
|
||||
featureTreeReq.setWorkspaceId(req.getWorkspaceId());
|
||||
featureTreeReq.setOuId(req.getOuId());
|
||||
featureTreeReq.setTerminal(req.getTerminal());
|
||||
IdentityAuthReq authReq = new IdentityAuthReq();
|
||||
if (StringUtils.hasText(req.getTerminal())) {
|
||||
authReq.setTerminal(Lists.newArrayList());
|
||||
}
|
||||
authReq.setIdentityId(req.getIdentityId());
|
||||
authReq.setIdentityType(IdentityType.getIdentityType(req.getIdentityType()));
|
||||
IdentityAuthReq.WorkspaceOuPair workspaceOuPair = new IdentityAuthReq.WorkspaceOuPair();
|
||||
workspaceOuPair.setWorkspaceId(req.getWorkspaceId());
|
||||
workspaceOuPair.setOuId(req.getOuId());
|
||||
workspaceOuPair.setWorkspaceType(req.getWorkspaceType());
|
||||
workspaceOuPair.setWorkspaceJoinType(req.getWorkspaceJoinType());
|
||||
authReq.setWorkspaceOusPairs(Lists.newArrayList(workspaceOuPair));
|
||||
|
||||
List<FeatureTreeResp> saasFeatureTreeResp = filterFeatureTree(featureTreeReq, !saasRoleVOS.isEmpty());
|
||||
Map<Integer, List<FeatureTreeResp>> treeMap = groupByMenuType(
|
||||
saasFeatureTreeResp, 20);
|
||||
featurePermissionRes.setPermissionCodes(treeMap.getOrDefault(3, Collections.emptyList()).stream().map(FeatureTreeResp::getCode)
|
||||
.collect(Collectors.toSet()));
|
||||
IdentityAuthRes identityAuthRes = tyrSaasAuthService.findIdentityAuth(authReq);
|
||||
List<IdentityAuthRes.WorkspacePermission> workspacePermissionList = identityAuthRes.getPermissions();
|
||||
if (CollUtil.isNotEmpty(workspacePermissionList)) {
|
||||
IdentityAuthRes.WorkspacePermission workspacePermission = workspacePermissionList.get(0);
|
||||
featurePermissionRes.setSuperAdmin(workspacePermission.isSuperAdmin());
|
||||
featurePermissionRes.setPermissionCodes(workspacePermission.getPermissionPoint()
|
||||
.stream().map(IdentityAuthRes.PermissionPoint::getFeatureCode).collect(Collectors.toSet()));
|
||||
}
|
||||
return featurePermissionRes;
|
||||
}
|
||||
|
||||
@MethodAroundLog(value = "获取权限集树")
|
||||
private List<FeatureTreeResp> filterFeatureTree(FeatureTreeReq req, boolean isAdmin) {
|
||||
// 1. 根据这个用户的角色,找到对应的code,Admin/Common各自的拿法。
|
||||
List<String> minFeatureCode = listFeatureCode(req, isAdmin);
|
||||
|
||||
log.info("产品对应的最小权限集:{}", minFeatureCode);
|
||||
// 因为只能查出来最小功能FeatureCode,所以在递归查询出其上级.
|
||||
List<SaasFeature> allFeature = saasFeatureDao.listFeatureByTerminal(req.getTerminal());
|
||||
List<SaasFeature> featureTree = constructFeatureByMinFeatureCode(minFeatureCode, allFeature
|
||||
);
|
||||
|
||||
// 2. 组织成一棵树
|
||||
return formatToTreeAndSort(featureTree, req.getLimitFeatureTypeLevel());
|
||||
}
|
||||
|
||||
private List<FeatureTreeResp> formatToTreeAndSort(List<SaasFeature> featureTree, Integer level) {
|
||||
List<FeatureTreeResp> roots = new ArrayList<>();
|
||||
Map<Long, FeatureTreeResp> map = new LinkedHashMap<>();
|
||||
|
||||
for (SaasFeature feature : featureTree) {
|
||||
if (feature.getFeatureType() > level)
|
||||
continue;
|
||||
FeatureTreeResp resp = featureBOToResp(feature);
|
||||
map.put(feature.getId(), resp);
|
||||
if (feature.getFeatureType() == 0 || feature.getParentId() == 0) {
|
||||
roots.add(resp);
|
||||
}
|
||||
}
|
||||
|
||||
for (FeatureTreeResp feature : map.values()) {
|
||||
FeatureTreeResp parent = map.get(feature.getParentId());
|
||||
if (null == parent) {
|
||||
continue;
|
||||
}
|
||||
if (parent.getChildren() == null)
|
||||
parent.setChildren(new ArrayList<>());
|
||||
parent.getChildren().add(feature);
|
||||
}
|
||||
return roots;
|
||||
}
|
||||
|
||||
private FeatureTreeResp featureBOToResp(SaasFeature feature) {
|
||||
FeatureTreeResp resp = new FeatureTreeResp();
|
||||
BeanUtil.copyProperties(feature, resp);
|
||||
resp.setName(feature.getFeatureName());
|
||||
resp.setCode(feature.getFeatureCode());
|
||||
resp.setMenuType(feature.getFeatureType());
|
||||
return resp;
|
||||
}
|
||||
|
||||
private List<SaasFeature> constructFeatureByMinFeatureCode(List<String> minFeatureCode, List<SaasFeature> allFeature) {
|
||||
List<SaasFeature> result = new ArrayList<>();
|
||||
Map<Long, SaasFeature> featureMap = allFeature.stream()
|
||||
.collect(Collectors.toMap(SaasFeature::getId, Function.identity()));
|
||||
if (!CollectionUtils.isEmpty(minFeatureCode)) {
|
||||
List<SaasFeature> minFeature = allFeature.stream()
|
||||
.filter(e -> org.apache.commons.lang3.StringUtils.isNotBlank(e.getFeatureCode())
|
||||
&& minFeatureCode.contains(e.getFeatureCode())).collect(Collectors.toList());
|
||||
result.addAll(minFeature);
|
||||
Set<String> collect = minFeature.stream().map(SaasFeature::getPath)
|
||||
.collect(Collectors.toSet());
|
||||
Set<Long> longs = IdPathUtil.featurePathsToIds(collect);
|
||||
for (Long aLong : longs) {
|
||||
SaasFeature saasFeatureBO = featureMap.get(aLong);
|
||||
if (saasFeatureBO != null) {
|
||||
result.add(saasFeatureBO);
|
||||
}
|
||||
}
|
||||
}
|
||||
return getFeatureBOS(result);
|
||||
}
|
||||
|
||||
private ArrayList<SaasFeature> getFeatureBOS(List<SaasFeature> result) {
|
||||
return result.stream()
|
||||
.collect(Collectors.collectingAndThen(
|
||||
Collectors.toCollection(
|
||||
() -> new TreeSet<>(Comparator.comparing(SaasFeature::getId))),
|
||||
ArrayList::new));
|
||||
}
|
||||
|
||||
private List<String> listFeatureCode(FeatureTreeReq req, boolean isAdmin) {
|
||||
List<Long> productIds = getProductIdsOfWorkspace(req.getWorkspaceId());
|
||||
if (isAdmin) {
|
||||
return listCodeByProductIdsAndTerminal(productIds, req.getTerminal());
|
||||
}
|
||||
return listCodeByProductIds(req, productIds);
|
||||
}
|
||||
|
||||
private List<String> listCodeByProductIds(FeatureTreeReq req, List<Long> productIds) {
|
||||
return saasFeatureDao.listCodeByProductIds(req, productIds);
|
||||
}
|
||||
|
||||
private List<String> listCodeByProductIdsAndTerminal(List<Long> productIds, String terminal) {
|
||||
return saasFeatureDao.listByProductIdsAndTerminal(productIds, terminal);
|
||||
}
|
||||
|
||||
private Map<Integer, List<FeatureTreeResp>> groupByMenuType(List<FeatureTreeResp> saasFeatureTree, Integer maxDepth) {
|
||||
HashMap<Integer, List<FeatureTreeResp>> result = new HashMap<>();
|
||||
if (CollectionUtil.isEmpty(saasFeatureTree) || maxDepth <= 0) {
|
||||
return result;
|
||||
}
|
||||
for (FeatureTreeResp featureTreeResp : saasFeatureTree) {
|
||||
|
||||
List<FeatureTreeResp> defaultLists = result.getOrDefault(featureTreeResp.getMenuType(), new ArrayList<>());
|
||||
if (defaultLists.isEmpty()) {
|
||||
result.put(featureTreeResp.getMenuType(), defaultLists);
|
||||
}
|
||||
defaultLists.add(featureTreeResp);
|
||||
Map<Integer, List<FeatureTreeResp>> children = groupByMenuType(featureTreeResp.getChildren(), --maxDepth);
|
||||
for (Integer childrenKey : children.keySet()) {
|
||||
List<FeatureTreeResp> childList = result.getOrDefault(childrenKey, new ArrayList<>());
|
||||
if (childList.isEmpty()) {
|
||||
result.put(childrenKey, childList);
|
||||
}
|
||||
childList.addAll(children.get(childrenKey));
|
||||
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public List<Long> getProductIdsOfWorkspace(Long workspaceId) {
|
||||
CommonResponse<List<ServicePkgProduct>> servicePkgResponse = servicePkgClient.listProductInWorkSpace(workspaceId);
|
||||
List<ServicePkgProduct> products = checkAndGetData(servicePkgResponse);
|
||||
if (CollectionUtil.isEmpty(products)) {
|
||||
log.warn("thrones:获取产品列表失败:workspaceId{}", workspaceId);
|
||||
throw new ServiceException("当前工作台未找到任何的产品");
|
||||
}
|
||||
return products.stream().map(ServicePkgProduct::getProductId).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user