feat:(REQ-2720) 修改旧菜单树缓存,因为没有把父节点的权限存储起来,但是实际有权限
This commit is contained in:
parent
58bf864ac2
commit
6e45898d3b
@ -37,6 +37,11 @@ public class SimplePermissionPointResp implements IBaseTree<SimplePermissionPoin
|
|||||||
/** 上级权限点ID **/
|
/** 上级权限点ID **/
|
||||||
private Long parentId;
|
private Long parentId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 类型 0.模块 1.菜单 2页面 3功能
|
||||||
|
*/
|
||||||
|
private Integer featureType;
|
||||||
|
|
||||||
/** 子节点 **/
|
/** 子节点 **/
|
||||||
private List<SimplePermissionPointResp> children;
|
private List<SimplePermissionPointResp> children;
|
||||||
|
|
||||||
|
|||||||
@ -5,11 +5,12 @@ import cn.axzo.framework.rocketmq.EventConsumer;
|
|||||||
import cn.axzo.framework.rocketmq.EventHandler;
|
import cn.axzo.framework.rocketmq.EventHandler;
|
||||||
import cn.axzo.tyr.client.model.req.PageProductFeatureRelationReq;
|
import cn.axzo.tyr.client.model.req.PageProductFeatureRelationReq;
|
||||||
import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq;
|
import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq;
|
||||||
|
import cn.axzo.tyr.client.model.req.QueryPermissionByIdsReq;
|
||||||
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
|
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
|
||||||
|
import cn.axzo.tyr.client.model.res.SimplePermissionPointResp;
|
||||||
import cn.axzo.tyr.server.event.payload.ProductPermissionCreatedPayload;
|
import cn.axzo.tyr.server.event.payload.ProductPermissionCreatedPayload;
|
||||||
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.repository.entity.SaasProductModuleFeatureRelation;
|
||||||
|
import cn.axzo.tyr.server.service.PermissionPointService;
|
||||||
import cn.axzo.tyr.server.service.ProductFeatureRelationService;
|
import cn.axzo.tyr.server.service.ProductFeatureRelationService;
|
||||||
import cn.axzo.tyr.server.service.ProductPermissionCacheService;
|
import cn.axzo.tyr.server.service.ProductPermissionCacheService;
|
||||||
import cn.axzo.tyr.server.service.SaasFeatureResourceService;
|
import cn.axzo.tyr.server.service.SaasFeatureResourceService;
|
||||||
@ -50,7 +51,7 @@ public class CacheProductPermissionHandler implements EventHandler, Initializing
|
|||||||
@Autowired
|
@Autowired
|
||||||
private SaasFeatureResourceService saasFeatureResourceService;
|
private SaasFeatureResourceService saasFeatureResourceService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private SaasFeatureDao saasFeatureDao;
|
private PermissionPointService permissionPointService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEvent(Event event, EventConsumer.Context context) {
|
public void onEvent(Event event, EventConsumer.Context context) {
|
||||||
@ -94,9 +95,11 @@ public class CacheProductPermissionHandler implements EventHandler, Initializing
|
|||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 新的菜单树是是把有权限点的父节点也存进去了,所以直接解析
|
||||||
Map<Long, SaasFeatureResourceResp> featureResources = listSaasFeatureResource(productPermissions);
|
Map<Long, SaasFeatureResourceResp> featureResources = listSaasFeatureResource(productPermissions);
|
||||||
|
|
||||||
Map<Long, SaasFeature> saasFeatures = listSaasFeature(productPermissions);
|
// 旧的菜单树只存储了权限点信息,没有把父节点存进去,需要解析父节点进行存储
|
||||||
|
Map<Long, SimplePermissionPointResp> saasFeatures = listSaasFeature(productPermissions);
|
||||||
|
|
||||||
return productPermissions.stream()
|
return productPermissions.stream()
|
||||||
.collect(Collectors.groupingBy(SaasProductModuleFeatureRelation::getProductModuleId))
|
.collect(Collectors.groupingBy(SaasProductModuleFeatureRelation::getProductModuleId))
|
||||||
@ -135,14 +138,14 @@ public class CacheProductPermissionHandler implements EventHandler, Initializing
|
|||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
SaasFeature saasFeature = saasFeatures.get(relation.getFeatureId());
|
SimplePermissionPointResp saasFeature = saasFeatures.get(relation.getFeatureId());
|
||||||
if (Objects.isNull(saasFeature)) {
|
if (Objects.isNull(saasFeature)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Lists.newArrayList(ProductPermissionCacheService.PermissionDTO.builder()
|
return Lists.newArrayList(ProductPermissionCacheService.PermissionDTO.builder()
|
||||||
.featureId(saasFeature.getId())
|
.featureId(saasFeature.getId())
|
||||||
.featureCode(saasFeature.getFeatureCode())
|
.featureCode(saasFeature.getCode())
|
||||||
.featureType(saasFeature.getFeatureType())
|
.featureType(saasFeature.getFeatureType())
|
||||||
.terminal(saasFeature.getTerminal())
|
.terminal(saasFeature.getTerminal())
|
||||||
.cooperateType(relation.getDictCode())
|
.cooperateType(relation.getDictCode())
|
||||||
@ -187,19 +190,23 @@ public class CacheProductPermissionHandler implements EventHandler, Initializing
|
|||||||
.collect(Collectors.toMap(SaasFeatureResourceResp::getId, Function.identity()));
|
.collect(Collectors.toMap(SaasFeatureResourceResp::getId, Function.identity()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<Long, SaasFeature> listSaasFeature(List<SaasProductModuleFeatureRelation> productPermissions) {
|
private Map<Long, SimplePermissionPointResp> listSaasFeature(List<SaasProductModuleFeatureRelation> productPermissions) {
|
||||||
|
|
||||||
List<Long> featureIds = productPermissions.stream()
|
Set<Long> featureIds = productPermissions.stream()
|
||||||
.filter(e -> Objects.equals(e.getType(), OLD_FEATURE))
|
.filter(e -> Objects.equals(e.getType(), OLD_FEATURE))
|
||||||
.map(SaasProductModuleFeatureRelation::getFeatureId)
|
.map(SaasProductModuleFeatureRelation::getFeatureId)
|
||||||
.distinct()
|
.collect(Collectors.toSet());
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(featureIds)) {
|
if (CollectionUtils.isEmpty(featureIds)) {
|
||||||
return Collections.emptyMap();
|
return Collections.emptyMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
return saasFeatureDao.listByIds(featureIds).stream()
|
return permissionPointService.listPermissionByIds(
|
||||||
.collect(Collectors.toMap(SaasFeature::getId, Function.identity()));
|
QueryPermissionByIdsReq.builder()
|
||||||
|
.ids(featureIds)
|
||||||
|
.includeParent(true)
|
||||||
|
.build())
|
||||||
|
.stream()
|
||||||
|
.collect(Collectors.toMap(SimplePermissionPointResp::getId, Function.identity()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,12 +4,13 @@ import cn.axzo.framework.rocketmq.Event;
|
|||||||
import cn.axzo.framework.rocketmq.EventConsumer;
|
import cn.axzo.framework.rocketmq.EventConsumer;
|
||||||
import cn.axzo.framework.rocketmq.EventHandler;
|
import cn.axzo.framework.rocketmq.EventHandler;
|
||||||
import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq;
|
import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq;
|
||||||
|
import cn.axzo.tyr.client.model.req.QueryPermissionByIdsReq;
|
||||||
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
|
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
|
||||||
import cn.axzo.tyr.client.model.res.SaasPermissionRelationRes;
|
import cn.axzo.tyr.client.model.res.SaasPermissionRelationRes;
|
||||||
import cn.axzo.tyr.client.model.res.SaasRoleRes;
|
import cn.axzo.tyr.client.model.res.SaasRoleRes;
|
||||||
|
import cn.axzo.tyr.client.model.res.SimplePermissionPointResp;
|
||||||
import cn.axzo.tyr.server.event.payload.RolePermissionCreatedPayload;
|
import cn.axzo.tyr.server.event.payload.RolePermissionCreatedPayload;
|
||||||
import cn.axzo.tyr.server.repository.dao.SaasFeatureDao;
|
import cn.axzo.tyr.server.service.PermissionPointService;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasFeature;
|
|
||||||
import cn.axzo.tyr.server.service.RolePermissionCacheService;
|
import cn.axzo.tyr.server.service.RolePermissionCacheService;
|
||||||
import cn.axzo.tyr.server.service.RoleService;
|
import cn.axzo.tyr.server.service.RoleService;
|
||||||
import cn.axzo.tyr.server.service.SaasFeatureResourceService;
|
import cn.axzo.tyr.server.service.SaasFeatureResourceService;
|
||||||
@ -50,7 +51,7 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea
|
|||||||
@Autowired
|
@Autowired
|
||||||
private SaasFeatureResourceService saasFeatureResourceService;
|
private SaasFeatureResourceService saasFeatureResourceService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private SaasFeatureDao saasFeatureDao;
|
private PermissionPointService permissionPointService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEvent(Event event, EventConsumer.Context context) {
|
public void onEvent(Event event, EventConsumer.Context context) {
|
||||||
@ -94,7 +95,7 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea
|
|||||||
|
|
||||||
Map<Long, SaasFeatureResourceResp> featureResources = listSaasFeatureResource(roles);
|
Map<Long, SaasFeatureResourceResp> featureResources = listSaasFeatureResource(roles);
|
||||||
|
|
||||||
Map<Long, SaasFeature> saasFeatures = listSaasFeature(roles);
|
Map<Long, SimplePermissionPointResp> saasFeatures = listSaasFeature(roles);
|
||||||
|
|
||||||
return roles.stream()
|
return roles.stream()
|
||||||
.map(e -> {
|
.map(e -> {
|
||||||
@ -127,13 +128,13 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea
|
|||||||
.build())
|
.build())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
SaasFeature saasFeature = saasFeatures.get(permissionRelation.getFeatureId());
|
SimplePermissionPointResp saasFeature = saasFeatures.get(permissionRelation.getFeatureId());
|
||||||
if (Objects.isNull(saasFeature)) {
|
if (Objects.isNull(saasFeature)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return Lists.newArrayList(RolePermissionCacheService.PermissionDTO.builder()
|
return Lists.newArrayList(RolePermissionCacheService.PermissionDTO.builder()
|
||||||
.featureId(saasFeature.getId())
|
.featureId(saasFeature.getId())
|
||||||
.featureCode(saasFeature.getFeatureCode())
|
.featureCode(saasFeature.getCode())
|
||||||
.featureType(saasFeature.getFeatureType())
|
.featureType(saasFeature.getFeatureType())
|
||||||
.terminal(saasFeature.getTerminal())
|
.terminal(saasFeature.getTerminal())
|
||||||
.build());
|
.build());
|
||||||
@ -180,22 +181,26 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea
|
|||||||
.collect(Collectors.toMap(SaasFeatureResourceResp::getId, Function.identity()));
|
.collect(Collectors.toMap(SaasFeatureResourceResp::getId, Function.identity()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<Long, SaasFeature> listSaasFeature(List<SaasRoleRes> roles) {
|
private Map<Long, SimplePermissionPointResp> listSaasFeature(List<SaasRoleRes> roles) {
|
||||||
|
|
||||||
List<Long> featureIds = roles.stream()
|
Set<Long> featureIds = roles.stream()
|
||||||
.filter(e -> !CollectionUtils.isEmpty(e.getPermissionRelations()))
|
.filter(e -> !CollectionUtils.isEmpty(e.getPermissionRelations()))
|
||||||
.map(SaasRoleRes::getPermissionRelations)
|
.map(SaasRoleRes::getPermissionRelations)
|
||||||
.flatMap(Collection::stream)
|
.flatMap(Collection::stream)
|
||||||
.filter(e -> Objects.equals(e.getType(), OLD_FEATURE))
|
.filter(e -> Objects.equals(e.getType(), OLD_FEATURE))
|
||||||
.map(SaasPermissionRelationRes::getFeatureId)
|
.map(SaasPermissionRelationRes::getFeatureId)
|
||||||
.distinct()
|
.collect(Collectors.toSet());
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(featureIds)) {
|
if (CollectionUtils.isEmpty(featureIds)) {
|
||||||
return Collections.emptyMap();
|
return Collections.emptyMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
return saasFeatureDao.listByIds(featureIds).stream()
|
return permissionPointService.listPermissionByIds(
|
||||||
.collect(Collectors.toMap(SaasFeature::getId, Function.identity()));
|
QueryPermissionByIdsReq.builder()
|
||||||
|
.ids(featureIds)
|
||||||
|
.includeParent(true)
|
||||||
|
.build())
|
||||||
|
.stream()
|
||||||
|
.collect(Collectors.toMap(SimplePermissionPointResp::getId, Function.identity()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -634,7 +634,8 @@ public class PermissionPointServiceImpl implements PermissionPointService {
|
|||||||
SaasFeature::getFeatureName,
|
SaasFeature::getFeatureName,
|
||||||
SaasFeature::getParentId,
|
SaasFeature::getParentId,
|
||||||
SaasFeature::getPath,
|
SaasFeature::getPath,
|
||||||
SaasFeature::getTerminal));
|
SaasFeature::getTerminal,
|
||||||
|
SaasFeature::getFeatureType));
|
||||||
|
|
||||||
Set<Long> parentIds = new HashSet<>();
|
Set<Long> parentIds = new HashSet<>();
|
||||||
for (SaasFeature permission : allPermissions) {
|
for (SaasFeature permission : allPermissions) {
|
||||||
@ -672,6 +673,7 @@ public class PermissionPointServiceImpl implements PermissionPointService {
|
|||||||
.name(permission.getFeatureName())
|
.name(permission.getFeatureName())
|
||||||
.parentId(permission.getParentId())
|
.parentId(permission.getParentId())
|
||||||
.terminal(permission.getTerminal())
|
.terminal(permission.getTerminal())
|
||||||
|
.featureType(permission.getFeatureType())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -159,7 +159,7 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService {
|
|||||||
private final RolePermissionCacheService rolePermissionCacheService;
|
private final RolePermissionCacheService rolePermissionCacheService;
|
||||||
private final SaasRoleUserRelationMapper saasRoleUserRelationMapper;
|
private final SaasRoleUserRelationMapper saasRoleUserRelationMapper;
|
||||||
|
|
||||||
@Value("${permission.from.db:false}")
|
@Value("${permission.from.db:true}")
|
||||||
private boolean PERMISSION_FROM_DB;
|
private boolean PERMISSION_FROM_DB;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user