feat:(REQ-2720) 页面元素绑定关系更新后,触发更新产品、角色权限

This commit is contained in:
lilong 2024-08-02 14:36:02 +08:00
parent 9e85790cc7
commit a023d39607
9 changed files with 234 additions and 104 deletions

View File

@ -2,10 +2,10 @@ 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.server.event.payload.PageElementFeatureResourceUpsertPayload;
import cn.axzo.tyr.server.event.payload.ProductPermissionCreatedPayload;
import cn.axzo.tyr.server.repository.dao.SaasFeatureDao;
import cn.axzo.tyr.server.repository.entity.SaasFeature;
@ -39,7 +39,7 @@ import static cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation.
*/
@Slf4j
@Component
public class CacheProductPermissionHandler implements EventHandler, InitializingBean {
public class CacheProductPermissionHandler implements InitializingBean {
@Autowired
private EventConsumer eventConsumer;
@ -52,19 +52,7 @@ public class CacheProductPermissionHandler implements EventHandler, Initializing
@Autowired
private SaasFeatureDao saasFeatureDao;
@Override
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);
private void storeProductPermission(List<SaasProductModuleFeatureRelation> productFeatures) {
if (CollectionUtils.isEmpty(productFeatures)) {
return;
@ -80,13 +68,44 @@ public class CacheProductPermissionHandler implements EventHandler, Initializing
.productPermissions(productPermissions)
.build();
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);
}
@Override
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) {
@ -208,10 +227,10 @@ public class CacheProductPermissionHandler implements EventHandler, Initializing
return parentFeatureCodes.stream()
.map(featureCode -> ProductPermissionCacheService.PermissionDTO.builder()
.featureId(featureResource.getId())
.featureId(f.getId())
.featureCode(featureCode)
.featureType(featureResource.getFeatureType())
.terminal(featureResource.getTerminal())
.featureType(f.getFeatureType())
.terminal(f.getTerminal())
.cooperateType(relation.getDictCode())
.build())
.collect(Collectors.toList());

View File

@ -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.PageSaasFeatureResourceReq;
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.repository.entity.SaasProductModuleFeatureRelation;
import cn.axzo.tyr.server.service.ProductFeatureRelationService;
@ -35,7 +36,7 @@ import static cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation.
@Slf4j
@Component
public class CacheProductSaasFeatureResourceHandler implements EventHandler, InitializingBean {
public class CacheProductSaasFeatureResourceHandler implements InitializingBean {
@Autowired
private EventConsumer eventConsumer;
@ -52,20 +53,7 @@ public class CacheProductSaasFeatureResourceHandler implements EventHandler, Ini
FeatureResourceType.GROUP.getCode(),
FeatureResourceType.APP_ENTRY.getCode());
@Override
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);
private void storeProductFeatureResource(List<SaasProductModuleFeatureRelation> productFeatures) {
if (CollectionUtils.isEmpty(productFeatures)) {
return;
@ -82,12 +70,48 @@ public class CacheProductSaasFeatureResourceHandler implements EventHandler, Ini
.build();
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);
}
@Override
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) {
@ -134,10 +158,10 @@ public class CacheProductSaasFeatureResourceHandler implements EventHandler, Ini
}
return ProductSaasFeatureResourceCacheService.FeatureResourceDTO.builder()
.featureId(featureResource.getId())
.featureType(featureResource.getFeatureType())
.terminal(featureResource.getTerminal())
.uniCode(featureResource.getUniCode())
.featureId(f.getId())
.featureType(f.getFeatureType())
.terminal(f.getTerminal())
.uniCode(f.getUniCode())
.cooperateType(relation.getDictCode())
.build();
})

View File

@ -3,13 +3,16 @@ 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;
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.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;
@ -39,7 +42,7 @@ import static cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation.
*/
@Slf4j
@Component
public class CacheRolePermissionHandler implements EventHandler, InitializingBean {
public class CacheRolePermissionHandler implements InitializingBean {
@Autowired
private EventConsumer eventConsumer;
@ -52,20 +55,7 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea
@Autowired
private SaasFeatureDao saasFeatureDao;
@Override
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);
private void storeRolePermission(List<SaasRoleRes> roles) {
if (CollectionUtils.isEmpty(roles)) {
return;
@ -81,12 +71,45 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea
.rolePermissions(rolePermissions)
.build();
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);
}
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
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) {
@ -151,10 +174,10 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea
.map(parentSaasFeatures::get)
.filter(Objects::nonNull)
.map(f -> RolePermissionCacheService.PermissionDTO.builder()
.featureId(saasFeature.getId())
.featureCode(saasFeature.getFeatureCode())
.featureType(saasFeature.getFeatureType())
.terminal(saasFeature.getTerminal())
.featureId(f.getId())
.featureCode(f.getFeatureCode())
.featureType(f.getFeatureType())
.terminal(f.getTerminal())
.build())
.collect(Collectors.toList());
@ -197,10 +220,10 @@ public class CacheRolePermissionHandler implements EventHandler, InitializingBea
return parentFeatureCodes.stream()
.map(featureCode -> RolePermissionCacheService.PermissionDTO.builder()
.featureId(featureResource.getId())
.featureId(f.getId())
.featureCode(featureCode)
.featureType(featureResource.getFeatureType())
.terminal(featureResource.getTerminal())
.featureType(f.getFeatureType())
.terminal(f.getTerminal())
.build())
.collect(Collectors.toList());
})

View File

@ -2,12 +2,11 @@ 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.common.enums.FeatureResourceType;
import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq;
import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp;
import cn.axzo.tyr.client.model.res.SaasPermissionRelationRes;
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.service.RoleSaasFeatureResourceCacheService;
import cn.axzo.tyr.server.service.RoleService;
@ -37,7 +36,7 @@ import static cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation.
*/
@Slf4j
@Component
public class CacheRoleSaasFeatureResourceHandler implements EventHandler, InitializingBean {
public class CacheRoleSaasFeatureResourceHandler implements InitializingBean {
@Autowired
private EventConsumer eventConsumer;
@ -48,26 +47,7 @@ public class CacheRoleSaasFeatureResourceHandler implements EventHandler, Initia
@Autowired
private RoleSaasFeatureResourceCacheService roleSaasFeatureResourceCacheService;
@Override
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);
private void storeRoleFeatureResource(List<SaasRoleRes> roles) {
if (CollectionUtils.isEmpty(roles)) {
return;
@ -83,12 +63,48 @@ public class CacheRoleSaasFeatureResourceHandler implements EventHandler, Initia
.roleSaasFeatureResources(rolePermissions)
.build();
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);
}
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
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) {
@ -127,10 +143,10 @@ public class CacheRoleSaasFeatureResourceHandler implements EventHandler, Initia
}
return RoleSaasFeatureResourceCacheService.SaasFeatureResourceDTO.builder()
.featureId(featureResource.getId())
.featureType(featureResource.getFeatureType())
.terminal(featureResource.getTerminal())
.uniCode(featureResource.getUniCode())
.featureId(f.getId())
.featureType(f.getFeatureType())
.terminal(f.getTerminal())
.uniCode(f.getUniCode())
.build();
})
.filter(Objects::nonNull)

View File

@ -10,6 +10,7 @@ public enum EventTypeEnum {
ROLE_PERMISSION_CREATED("role-permission", "role-permission-created", "角色权限添加"),
SAAS_FEATURE_UPSERT("saas-feature", "saas-feature-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) {

View File

@ -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;
}

View File

@ -48,7 +48,7 @@ public class CacheProductFeatureResourceJob extends IJobHandler {
Event event = Event.builder()
.data(payload)
.build();
cacheProductSaasFeatureResourceHandler.onEvent(event, null);
cacheProductSaasFeatureResourceHandler.onProductPermissionUpsert(event, null);
return ReturnT.SUCCESS;
}
}

View File

@ -48,7 +48,7 @@ public class CacheProductPermissionJob extends IJobHandler {
Event event = Event.builder()
.data(payload)
.build();
cacheProductPermissionHandler.onEvent(event, null);
cacheProductPermissionHandler.onProductPermissionUpsert(event, null);
return ReturnT.SUCCESS;
}
}

View File

@ -4,22 +4,29 @@ import cn.axzo.basics.common.BeanMapper;
import cn.axzo.basics.common.util.AssertUtil;
import cn.axzo.basics.common.util.StopWatchUtil;
import cn.axzo.framework.domain.page.PageResp;
import cn.axzo.framework.rocketmq.Event;
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import cn.axzo.tyr.client.common.enums.FeatureResourceType;
import cn.axzo.tyr.client.common.enums.PageElementFeatureResourceRelationTypeEnum;
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.IdentityAuthRes;
import cn.axzo.tyr.client.model.res.PageElementBasicDTO;
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.SaasPageElementDao;
import cn.axzo.tyr.server.repository.dao.SaasPageElementFeatureResourceRelationDao;
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
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.TyrSaasAuthService;
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.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.ExecutorService;
import java.util.function.Function;
import java.util.stream.Collectors;
import static cn.axzo.tyr.server.event.inner.EventTypeEnum.PAGE_ELEMENT_FEATURE_RESOURCE_UPSERT;
/**
* @author likunpeng
* @version 1.0
@ -59,6 +72,7 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
private final SaasPageElementFeatureResourceRelationDao saasPageElementFeatureResourceRelationDao;
private final SaasFeatureResourceDao saasFeatureResourceDao;
private final TyrSaasAuthService tyrSaasAuthService;
private final MqProducer mqProducer;
@Qualifier("asyncExecutor")
@Autowired
@ -66,6 +80,8 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
@Value("${not.auth.featureCodes:}")
private Set<String> notAuthFeatureCodes;
private static final String TARGET_TYPE = "pageElementFeatureResourceId";
@Override
@Transactional(rollbackFor = Exception.class)
public void report(PageElementReportReq request) {
@ -153,16 +169,28 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
Lists.newArrayList(modifyPageElementRelation.getFeatureResourceUniCode()), Lists.newArrayList(modifyPageElementRelation.getRelationType()), modifyPageElementRelation.getOperatorId());
// 保存新的绑定关系
if (CollectionUtils.isNotEmpty(modifyPageElementRelation.getPageElementCodes())) {
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);
if (CollectionUtils.isEmpty(modifyPageElementRelation.getPageElementCodes())) {
return;
}
// 保存新的绑定关系
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