feat:(REQ-2699) 修改产品权限缓存,增加版本,类型等
This commit is contained in:
parent
9e0e09f805
commit
202d0797dc
@ -65,6 +65,21 @@ public class IdentityAuthReq {
|
||||
@Builder.Default
|
||||
private boolean useCache = true;
|
||||
|
||||
/**
|
||||
* app类型(APP:原生,H5:h5页面)
|
||||
*/
|
||||
private String appType;
|
||||
|
||||
/**
|
||||
* 项目code(H5会拉取项目下所有的元素)
|
||||
*/
|
||||
private String itemCode;
|
||||
|
||||
/**
|
||||
* 客户端版本号
|
||||
*/
|
||||
private Integer versionMax;
|
||||
|
||||
public IdentityAuthRes toEmpty() {
|
||||
IdentityAuthRes result = new IdentityAuthRes();
|
||||
result.setIdentity(this.getIdentityId());
|
||||
|
||||
@ -0,0 +1,34 @@
|
||||
package cn.axzo.tyr.client.model.req;
|
||||
|
||||
import cn.axzo.foundation.dao.support.wrapper.CriteriaField;
|
||||
import cn.axzo.foundation.dao.support.wrapper.Operator;
|
||||
import cn.axzo.foundation.page.IPageReq;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class PageElementReq implements IPageReq {
|
||||
|
||||
@CriteriaField(ignore = true)
|
||||
Integer page;
|
||||
|
||||
@CriteriaField(ignore = true)
|
||||
Integer pageSize;
|
||||
|
||||
/**
|
||||
* 排序:使用示例,createTime__DESC
|
||||
*/
|
||||
@CriteriaField(ignore = true)
|
||||
List<String> sort;
|
||||
|
||||
@CriteriaField(field = "code", operator = Operator.IN)
|
||||
private Set<String> codes;
|
||||
}
|
||||
@ -73,6 +73,9 @@ public class PageSaasFeatureResourceReq implements IPageReq {
|
||||
@CriteriaField(field = "terminal", operator = Operator.IN)
|
||||
private Set<String> terminals;
|
||||
|
||||
@CriteriaField(ignore = true)
|
||||
private Boolean needPageElement;
|
||||
|
||||
public PageResp toEmpty() {
|
||||
return PageResp.builder()
|
||||
.current(this.getPage())
|
||||
|
||||
@ -63,6 +63,8 @@ public class PageElementResp {
|
||||
*/
|
||||
private Boolean selected;
|
||||
|
||||
private String itemCode;
|
||||
|
||||
/**
|
||||
* 子元素(只包含一级)
|
||||
*/
|
||||
|
||||
@ -11,6 +11,7 @@ import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
@ -148,6 +149,11 @@ public class SaasFeatureResourceResp {
|
||||
*/
|
||||
private String uniCode;
|
||||
|
||||
/**
|
||||
* 页面元素信息
|
||||
*/
|
||||
private List<PageElementResp> saasPageElements;
|
||||
|
||||
public Set<Long> resolvePath() {
|
||||
return Optional.ofNullable(this.getPath())
|
||||
.map(e -> Arrays.stream(e.split(",")).map(Long::valueOf).collect(Collectors.toSet()))
|
||||
|
||||
@ -712,6 +712,11 @@ public class PrivateController {
|
||||
return rolePermissionCacheService.list(request);
|
||||
}
|
||||
|
||||
@PostMapping("/api/private/productPermissionCached/list")
|
||||
public Object productPermissionCached(@RequestBody ProductPermissionCacheService.ListProductPermissionParam request) {
|
||||
return productPermissionCacheService.list(request);
|
||||
}
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
|
||||
@ -14,7 +14,6 @@ import cn.axzo.tyr.server.service.ProductFeatureRelationService;
|
||||
import cn.axzo.tyr.server.service.ProductPermissionCacheService;
|
||||
import cn.axzo.tyr.server.service.SaasFeatureResourceService;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
@ -27,7 +26,6 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
@ -205,20 +203,21 @@ public class CacheProductPermissionHandler implements InitializingBean {
|
||||
if (Objects.isNull(featureResource)) {
|
||||
return null;
|
||||
}
|
||||
Set<String> featureCodes = Optional.ofNullable(featureResource.getFeatureCodes())
|
||||
.orElseGet(() -> Sets.newHashSet(featureResource.getUniCode()));
|
||||
|
||||
if (CollectionUtils.isEmpty(featureCodes)) {
|
||||
if (CollectionUtils.isEmpty(featureResource.getSaasPageElements())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
List<ProductPermissionCacheService.PermissionDTO> permissionDTOS = featureCodes.stream()
|
||||
.map(featureCode -> ProductPermissionCacheService.PermissionDTO.builder()
|
||||
List<ProductPermissionCacheService.PermissionDTO> permissionDTOS = featureResource.getSaasPageElements().stream()
|
||||
.map(pageElement -> ProductPermissionCacheService.PermissionDTO.builder()
|
||||
.featureId(featureResource.getId())
|
||||
.featureCode(featureCode)
|
||||
.featureCode(pageElement.getCode())
|
||||
.featureType(featureResource.getFeatureType())
|
||||
.terminal(featureResource.getTerminal())
|
||||
.cooperateType(relation.getDictCode())
|
||||
.itemCode(pageElement.getItemCode())
|
||||
.version(pageElement.getVersion())
|
||||
.appType(pageElement.getAppType())
|
||||
.build())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
@ -226,20 +225,20 @@ public class CacheProductPermissionHandler implements InitializingBean {
|
||||
.map(parentFeatureResources::get)
|
||||
.filter(Objects::nonNull)
|
||||
.map(f -> {
|
||||
|
||||
Set<String> parentFeatureCodes = Optional.ofNullable(f.getFeatureCodes())
|
||||
.orElseGet(() -> Sets.newHashSet(f.getUniCode()));
|
||||
if (CollectionUtils.isEmpty(parentFeatureCodes)) {
|
||||
if (CollectionUtils.isEmpty(f.getSaasPageElements())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return parentFeatureCodes.stream()
|
||||
.map(featureCode -> ProductPermissionCacheService.PermissionDTO.builder()
|
||||
return f.getSaasPageElements().stream()
|
||||
.map(pageElement -> ProductPermissionCacheService.PermissionDTO.builder()
|
||||
.featureId(f.getId())
|
||||
.featureCode(featureCode)
|
||||
.featureCode(pageElement.getCode())
|
||||
.featureType(f.getFeatureType())
|
||||
.terminal(f.getTerminal())
|
||||
.cooperateType(relation.getDictCode())
|
||||
.itemCode(pageElement.getItemCode())
|
||||
.version(pageElement.getVersion())
|
||||
.appType(pageElement.getAppType())
|
||||
.build())
|
||||
.collect(Collectors.toList());
|
||||
})
|
||||
@ -266,7 +265,7 @@ public class CacheProductPermissionHandler implements InitializingBean {
|
||||
|
||||
PageSaasFeatureResourceReq pageSaasFeatureResourceReq = PageSaasFeatureResourceReq.builder()
|
||||
.ids(featureIds)
|
||||
.needFeatureCodes(true)
|
||||
.needPageElement(true)
|
||||
.build();
|
||||
return saasFeatureResourceService.list(pageSaasFeatureResourceReq).stream()
|
||||
.collect(Collectors.toMap(SaasFeatureResourceResp::getId, Function.identity(), (f, s) -> s));
|
||||
@ -284,10 +283,9 @@ public class CacheProductPermissionHandler implements InitializingBean {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
// 存在pre环境更改了节点的父节点,可能导致产品没有父节点的权限,这里补齐父节点的权限
|
||||
PageSaasFeatureResourceReq pageSaasFeatureResourceReq = PageSaasFeatureResourceReq.builder()
|
||||
.ids(parentIds)
|
||||
.needFeatureCodes(true)
|
||||
.needPageElement(true)
|
||||
.build();
|
||||
return saasFeatureResourceService.list(pageSaasFeatureResourceReq).stream()
|
||||
.collect(Collectors.toMap(SaasFeatureResourceResp::getId, Function.identity(), (f, s) -> s));
|
||||
|
||||
@ -2,8 +2,6 @@ package cn.axzo.tyr.server.event.inner;
|
||||
|
||||
import cn.axzo.framework.rocketmq.Event;
|
||||
import cn.axzo.framework.rocketmq.EventConsumer;
|
||||
import cn.axzo.framework.rocketmq.EventHandler;
|
||||
import cn.axzo.tyr.client.model.req.PageProductFeatureRelationReq;
|
||||
import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq;
|
||||
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
|
||||
import cn.axzo.tyr.client.model.res.SaasPermissionRelationRes;
|
||||
@ -12,12 +10,10 @@ import cn.axzo.tyr.server.event.payload.PageElementFeatureResourceUpsertPayload;
|
||||
import cn.axzo.tyr.server.event.payload.RolePermissionCreatedPayload;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasFeatureDao;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasFeature;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasProductModuleFeatureRelation;
|
||||
import cn.axzo.tyr.server.service.RolePermissionCacheService;
|
||||
import cn.axzo.tyr.server.service.RoleService;
|
||||
import cn.axzo.tyr.server.service.SaasFeatureResourceService;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
@ -30,7 +26,6 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
@ -192,17 +187,15 @@ public class CacheRolePermissionHandler implements InitializingBean {
|
||||
if (Objects.isNull(featureResource)) {
|
||||
return null;
|
||||
}
|
||||
Set<String> featureCodes = Optional.ofNullable(featureResource.getFeatureCodes())
|
||||
.orElseGet(() -> Sets.newHashSet(featureResource.getUniCode()));
|
||||
|
||||
if (CollectionUtils.isEmpty(featureCodes)) {
|
||||
if (CollectionUtils.isEmpty(featureResource.getSaasPageElements())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
List<RolePermissionCacheService.PermissionDTO> permissionDTOS = featureCodes.stream()
|
||||
.map(featureCode -> RolePermissionCacheService.PermissionDTO.builder()
|
||||
List<RolePermissionCacheService.PermissionDTO> permissionDTOS = featureResource.getSaasPageElements().stream()
|
||||
.map(pageElement -> RolePermissionCacheService.PermissionDTO.builder()
|
||||
.featureId(featureResource.getId())
|
||||
.featureCode(featureCode)
|
||||
.featureCode(pageElement.getCode())
|
||||
.featureType(featureResource.getFeatureType())
|
||||
.terminal(featureResource.getTerminal())
|
||||
.build())
|
||||
@ -213,16 +206,14 @@ public class CacheRolePermissionHandler implements InitializingBean {
|
||||
.filter(Objects::nonNull)
|
||||
.map(f -> {
|
||||
|
||||
Set<String> parentFeatureCodes = Optional.ofNullable(f.getFeatureCodes())
|
||||
.orElseGet(() -> Sets.newHashSet(f.getUniCode()));
|
||||
if (CollectionUtils.isEmpty(parentFeatureCodes)) {
|
||||
if (CollectionUtils.isEmpty(featureResource.getSaasPageElements())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return parentFeatureCodes.stream()
|
||||
.map(featureCode -> RolePermissionCacheService.PermissionDTO.builder()
|
||||
return featureResource.getSaasPageElements().stream()
|
||||
.map(pageElement -> RolePermissionCacheService.PermissionDTO.builder()
|
||||
.featureId(f.getId())
|
||||
.featureCode(featureCode)
|
||||
.featureCode(pageElement.getCode())
|
||||
.featureType(f.getFeatureType())
|
||||
.terminal(f.getTerminal())
|
||||
.build())
|
||||
@ -256,7 +247,7 @@ public class CacheRolePermissionHandler implements InitializingBean {
|
||||
|
||||
PageSaasFeatureResourceReq pageSaasFeatureResourceReq = PageSaasFeatureResourceReq.builder()
|
||||
.ids(featureIds)
|
||||
.needFeatureCodes(true)
|
||||
.needPageElement(true)
|
||||
.build();
|
||||
return saasFeatureResourceService.list(pageSaasFeatureResourceReq).stream()
|
||||
.collect(Collectors.toMap(SaasFeatureResourceResp::getId, Function.identity(), (f, s) -> s));
|
||||
@ -277,7 +268,7 @@ public class CacheRolePermissionHandler implements InitializingBean {
|
||||
// 存在pre环境更改了节点的父节点,可能导致产品没有父节点的权限,这里补齐父节点的权限
|
||||
PageSaasFeatureResourceReq pageSaasFeatureResourceReq = PageSaasFeatureResourceReq.builder()
|
||||
.ids(parentIds)
|
||||
.needFeatureCodes(true)
|
||||
.needPageElement(true)
|
||||
.build();
|
||||
return saasFeatureResourceService.list(pageSaasFeatureResourceReq).stream()
|
||||
.collect(Collectors.toMap(SaasFeatureResourceResp::getId, Function.identity(), (f, s) -> s));
|
||||
|
||||
@ -86,5 +86,20 @@ public interface ProductPermissionCacheService {
|
||||
private String terminal;
|
||||
|
||||
private Integer featureType;
|
||||
|
||||
/**
|
||||
* app类型(APP:原生,H5:h5页面)
|
||||
*/
|
||||
private String appType;
|
||||
|
||||
/**
|
||||
* 项目code(H5会拉取项目下所有的元素)
|
||||
*/
|
||||
private String itemCode;
|
||||
|
||||
/**
|
||||
* 客户端版本号
|
||||
*/
|
||||
private Integer version;
|
||||
}
|
||||
}
|
||||
@ -1,7 +1,12 @@
|
||||
package cn.axzo.tyr.server.service;
|
||||
|
||||
import cn.axzo.framework.domain.page.PageResp;
|
||||
import cn.axzo.tyr.client.model.req.*;
|
||||
import cn.axzo.tyr.client.model.req.GetPageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.GetUserHasPermissionPageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
||||
import cn.axzo.tyr.client.model.req.PageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.PageQueryElementReq;
|
||||
import cn.axzo.tyr.client.model.res.GetUserHasPermissionPageElementResp;
|
||||
import cn.axzo.tyr.client.model.res.PageElementBasicDTO;
|
||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||
@ -70,4 +75,9 @@ public interface SaasPageElementService {
|
||||
* @return
|
||||
*/
|
||||
GetUserHasPermissionPageElementResp getUserHasPermissionPageElement(GetUserHasPermissionPageElementReq request);
|
||||
|
||||
|
||||
List<PageElementResp> list(PageElementReq param);
|
||||
|
||||
cn.axzo.foundation.page.PageResp<PageElementResp> page(PageElementReq param);
|
||||
}
|
||||
|
||||
@ -22,11 +22,13 @@ import cn.axzo.tyr.client.model.req.FeatureResourceTreeSaveReq;
|
||||
import cn.axzo.tyr.client.model.req.GetFeatureResourceTreeReq;
|
||||
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||
import cn.axzo.tyr.client.model.req.PageElementFeatureResourceRelationReq;
|
||||
import cn.axzo.tyr.client.model.req.PageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.PagePgroupPermissionRelationReq;
|
||||
import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq;
|
||||
import cn.axzo.tyr.client.model.res.FeatureResourceDTO;
|
||||
import cn.axzo.tyr.client.model.res.FeatureResourceTreeNode;
|
||||
import cn.axzo.tyr.client.model.res.PageElementBasicDTO;
|
||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
|
||||
import cn.axzo.tyr.server.common.util.Throws;
|
||||
import cn.axzo.tyr.server.config.MqProducer;
|
||||
@ -73,7 +75,7 @@ import org.springframework.data.redis.core.SessionCallback;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
@ -81,6 +83,7 @@ import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.axzo.tyr.server.config.exception.BizResultCode.FEATURE_RESOURCE_NOT_FOUND;
|
||||
@ -588,15 +591,22 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
|
||||
|
||||
Map<String, Set<String>> uniCodeFeatureCodeMap = listFeatureCodes(param, page.getRecords());
|
||||
|
||||
return PageConverter.toResp(page, e -> from(e, uniCodeFeatureCodeMap));
|
||||
Map<String, List<PageElementResp>> pageElements = listPageElements(param, page.getRecords());
|
||||
|
||||
return PageConverter.toResp(page, e -> from(e,
|
||||
uniCodeFeatureCodeMap,
|
||||
pageElements));
|
||||
}
|
||||
|
||||
private SaasFeatureResourceResp from(SaasFeatureResource featureResource,
|
||||
Map<String, Set<String>> uniCodeFeatureCodeMap) {
|
||||
Map<String, Set<String>> uniCodeFeatureCodeMap,
|
||||
Map<String, List<PageElementResp>> pageElements) {
|
||||
SaasFeatureResourceResp saasFeatureResourceResp = SaasFeatureResourceResp.builder().build();
|
||||
BeanUtils.copyProperties(featureResource, saasFeatureResourceResp);
|
||||
|
||||
saasFeatureResourceResp.setFeatureCodes(uniCodeFeatureCodeMap.get(featureResource.getUniCode()));
|
||||
|
||||
saasFeatureResourceResp.setSaasPageElements(pageElements.get(saasFeatureResourceResp.getUniCode()));
|
||||
return saasFeatureResourceResp;
|
||||
}
|
||||
|
||||
@ -617,6 +627,41 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
|
||||
.stream()
|
||||
.collect(Collectors.groupingBy(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode,
|
||||
Collectors.mapping(SaasPageElementFeatureResourceRelation::getPageElementCode, Collectors.toSet())));
|
||||
}
|
||||
|
||||
private Map<String, List<PageElementResp>> listPageElements(PageSaasFeatureResourceReq param,
|
||||
List<SaasFeatureResource> saasFeatureResources) {
|
||||
|
||||
if (CollectionUtils.isEmpty(saasFeatureResources) || BooleanUtils.isNotTrue(param.getNeedPageElement())) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
Set<String> uniCodes = saasFeatureResources.stream()
|
||||
.map(SaasFeatureResource::getUniCode)
|
||||
.collect(Collectors.toSet());
|
||||
PageElementFeatureResourceRelationReq pageElementFeatureResourceRelationReq = PageElementFeatureResourceRelationReq.builder()
|
||||
.featureResourceUniCodes(uniCodes)
|
||||
.build();
|
||||
|
||||
List<SaasPageElementFeatureResourceRelation> pageElementFeatureResourceRelations = saasPageElementFeatureResourceRelationService.list(pageElementFeatureResourceRelationReq);
|
||||
|
||||
if (CollectionUtils.isEmpty(pageElementFeatureResourceRelations)) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
Set<String> elementCodes = pageElementFeatureResourceRelations.stream()
|
||||
.map(SaasPageElementFeatureResourceRelation::getPageElementCode)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
PageElementReq pageElementReq = PageElementReq.builder()
|
||||
.codes(elementCodes)
|
||||
.build();
|
||||
Map<String, PageElementResp> elementMap = saasPageElementService.list(pageElementReq).stream()
|
||||
.collect(Collectors.toMap(PageElementResp::getCode, Function.identity()));
|
||||
|
||||
return pageElementFeatureResourceRelations.stream()
|
||||
.collect(Collectors.groupingBy(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode,
|
||||
Collectors.mapping(e -> elementMap.get(e.getPageElementCode()), Collectors.toList())));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -466,4 +466,14 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
|
||||
|
||||
saasPgroupPermissionRelationOperateLogService.batchSave(Lists.newArrayList(operateLog));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PageElementResp> list(PageElementReq param) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public cn.axzo.foundation.page.PageResp<PageElementResp> page(PageElementReq param) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,7 +2,6 @@ package cn.axzo.tyr.server.service.impl;
|
||||
|
||||
import cn.axzo.apollo.workspace.common.enums.TableIsDeleteEnum;
|
||||
import cn.axzo.basics.common.BeanMapper;
|
||||
import cn.axzo.basics.common.util.StopWatchUtil;
|
||||
import cn.axzo.framework.domain.ServiceException;
|
||||
import cn.axzo.pokonyan.util.TraceSupplier;
|
||||
import cn.axzo.thrones.client.saas.ServicePkgClient;
|
||||
@ -85,7 +84,6 @@ import cn.hutool.core.lang.Pair;
|
||||
import cn.hutool.core.util.BooleanUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
@ -1503,19 +1501,11 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService {
|
||||
* @return
|
||||
*/
|
||||
private IdentityAuthRes findIdentityAuthV2(IdentityAuthReq identityAuthReq) {
|
||||
StopWatch watch = StopWatch.create("redis:");
|
||||
watch.start("redis:query workspaceProductPermission");
|
||||
Map<Long, List<WorkspaceProductService.ProductPermission>> workspaceProductPermissions = listWorkspaceProductPermission(identityAuthReq);
|
||||
watch.stop();
|
||||
|
||||
watch.start("redis:query userRole");
|
||||
List<SaasRoleUserV2DTO> saasRoleUsers = listRoleUserRelationsV2(identityAuthReq);
|
||||
log.info("redis:saasRoleUsers:", JSON.toJSONString(saasRoleUsers));
|
||||
watch.stop();
|
||||
|
||||
watch.start("redis:query rolePermission");
|
||||
Map<Long, List<RolePermissionCacheService.PermissionDTO>> rolePermissions = listRolePermission(identityAuthReq, saasRoleUsers);
|
||||
watch.stop();
|
||||
|
||||
Map<String, List<SaasRoleUserV2DTO.SaasRole>> workspaceRoles = saasRoleUsers.stream()
|
||||
.collect(Collectors.groupingBy(e -> e.getSaasRoleUser().buildOuWorkspaceKey(),
|
||||
@ -1530,7 +1520,6 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService {
|
||||
// CMP、CMS新旧菜单树id不会重复
|
||||
List<SaasFeatureResourceService.SaasFeatureResourceCache> allFeatures = listSaasFeatureCaches(terminals);
|
||||
|
||||
watch.start("redis:resolve permission");
|
||||
List<IdentityAuthRes.WorkspacePermission> permissions = identityAuthReq.getWorkspaceOusPairs().stream()
|
||||
.map(workspaceOuPair -> {
|
||||
List<ProductPermissionCacheService.PermissionDTO> productPermissions = Optional.ofNullable(workspaceProductPermissions.get(workspaceOuPair.getWorkspaceId()))
|
||||
@ -1538,6 +1527,12 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService {
|
||||
.map(WorkspaceProductService.ProductPermission::getPermissions)
|
||||
.filter(f -> !CollectionUtils.isEmpty(f))
|
||||
.flatMap(Collection::stream)
|
||||
.filter(f -> StringUtils.isBlank(identityAuthReq.getItemCode())
|
||||
|| Objects.equals(identityAuthReq.getItemCode(), f.getItemCode()))
|
||||
.filter(f -> StringUtils.isBlank(identityAuthReq.getAppType())
|
||||
|| Objects.equals(identityAuthReq.getAppType(), f.getAppType()))
|
||||
.filter(f -> Objects.isNull(identityAuthReq.getVersionMax())
|
||||
|| identityAuthReq.getVersionMax().compareTo(f.getVersion()) < 1)
|
||||
.collect(Collectors.toList()))
|
||||
.orElse(null);
|
||||
|
||||
@ -1553,8 +1548,6 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService {
|
||||
return buildPermissionsV2(workspaceOuPair, productPermissions, saasRoles, rolePermissions, allFeatures);
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
watch.stop();
|
||||
watch.prettyPrint(TimeUnit.MILLISECONDS);
|
||||
|
||||
IdentityAuthRes result = new IdentityAuthRes();
|
||||
result.setIdentity(identityAuthReq.getIdentityId());
|
||||
|
||||
Loading…
Reference in New Issue
Block a user