feat:(REQ-2720) 页面元素绑定关系更新后,触发更新产品、角色权限
This commit is contained in:
parent
9e85790cc7
commit
a023d39607
@ -2,10 +2,10 @@ package cn.axzo.tyr.server.event.inner;
|
|||||||
|
|
||||||
import cn.axzo.framework.rocketmq.Event;
|
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.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.res.SaasFeatureResourceResp;
|
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
|
||||||
|
import cn.axzo.tyr.server.event.payload.PageElementFeatureResourceUpsertPayload;
|
||||||
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.dao.SaasFeatureDao;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasFeature;
|
import cn.axzo.tyr.server.repository.entity.SaasFeature;
|
||||||
@ -39,7 +39,7 @@ import static cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation.
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
public class CacheProductPermissionHandler implements EventHandler, InitializingBean {
|
public class CacheProductPermissionHandler implements InitializingBean {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private EventConsumer eventConsumer;
|
private EventConsumer eventConsumer;
|
||||||
@ -52,19 +52,7 @@ public class CacheProductPermissionHandler implements EventHandler, Initializing
|
|||||||
@Autowired
|
@Autowired
|
||||||
private SaasFeatureDao saasFeatureDao;
|
private SaasFeatureDao saasFeatureDao;
|
||||||
|
|
||||||
@Override
|
private void storeProductPermission(List<SaasProductModuleFeatureRelation> productFeatures) {
|
||||||
public void onEvent(Event event, EventConsumer.Context context) {
|
|
||||||
log.info("begin cached product permission handler rocketmq event: {}", event);
|
|
||||||
ProductPermissionCreatedPayload payload = event.normalizedData(ProductPermissionCreatedPayload.class);
|
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(payload.getProductModuleIds())) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
PageProductFeatureRelationReq pageProductFeatureRelationReq = PageProductFeatureRelationReq.builder()
|
|
||||||
.productModuleIds(payload.getProductModuleIds())
|
|
||||||
.build();
|
|
||||||
List<SaasProductModuleFeatureRelation> productFeatures = productFeatureRelationService.list(pageProductFeatureRelationReq);
|
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(productFeatures)) {
|
if (CollectionUtils.isEmpty(productFeatures)) {
|
||||||
return;
|
return;
|
||||||
@ -80,13 +68,44 @@ public class CacheProductPermissionHandler implements EventHandler, Initializing
|
|||||||
.productPermissions(productPermissions)
|
.productPermissions(productPermissions)
|
||||||
.build();
|
.build();
|
||||||
productPermissionCacheService.store(storeProductPermissionParam);
|
productPermissionCacheService.store(storeProductPermissionParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onProductPermissionUpsert(Event event, EventConsumer.Context context) {
|
||||||
|
log.info("begin cached product permission handler rocketmq event: {}", event);
|
||||||
|
ProductPermissionCreatedPayload payload = event.normalizedData(ProductPermissionCreatedPayload.class);
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(payload.getProductModuleIds())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
PageProductFeatureRelationReq pageProductFeatureRelationReq = PageProductFeatureRelationReq.builder()
|
||||||
|
.productModuleIds(payload.getProductModuleIds())
|
||||||
|
.build();
|
||||||
|
List<SaasProductModuleFeatureRelation> productFeatures = productFeatureRelationService.list(pageProductFeatureRelationReq);
|
||||||
|
|
||||||
|
storeProductPermission(productFeatures);
|
||||||
|
log.info("end cached product permission handler rocketmq event: {}", event);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onPageElementFeatureResourceUpsert(Event event, EventConsumer.Context context) {
|
||||||
|
log.info("begin cached product permission handler rocketmq event: {}", event);
|
||||||
|
PageElementFeatureResourceUpsertPayload payload = event.normalizedData(PageElementFeatureResourceUpsertPayload.class);
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(payload.getRelations())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
PageProductFeatureRelationReq pageProductFeatureRelationReq = PageProductFeatureRelationReq.builder()
|
||||||
|
.build();
|
||||||
|
List<SaasProductModuleFeatureRelation> productFeatures = productFeatureRelationService.list(pageProductFeatureRelationReq);
|
||||||
|
|
||||||
|
storeProductPermission(productFeatures);
|
||||||
log.info("end cached product permission handler rocketmq event: {}", event);
|
log.info("end cached product permission handler rocketmq event: {}", event);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() throws Exception {
|
public void afterPropertiesSet() throws Exception {
|
||||||
eventConsumer.registerHandler(EventTypeEnum.PRODUCT_PERMISSION_CREATED.getEventCode(), this);
|
eventConsumer.registerHandler(EventTypeEnum.PRODUCT_PERMISSION_CREATED.getEventCode(), this::onProductPermissionUpsert);
|
||||||
|
eventConsumer.registerHandler(EventTypeEnum.PAGE_ELEMENT_FEATURE_RESOURCE_UPSERT.getEventCode(), this::onPageElementFeatureResourceUpsert);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ProductPermissionCacheService.ProductPermission> resolveProductPermissions(List<SaasProductModuleFeatureRelation> productPermissions) {
|
public List<ProductPermissionCacheService.ProductPermission> resolveProductPermissions(List<SaasProductModuleFeatureRelation> productPermissions) {
|
||||||
@ -208,10 +227,10 @@ public class CacheProductPermissionHandler implements EventHandler, Initializing
|
|||||||
|
|
||||||
return parentFeatureCodes.stream()
|
return parentFeatureCodes.stream()
|
||||||
.map(featureCode -> ProductPermissionCacheService.PermissionDTO.builder()
|
.map(featureCode -> ProductPermissionCacheService.PermissionDTO.builder()
|
||||||
.featureId(featureResource.getId())
|
.featureId(f.getId())
|
||||||
.featureCode(featureCode)
|
.featureCode(featureCode)
|
||||||
.featureType(featureResource.getFeatureType())
|
.featureType(f.getFeatureType())
|
||||||
.terminal(featureResource.getTerminal())
|
.terminal(f.getTerminal())
|
||||||
.cooperateType(relation.getDictCode())
|
.cooperateType(relation.getDictCode())
|
||||||
.build())
|
.build())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import cn.axzo.tyr.client.common.enums.FeatureResourceType;
|
|||||||
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.res.SaasFeatureResourceResp;
|
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
|
||||||
|
import cn.axzo.tyr.server.event.payload.PageElementFeatureResourceUpsertPayload;
|
||||||
import cn.axzo.tyr.server.event.payload.ProductPermissionCreatedPayload;
|
import cn.axzo.tyr.server.event.payload.ProductPermissionCreatedPayload;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasProductModuleFeatureRelation;
|
import cn.axzo.tyr.server.repository.entity.SaasProductModuleFeatureRelation;
|
||||||
import cn.axzo.tyr.server.service.ProductFeatureRelationService;
|
import cn.axzo.tyr.server.service.ProductFeatureRelationService;
|
||||||
@ -35,7 +36,7 @@ import static cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation.
|
|||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
public class CacheProductSaasFeatureResourceHandler implements EventHandler, InitializingBean {
|
public class CacheProductSaasFeatureResourceHandler implements InitializingBean {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private EventConsumer eventConsumer;
|
private EventConsumer eventConsumer;
|
||||||
@ -52,20 +53,7 @@ public class CacheProductSaasFeatureResourceHandler implements EventHandler, Ini
|
|||||||
FeatureResourceType.GROUP.getCode(),
|
FeatureResourceType.GROUP.getCode(),
|
||||||
FeatureResourceType.APP_ENTRY.getCode());
|
FeatureResourceType.APP_ENTRY.getCode());
|
||||||
|
|
||||||
@Override
|
private void storeProductFeatureResource(List<SaasProductModuleFeatureRelation> productFeatures) {
|
||||||
public void onEvent(Event event, EventConsumer.Context context) {
|
|
||||||
log.info("begin cached product featureResource handler rocketmq event: {}", event);
|
|
||||||
ProductPermissionCreatedPayload payload = event.normalizedData(ProductPermissionCreatedPayload.class);
|
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(payload.getProductModuleIds())) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
PageProductFeatureRelationReq pageProductFeatureRelationReq = PageProductFeatureRelationReq.builder()
|
|
||||||
.productModuleIds(payload.getProductModuleIds())
|
|
||||||
.type(NEW_FEATURE)
|
|
||||||
.build();
|
|
||||||
List<SaasProductModuleFeatureRelation> productFeatures = productFeatureRelationService.list(pageProductFeatureRelationReq);
|
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(productFeatures)) {
|
if (CollectionUtils.isEmpty(productFeatures)) {
|
||||||
return;
|
return;
|
||||||
@ -82,12 +70,48 @@ public class CacheProductSaasFeatureResourceHandler implements EventHandler, Ini
|
|||||||
.build();
|
.build();
|
||||||
productSaasFeatureResourceCacheService.store(storeProductFeatureResourceParam);
|
productSaasFeatureResourceCacheService.store(storeProductFeatureResourceParam);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onProductPermissionUpsert(Event event, EventConsumer.Context context) {
|
||||||
|
log.info("begin cached product featureResource handler rocketmq event: {}", event);
|
||||||
|
ProductPermissionCreatedPayload payload = event.normalizedData(ProductPermissionCreatedPayload.class);
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(payload.getProductModuleIds())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
PageProductFeatureRelationReq pageProductFeatureRelationReq = PageProductFeatureRelationReq.builder()
|
||||||
|
.productModuleIds(payload.getProductModuleIds())
|
||||||
|
.type(NEW_FEATURE)
|
||||||
|
.build();
|
||||||
|
List<SaasProductModuleFeatureRelation> productFeatures = productFeatureRelationService.list(pageProductFeatureRelationReq);
|
||||||
|
|
||||||
|
storeProductFeatureResource(productFeatures);
|
||||||
|
log.info("end cached product featureResource handler rocketmq event: {}", event);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onPageElementFeatureResourceUpsert(Event event, EventConsumer.Context context) {
|
||||||
|
log.info("begin cached product featureResource handler rocketmq event: {}", event);
|
||||||
|
PageElementFeatureResourceUpsertPayload payload = event.normalizedData(PageElementFeatureResourceUpsertPayload.class);
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(payload.getRelations())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
PageProductFeatureRelationReq pageProductFeatureRelationReq = PageProductFeatureRelationReq.builder()
|
||||||
|
.type(NEW_FEATURE)
|
||||||
|
.build();
|
||||||
|
List<SaasProductModuleFeatureRelation> productFeatures = productFeatureRelationService.list(pageProductFeatureRelationReq);
|
||||||
|
|
||||||
|
storeProductFeatureResource(productFeatures);
|
||||||
log.info("end cached product featureResource handler rocketmq event: {}", event);
|
log.info("end cached product featureResource handler rocketmq event: {}", event);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() throws Exception {
|
public void afterPropertiesSet() throws Exception {
|
||||||
eventConsumer.registerHandler(EventTypeEnum.PRODUCT_PERMISSION_CREATED.getEventCode(), this);
|
eventConsumer.registerHandler(EventTypeEnum.PRODUCT_PERMISSION_CREATED.getEventCode(), this::onProductPermissionUpsert);
|
||||||
|
eventConsumer.registerHandler(EventTypeEnum.PAGE_ELEMENT_FEATURE_RESOURCE_UPSERT.getEventCode(), this::onPageElementFeatureResourceUpsert);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ProductSaasFeatureResourceCacheService.ProductFeatureResource> resolveProductFeatureResources(List<SaasProductModuleFeatureRelation> productPermissions) {
|
public List<ProductSaasFeatureResourceCacheService.ProductFeatureResource> resolveProductFeatureResources(List<SaasProductModuleFeatureRelation> productPermissions) {
|
||||||
@ -134,10 +158,10 @@ public class CacheProductSaasFeatureResourceHandler implements EventHandler, Ini
|
|||||||
}
|
}
|
||||||
|
|
||||||
return ProductSaasFeatureResourceCacheService.FeatureResourceDTO.builder()
|
return ProductSaasFeatureResourceCacheService.FeatureResourceDTO.builder()
|
||||||
.featureId(featureResource.getId())
|
.featureId(f.getId())
|
||||||
.featureType(featureResource.getFeatureType())
|
.featureType(f.getFeatureType())
|
||||||
.terminal(featureResource.getTerminal())
|
.terminal(f.getTerminal())
|
||||||
.uniCode(featureResource.getUniCode())
|
.uniCode(f.getUniCode())
|
||||||
.cooperateType(relation.getDictCode())
|
.cooperateType(relation.getDictCode())
|
||||||
.build();
|
.build();
|
||||||
})
|
})
|
||||||
|
|||||||
@ -3,13 +3,16 @@ package cn.axzo.tyr.server.event.inner;
|
|||||||
import cn.axzo.framework.rocketmq.Event;
|
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.PageProductFeatureRelationReq;
|
||||||
import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq;
|
import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq;
|
||||||
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.server.event.payload.PageElementFeatureResourceUpsertPayload;
|
||||||
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.repository.dao.SaasFeatureDao;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasFeature;
|
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.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;
|
||||||
@ -39,7 +42,7 @@ import static cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation.
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
public class CacheRolePermissionHandler implements EventHandler, InitializingBean {
|
public class CacheRolePermissionHandler implements InitializingBean {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private EventConsumer eventConsumer;
|
private EventConsumer eventConsumer;
|
||||||
@ -52,20 +55,7 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea
|
|||||||
@Autowired
|
@Autowired
|
||||||
private SaasFeatureDao saasFeatureDao;
|
private SaasFeatureDao saasFeatureDao;
|
||||||
|
|
||||||
@Override
|
private void storeRolePermission(List<SaasRoleRes> roles) {
|
||||||
public void onEvent(Event event, EventConsumer.Context context) {
|
|
||||||
log.info("begin cached role permission handler rocketmq event: {}", event);
|
|
||||||
RolePermissionCreatedPayload payload = event.normalizedData(RolePermissionCreatedPayload.class);
|
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(payload.getRoleIds())) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
RoleService.ListSaasRoleParam listSaasRoleParam = RoleService.ListSaasRoleParam.builder()
|
|
||||||
.roleIds(Lists.newArrayList(payload.getRoleIds()))
|
|
||||||
.needPermissionRelation(true)
|
|
||||||
.build();
|
|
||||||
List<SaasRoleRes> roles = roleService.list(listSaasRoleParam);
|
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(roles)) {
|
if (CollectionUtils.isEmpty(roles)) {
|
||||||
return;
|
return;
|
||||||
@ -81,12 +71,45 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea
|
|||||||
.rolePermissions(rolePermissions)
|
.rolePermissions(rolePermissions)
|
||||||
.build();
|
.build();
|
||||||
rolePermissionCacheService.store(storeRolePermissionParam);
|
rolePermissionCacheService.store(storeRolePermissionParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onRolePermissionUpsert(Event event, EventConsumer.Context context) {
|
||||||
|
log.info("begin cached role permission handler rocketmq event: {}", event);
|
||||||
|
RolePermissionCreatedPayload payload = event.normalizedData(RolePermissionCreatedPayload.class);
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(payload.getRoleIds())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
RoleService.ListSaasRoleParam listSaasRoleParam = RoleService.ListSaasRoleParam.builder()
|
||||||
|
.roleIds(Lists.newArrayList(payload.getRoleIds()))
|
||||||
|
.needPermissionRelation(true)
|
||||||
|
.build();
|
||||||
|
List<SaasRoleRes> roles = roleService.list(listSaasRoleParam);
|
||||||
|
|
||||||
|
storeRolePermission(roles);
|
||||||
log.info("end cached role permission handler rocketmq event: {}", event);
|
log.info("end cached role permission handler rocketmq event: {}", event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onPageElementFeatureResourceUpsert(Event event, EventConsumer.Context context) {
|
||||||
|
PageElementFeatureResourceUpsertPayload payload = event.normalizedData(PageElementFeatureResourceUpsertPayload.class);
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(payload.getRelations())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
RoleService.ListSaasRoleParam listSaasRoleParam = RoleService.ListSaasRoleParam.builder()
|
||||||
|
.needPermissionRelation(true)
|
||||||
|
.build();
|
||||||
|
List<SaasRoleRes> roles = roleService.list(listSaasRoleParam);
|
||||||
|
|
||||||
|
storeRolePermission(roles);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() throws Exception {
|
public void afterPropertiesSet() throws Exception {
|
||||||
eventConsumer.registerHandler(EventTypeEnum.ROLE_PERMISSION_CREATED.getEventCode(), this);
|
eventConsumer.registerHandler(EventTypeEnum.ROLE_PERMISSION_CREATED.getEventCode(), this::onRolePermissionUpsert);
|
||||||
|
eventConsumer.registerHandler(EventTypeEnum.PAGE_ELEMENT_FEATURE_RESOURCE_UPSERT.getEventCode(), this::onPageElementFeatureResourceUpsert);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<RolePermissionCacheService.RolePermission> resolveRolePermission(List<SaasRoleRes> roles) {
|
public List<RolePermissionCacheService.RolePermission> resolveRolePermission(List<SaasRoleRes> roles) {
|
||||||
@ -151,10 +174,10 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea
|
|||||||
.map(parentSaasFeatures::get)
|
.map(parentSaasFeatures::get)
|
||||||
.filter(Objects::nonNull)
|
.filter(Objects::nonNull)
|
||||||
.map(f -> RolePermissionCacheService.PermissionDTO.builder()
|
.map(f -> RolePermissionCacheService.PermissionDTO.builder()
|
||||||
.featureId(saasFeature.getId())
|
.featureId(f.getId())
|
||||||
.featureCode(saasFeature.getFeatureCode())
|
.featureCode(f.getFeatureCode())
|
||||||
.featureType(saasFeature.getFeatureType())
|
.featureType(f.getFeatureType())
|
||||||
.terminal(saasFeature.getTerminal())
|
.terminal(f.getTerminal())
|
||||||
.build())
|
.build())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
@ -197,10 +220,10 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea
|
|||||||
|
|
||||||
return parentFeatureCodes.stream()
|
return parentFeatureCodes.stream()
|
||||||
.map(featureCode -> RolePermissionCacheService.PermissionDTO.builder()
|
.map(featureCode -> RolePermissionCacheService.PermissionDTO.builder()
|
||||||
.featureId(featureResource.getId())
|
.featureId(f.getId())
|
||||||
.featureCode(featureCode)
|
.featureCode(featureCode)
|
||||||
.featureType(featureResource.getFeatureType())
|
.featureType(f.getFeatureType())
|
||||||
.terminal(featureResource.getTerminal())
|
.terminal(f.getTerminal())
|
||||||
.build())
|
.build())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
})
|
})
|
||||||
|
|||||||
@ -2,12 +2,11 @@ package cn.axzo.tyr.server.event.inner;
|
|||||||
|
|
||||||
import cn.axzo.framework.rocketmq.Event;
|
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.tyr.client.common.enums.FeatureResourceType;
|
|
||||||
import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq;
|
import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq;
|
||||||
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.server.event.payload.PageElementFeatureResourceUpsertPayload;
|
||||||
import cn.axzo.tyr.server.event.payload.RolePermissionCreatedPayload;
|
import cn.axzo.tyr.server.event.payload.RolePermissionCreatedPayload;
|
||||||
import cn.axzo.tyr.server.service.RoleSaasFeatureResourceCacheService;
|
import cn.axzo.tyr.server.service.RoleSaasFeatureResourceCacheService;
|
||||||
import cn.axzo.tyr.server.service.RoleService;
|
import cn.axzo.tyr.server.service.RoleService;
|
||||||
@ -37,7 +36,7 @@ import static cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation.
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
public class CacheRoleSaasFeatureResourceHandler implements EventHandler, InitializingBean {
|
public class CacheRoleSaasFeatureResourceHandler implements InitializingBean {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private EventConsumer eventConsumer;
|
private EventConsumer eventConsumer;
|
||||||
@ -48,26 +47,7 @@ public class CacheRoleSaasFeatureResourceHandler implements EventHandler, Initia
|
|||||||
@Autowired
|
@Autowired
|
||||||
private RoleSaasFeatureResourceCacheService roleSaasFeatureResourceCacheService;
|
private RoleSaasFeatureResourceCacheService roleSaasFeatureResourceCacheService;
|
||||||
|
|
||||||
@Override
|
private void storeRoleFeatureResource(List<SaasRoleRes> roles) {
|
||||||
public void onEvent(Event event, EventConsumer.Context context) {
|
|
||||||
log.info("begin cached role saasFeatureResource handler rocketmq event: {}", event);
|
|
||||||
RolePermissionCreatedPayload payload = event.normalizedData(RolePermissionCreatedPayload.class);
|
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(payload.getRoleIds())) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
RoleService.ListSaasRoleParam listSaasRoleParam = RoleService.ListSaasRoleParam.builder()
|
|
||||||
.roleIds(Lists.newArrayList(payload.getRoleIds()))
|
|
||||||
.needPermissionRelation(true)
|
|
||||||
.type(NEW_FEATURE)
|
|
||||||
.featureResourceTypes(Lists.newArrayList(FeatureResourceType.MENU,
|
|
||||||
FeatureResourceType.PAGE,
|
|
||||||
FeatureResourceType.MENU_PARTITION_GROUP,
|
|
||||||
FeatureResourceType.GROUP,
|
|
||||||
FeatureResourceType.APP_ENTRY))
|
|
||||||
.build();
|
|
||||||
List<SaasRoleRes> roles = roleService.list(listSaasRoleParam);
|
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(roles)) {
|
if (CollectionUtils.isEmpty(roles)) {
|
||||||
return;
|
return;
|
||||||
@ -83,12 +63,48 @@ public class CacheRoleSaasFeatureResourceHandler implements EventHandler, Initia
|
|||||||
.roleSaasFeatureResources(rolePermissions)
|
.roleSaasFeatureResources(rolePermissions)
|
||||||
.build();
|
.build();
|
||||||
roleSaasFeatureResourceCacheService.store(storeRoleFeatureResourceParam);
|
roleSaasFeatureResourceCacheService.store(storeRoleFeatureResourceParam);
|
||||||
|
}
|
||||||
|
public void onRolePermissionUpsert(Event event, EventConsumer.Context context) {
|
||||||
|
log.info("begin cached role saasFeatureResource handler rocketmq event: {}", event);
|
||||||
|
RolePermissionCreatedPayload payload = event.normalizedData(RolePermissionCreatedPayload.class);
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(payload.getRoleIds())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
RoleService.ListSaasRoleParam listSaasRoleParam = RoleService.ListSaasRoleParam.builder()
|
||||||
|
.roleIds(Lists.newArrayList(payload.getRoleIds()))
|
||||||
|
.needPermissionRelation(true)
|
||||||
|
.type(NEW_FEATURE)
|
||||||
|
.build();
|
||||||
|
List<SaasRoleRes> roles = roleService.list(listSaasRoleParam);
|
||||||
|
|
||||||
|
storeRoleFeatureResource(roles);
|
||||||
|
|
||||||
log.info("end cached role saasFeatureResource handler rocketmq event: {}", event);
|
log.info("end cached role saasFeatureResource handler rocketmq event: {}", event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onPageElementFeatureResourceUpsert(Event event, EventConsumer.Context context) {
|
||||||
|
PageElementFeatureResourceUpsertPayload payload = event.normalizedData(PageElementFeatureResourceUpsertPayload.class);
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(payload.getRelations())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
RoleService.ListSaasRoleParam listSaasRoleParam = RoleService.ListSaasRoleParam.builder()
|
||||||
|
.needPermissionRelation(true)
|
||||||
|
.type(NEW_FEATURE)
|
||||||
|
.build();
|
||||||
|
List<SaasRoleRes> roles = roleService.list(listSaasRoleParam);
|
||||||
|
|
||||||
|
storeRoleFeatureResource(roles);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() throws Exception {
|
public void afterPropertiesSet() throws Exception {
|
||||||
eventConsumer.registerHandler(EventTypeEnum.ROLE_PERMISSION_CREATED.getEventCode(), this);
|
eventConsumer.registerHandler(EventTypeEnum.ROLE_PERMISSION_CREATED.getEventCode(), this::onRolePermissionUpsert);
|
||||||
|
eventConsumer.registerHandler(EventTypeEnum.PAGE_ELEMENT_FEATURE_RESOURCE_UPSERT.getEventCode(), this::onPageElementFeatureResourceUpsert);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<RoleSaasFeatureResourceCacheService.RoleFeatureResource> resolveRoleFeatureResource(List<SaasRoleRes> roles) {
|
public List<RoleSaasFeatureResourceCacheService.RoleFeatureResource> resolveRoleFeatureResource(List<SaasRoleRes> roles) {
|
||||||
@ -127,10 +143,10 @@ public class CacheRoleSaasFeatureResourceHandler implements EventHandler, Initia
|
|||||||
}
|
}
|
||||||
|
|
||||||
return RoleSaasFeatureResourceCacheService.SaasFeatureResourceDTO.builder()
|
return RoleSaasFeatureResourceCacheService.SaasFeatureResourceDTO.builder()
|
||||||
.featureId(featureResource.getId())
|
.featureId(f.getId())
|
||||||
.featureType(featureResource.getFeatureType())
|
.featureType(f.getFeatureType())
|
||||||
.terminal(featureResource.getTerminal())
|
.terminal(f.getTerminal())
|
||||||
.uniCode(featureResource.getUniCode())
|
.uniCode(f.getUniCode())
|
||||||
.build();
|
.build();
|
||||||
})
|
})
|
||||||
.filter(Objects::nonNull)
|
.filter(Objects::nonNull)
|
||||||
|
|||||||
@ -10,6 +10,7 @@ public enum EventTypeEnum {
|
|||||||
ROLE_PERMISSION_CREATED("role-permission", "role-permission-created", "角色权限添加"),
|
ROLE_PERMISSION_CREATED("role-permission", "role-permission-created", "角色权限添加"),
|
||||||
SAAS_FEATURE_UPSERT("saas-feature", "saas-feature-upsert", "旧菜单树更新"),
|
SAAS_FEATURE_UPSERT("saas-feature", "saas-feature-upsert", "旧菜单树更新"),
|
||||||
SAAS_FEATURE_RESOURCE_UPSERT("saas-feature-resource", "saas-feature-resource-upsert", "新菜单树更新"),
|
SAAS_FEATURE_RESOURCE_UPSERT("saas-feature-resource", "saas-feature-resource-upsert", "新菜单树更新"),
|
||||||
|
PAGE_ELEMENT_FEATURE_RESOURCE_UPSERT("page-element-feature-resource", "page-element-feature-resource-upsert", "菜单-页面元素绑定关系更新"),
|
||||||
;
|
;
|
||||||
|
|
||||||
EventTypeEnum(String model, String name, String desc) {
|
EventTypeEnum(String model, String name, String desc) {
|
||||||
|
|||||||
@ -0,0 +1,19 @@
|
|||||||
|
package cn.axzo.tyr.server.event.payload;
|
||||||
|
|
||||||
|
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class PageElementFeatureResourceUpsertPayload implements Serializable {
|
||||||
|
|
||||||
|
private List<SaasPageElementFeatureResourceRelation> relations;
|
||||||
|
}
|
||||||
@ -48,7 +48,7 @@ public class CacheProductFeatureResourceJob extends IJobHandler {
|
|||||||
Event event = Event.builder()
|
Event event = Event.builder()
|
||||||
.data(payload)
|
.data(payload)
|
||||||
.build();
|
.build();
|
||||||
cacheProductSaasFeatureResourceHandler.onEvent(event, null);
|
cacheProductSaasFeatureResourceHandler.onProductPermissionUpsert(event, null);
|
||||||
return ReturnT.SUCCESS;
|
return ReturnT.SUCCESS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -48,7 +48,7 @@ public class CacheProductPermissionJob extends IJobHandler {
|
|||||||
Event event = Event.builder()
|
Event event = Event.builder()
|
||||||
.data(payload)
|
.data(payload)
|
||||||
.build();
|
.build();
|
||||||
cacheProductPermissionHandler.onEvent(event, null);
|
cacheProductPermissionHandler.onProductPermissionUpsert(event, null);
|
||||||
return ReturnT.SUCCESS;
|
return ReturnT.SUCCESS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,22 +4,29 @@ import cn.axzo.basics.common.BeanMapper;
|
|||||||
import cn.axzo.basics.common.util.AssertUtil;
|
import cn.axzo.basics.common.util.AssertUtil;
|
||||||
import cn.axzo.basics.common.util.StopWatchUtil;
|
import cn.axzo.basics.common.util.StopWatchUtil;
|
||||||
import cn.axzo.framework.domain.page.PageResp;
|
import cn.axzo.framework.domain.page.PageResp;
|
||||||
|
import cn.axzo.framework.rocketmq.Event;
|
||||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||||
import cn.axzo.tyr.client.common.enums.FeatureResourceType;
|
import cn.axzo.tyr.client.common.enums.FeatureResourceType;
|
||||||
import cn.axzo.tyr.client.common.enums.PageElementFeatureResourceRelationTypeEnum;
|
import cn.axzo.tyr.client.common.enums.PageElementFeatureResourceRelationTypeEnum;
|
||||||
import cn.axzo.tyr.client.common.enums.PageElementTypeEnum;
|
import cn.axzo.tyr.client.common.enums.PageElementTypeEnum;
|
||||||
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.IdentityAuthReq;
|
||||||
|
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||||
|
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
||||||
|
import cn.axzo.tyr.client.model.req.PageQueryElementReq;
|
||||||
import cn.axzo.tyr.client.model.res.GetUserHasPermissionPageElementResp;
|
import cn.axzo.tyr.client.model.res.GetUserHasPermissionPageElementResp;
|
||||||
import cn.axzo.tyr.client.model.res.IdentityAuthRes;
|
import cn.axzo.tyr.client.model.res.IdentityAuthRes;
|
||||||
import cn.axzo.tyr.client.model.res.PageElementBasicDTO;
|
import cn.axzo.tyr.client.model.res.PageElementBasicDTO;
|
||||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||||
|
import cn.axzo.tyr.server.config.MqProducer;
|
||||||
|
import cn.axzo.tyr.server.event.payload.PageElementFeatureResourceUpsertPayload;
|
||||||
import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao;
|
import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao;
|
||||||
import cn.axzo.tyr.server.repository.dao.SaasPageElementDao;
|
import cn.axzo.tyr.server.repository.dao.SaasPageElementDao;
|
||||||
import cn.axzo.tyr.server.repository.dao.SaasPageElementFeatureResourceRelationDao;
|
import cn.axzo.tyr.server.repository.dao.SaasPageElementFeatureResourceRelationDao;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
|
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
|
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
|
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation;
|
|
||||||
import cn.axzo.tyr.server.service.SaasPageElementService;
|
import cn.axzo.tyr.server.service.SaasPageElementService;
|
||||||
import cn.axzo.tyr.server.service.TyrSaasAuthService;
|
import cn.axzo.tyr.server.service.TyrSaasAuthService;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
@ -38,12 +45,18 @@ import org.springframework.cloud.context.config.annotation.RefreshScope;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static cn.axzo.tyr.server.event.inner.EventTypeEnum.PAGE_ELEMENT_FEATURE_RESOURCE_UPSERT;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author likunpeng
|
* @author likunpeng
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
@ -59,6 +72,7 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
|
|||||||
private final SaasPageElementFeatureResourceRelationDao saasPageElementFeatureResourceRelationDao;
|
private final SaasPageElementFeatureResourceRelationDao saasPageElementFeatureResourceRelationDao;
|
||||||
private final SaasFeatureResourceDao saasFeatureResourceDao;
|
private final SaasFeatureResourceDao saasFeatureResourceDao;
|
||||||
private final TyrSaasAuthService tyrSaasAuthService;
|
private final TyrSaasAuthService tyrSaasAuthService;
|
||||||
|
private final MqProducer mqProducer;
|
||||||
|
|
||||||
@Qualifier("asyncExecutor")
|
@Qualifier("asyncExecutor")
|
||||||
@Autowired
|
@Autowired
|
||||||
@ -66,6 +80,8 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
|
|||||||
@Value("${not.auth.featureCodes:}")
|
@Value("${not.auth.featureCodes:}")
|
||||||
private Set<String> notAuthFeatureCodes;
|
private Set<String> notAuthFeatureCodes;
|
||||||
|
|
||||||
|
private static final String TARGET_TYPE = "pageElementFeatureResourceId";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void report(PageElementReportReq request) {
|
public void report(PageElementReportReq request) {
|
||||||
@ -153,16 +169,28 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
|
|||||||
Lists.newArrayList(modifyPageElementRelation.getFeatureResourceUniCode()), Lists.newArrayList(modifyPageElementRelation.getRelationType()), modifyPageElementRelation.getOperatorId());
|
Lists.newArrayList(modifyPageElementRelation.getFeatureResourceUniCode()), Lists.newArrayList(modifyPageElementRelation.getRelationType()), modifyPageElementRelation.getOperatorId());
|
||||||
|
|
||||||
// 保存新的绑定关系
|
// 保存新的绑定关系
|
||||||
if (CollectionUtils.isNotEmpty(modifyPageElementRelation.getPageElementCodes())) {
|
if (CollectionUtils.isEmpty(modifyPageElementRelation.getPageElementCodes())) {
|
||||||
List<SaasPageElementFeatureResourceRelation> relations = modifyPageElementRelation.getPageElementCodes().stream().map(e -> SaasPageElementFeatureResourceRelation.builder()
|
return;
|
||||||
.pageElementCode(e)
|
|
||||||
.featureResourceUniCode(modifyPageElementRelation.getFeatureResourceUniCode())
|
|
||||||
.terminal(modifyPageElementRelation.getTerminal())
|
|
||||||
.type(modifyPageElementRelation.getRelationType())
|
|
||||||
.createBy(modifyPageElementRelation.getOperatorId())
|
|
||||||
.build()).collect(Collectors.toList());
|
|
||||||
saasPageElementFeatureResourceRelationDao.saveBatch(relations);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 保存新的绑定关系
|
||||||
|
List<SaasPageElementFeatureResourceRelation> relations = modifyPageElementRelation.getPageElementCodes().stream().map(e -> SaasPageElementFeatureResourceRelation.builder()
|
||||||
|
.pageElementCode(e)
|
||||||
|
.featureResourceUniCode(modifyPageElementRelation.getFeatureResourceUniCode())
|
||||||
|
.terminal(modifyPageElementRelation.getTerminal())
|
||||||
|
.type(modifyPageElementRelation.getRelationType())
|
||||||
|
.createBy(modifyPageElementRelation.getOperatorId())
|
||||||
|
.build()).collect(Collectors.toList());
|
||||||
|
saasPageElementFeatureResourceRelationDao.saveBatch(relations);
|
||||||
|
|
||||||
|
Event event = Event.builder()
|
||||||
|
.targetType(TARGET_TYPE)
|
||||||
|
.eventCode(PAGE_ELEMENT_FEATURE_RESOURCE_UPSERT.getEventCode())
|
||||||
|
.data(PageElementFeatureResourceUpsertPayload.builder()
|
||||||
|
.relations(relations)
|
||||||
|
.build())
|
||||||
|
.build();
|
||||||
|
mqProducer.send(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user