feat(REQ-1507): 消息路由数据模型的重构
背景: https://jira.axzo.cn/browse/REQ-1507?goToView=1 修改: 1、消息路由数据模型的重构 影响: 无
This commit is contained in:
parent
8c9909994a
commit
5a0e6eb3ed
@ -40,15 +40,15 @@ public class MessageTemplateRouterDTO implements Serializable {
|
||||
/**
|
||||
* 业务详情路由
|
||||
*/
|
||||
private MessageDetailRouterDTO detailRouter;
|
||||
private MessageRouteDetailDTO routeDetail;
|
||||
/**
|
||||
* 按钮路由列表
|
||||
*/
|
||||
private List<MessageButtonRouterDTO> btnRouters;
|
||||
private List<MessageRouteButtonDTO> routeButtons;
|
||||
|
||||
public boolean isValid() {
|
||||
return Objects.nonNull(detailRouter)
|
||||
|| CollectionUtils.isNotEmpty(btnRouters);
|
||||
return Objects.nonNull(routeDetail)
|
||||
|| CollectionUtils.isNotEmpty(routeButtons);
|
||||
}
|
||||
|
||||
public boolean isInValid() {
|
||||
@ -56,11 +56,11 @@ public class MessageTemplateRouterDTO implements Serializable {
|
||||
}
|
||||
|
||||
public Optional<String> fetchTemplateCode() {
|
||||
if (Objects.nonNull(detailRouter)) {
|
||||
return Optional.ofNullable(detailRouter.getTemplateCode());
|
||||
if (Objects.nonNull(routeDetail)) {
|
||||
return Optional.ofNullable(routeDetail.getTemplateCode());
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(btnRouters)) {
|
||||
return Optional.ofNullable(btnRouters.get(0).getTemplateCode());
|
||||
if (CollectionUtils.isNotEmpty(routeButtons)) {
|
||||
return Optional.ofNullable(routeButtons.get(0).getTemplateCode());
|
||||
}
|
||||
return Optional.empty();
|
||||
}
|
||||
@ -74,7 +74,7 @@ public class MessageTemplateRouterDTO implements Serializable {
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class MessageDetailRouterDTO implements Serializable {
|
||||
public static class MessageRouteDetailDTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -6332526731908737802L;
|
||||
|
||||
@ -95,12 +95,12 @@ public class MessageTemplateRouterDTO implements Serializable {
|
||||
*/
|
||||
private List<MessageRouterConfigDTO> routerConfigs;
|
||||
|
||||
public static MessageDetailRouterDTO from(MessageRouteDetail msgRouteDetail,
|
||||
List<MessageRouterConfig> routerConfigs) {
|
||||
public static MessageRouteDetailDTO from(MessageRouteDetail msgRouteDetail,
|
||||
List<MessageRouterConfig> routerConfigs) {
|
||||
AssertUtil.notNull(msgRouteDetail, "msgRouteDetail can not be null");
|
||||
AssertUtil.notEmpty(routerConfigs, "routerConfigs can not be empty");
|
||||
|
||||
return MessageDetailRouterDTO.builder()
|
||||
return MessageRouteDetailDTO.builder()
|
||||
.name(msgRouteDetail.getName())
|
||||
.templateCode(msgRouteDetail.getTemplateCode())
|
||||
.showStrategy(msgRouteDetail.getShowStrategy())
|
||||
@ -133,7 +133,7 @@ public class MessageTemplateRouterDTO implements Serializable {
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class MessageButtonRouterDTO implements Serializable {
|
||||
public static class MessageRouteButtonDTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -7544674409859277745L;
|
||||
|
||||
@ -169,15 +169,19 @@ public class MessageTemplateRouterDTO implements Serializable {
|
||||
* 按钮style配置
|
||||
*/
|
||||
private JSONObject style;
|
||||
/**
|
||||
* 按钮优先级,数值越大优先级越低
|
||||
*/
|
||||
private Integer priority;
|
||||
|
||||
public static MessageButtonRouterDTO from(MessageRouteButton routeButton,
|
||||
List<MessageRouterConfig> routerConfigs) {
|
||||
public static MessageRouteButtonDTO from(MessageRouteButton routeButton,
|
||||
List<MessageRouterConfig> routerConfigs) {
|
||||
AssertUtil.notNull(routeButton, "msgRouteDetail can not be null");
|
||||
AssertUtil.notEmpty(routerConfigs, "routerConfigs can not be empty");
|
||||
|
||||
List<MessageRouterConfigDTO> configs = CollectionUtils.isEmpty(routerConfigs) ? Collections.emptyList() :
|
||||
routerConfigs.stream().map(MessageRouterConfigDTO::from).collect(Collectors.toList());
|
||||
return MessageButtonRouterDTO.builder()
|
||||
return MessageRouteButtonDTO.builder()
|
||||
.name(routeButton.getName())
|
||||
.btnCode(routeButton.getBtnCode())
|
||||
.templateCode(routeButton.getTemplateCode())
|
||||
@ -185,6 +189,7 @@ public class MessageTemplateRouterDTO implements Serializable {
|
||||
.category(routeButton.getCategory())
|
||||
.apiUrl(routeButton.getApiUrl())
|
||||
.style(routeButton.getStyle())
|
||||
.priority(routeButton.getPriority())
|
||||
.routerConfigs(configs)
|
||||
.build();
|
||||
}
|
||||
|
||||
@ -8,8 +8,8 @@ import cn.axzo.msg.center.domain.entity.MessageRouteButton;
|
||||
import cn.axzo.msg.center.domain.entity.MessageRouteDetail;
|
||||
import cn.axzo.msg.center.domain.entity.MessageRouterConfig;
|
||||
import cn.axzo.msg.center.message.domain.dto.MessageTemplateRouterDTO;
|
||||
import cn.axzo.msg.center.message.domain.dto.MessageTemplateRouterDTO.MessageButtonRouterDTO;
|
||||
import cn.axzo.msg.center.message.domain.dto.MessageTemplateRouterDTO.MessageDetailRouterDTO;
|
||||
import cn.axzo.msg.center.message.domain.dto.MessageTemplateRouterDTO.MessageRouteButtonDTO;
|
||||
import cn.axzo.msg.center.message.domain.dto.MessageTemplateRouterDTO.MessageRouteDetailDTO;
|
||||
import cn.axzo.msg.center.message.service.MessageTemplateRouterService;
|
||||
import cn.axzo.msg.center.service.enums.RouterButtonSourceEnum;
|
||||
import cn.axzo.msg.center.service.enums.RouterCategoryEnum;
|
||||
@ -58,8 +58,8 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe
|
||||
log.info("templateCode is blank.");
|
||||
}
|
||||
MessageTemplateRouterDTO router = MessageTemplateRouterDTO.builder()
|
||||
.detailRouter(queryDetailRouter(templateCode))
|
||||
.btnRouters(listButtonRouters(templateCode))
|
||||
.routeDetail(queryDetailRouter(templateCode))
|
||||
.routeButtons(listButtonRouters(templateCode))
|
||||
.build();
|
||||
return router.isValid() ? Optional.of(router) : Optional.empty();
|
||||
}
|
||||
@ -75,8 +75,8 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe
|
||||
// 更新的逻辑为删除旧的重新创建
|
||||
remove(router.fetchTemplateCode().orElse(null));
|
||||
}
|
||||
saveDetailRouter(router.getDetailRouter());
|
||||
batchSaveButtonRouter(router.getBtnRouters());
|
||||
saveDetailRouter(router.getRouteDetail());
|
||||
batchSaveButtonRouter(router.getRouteButtons());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -86,41 +86,41 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
Set<String> distinctTemplateCodes = Sets.newHashSet(templateCodes);
|
||||
Map<String, MessageDetailRouterDTO> detailRouters = listDetailRoutersGroupingByTemplateCode(distinctTemplateCodes);
|
||||
Map<String, List<MessageButtonRouterDTO>> buttonRouters = listButtonRoutersGroupingByTemplateCode(distinctTemplateCodes);
|
||||
Map<String, MessageRouteDetailDTO> detailRouters = listDetailRoutersGroupingByTemplateCode(distinctTemplateCodes);
|
||||
Map<String, List<MessageRouteButtonDTO>> buttonRouters = listButtonRoutersGroupingByTemplateCode(distinctTemplateCodes);
|
||||
return distinctTemplateCodes.stream()
|
||||
.filter(e -> detailRouters.containsKey(e) || buttonRouters.containsKey(e))
|
||||
.collect(Collectors.toMap(Function.identity(), e -> MessageTemplateRouterDTO.builder()
|
||||
.detailRouter(detailRouters.get(e))
|
||||
.btnRouters(buttonRouters.get(e))
|
||||
.routeDetail(detailRouters.get(e))
|
||||
.routeButtons(buttonRouters.get(e))
|
||||
.build())
|
||||
);
|
||||
}
|
||||
|
||||
private MessageDetailRouterDTO queryDetailRouter(String templateCode) {
|
||||
private MessageRouteDetailDTO queryDetailRouter(String templateCode) {
|
||||
MessageRouteDetail msgRouteDetail = selectRouteDetail(templateCode);
|
||||
if (Objects.isNull(msgRouteDetail)) {
|
||||
return null;
|
||||
}
|
||||
List<MessageRouterConfig> routerConfigs = listByRouterCode(msgRouteDetail.getTemplateCode());
|
||||
return MessageDetailRouterDTO.from(msgRouteDetail, routerConfigs);
|
||||
return MessageRouteDetailDTO.from(msgRouteDetail, routerConfigs);
|
||||
}
|
||||
|
||||
private Map<String, MessageDetailRouterDTO> listDetailRoutersGroupingByTemplateCode(Collection<String> templateCodes) {
|
||||
private Map<String, MessageRouteDetailDTO> listDetailRoutersGroupingByTemplateCode(Collection<String> templateCodes) {
|
||||
Map<String, MessageRouteDetail> routeDetails = listRouteDetailsGroupingByTemplateCode(templateCodes);
|
||||
if (MapUtil.isEmpty(routeDetails)) {
|
||||
log.info("there is not any route detail. templateCodes:{}", templateCodes);
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
Map<String, List<MessageRouterConfig>> routerConfigs = groupingByRouterCode(templateCodes);
|
||||
Map<String, MessageDetailRouterDTO> result = Maps.newHashMap();
|
||||
Map<String, MessageRouteDetailDTO> result = Maps.newHashMap();
|
||||
routeDetails.entrySet().stream()
|
||||
.filter(e -> routerConfigs.containsKey(e.getKey()))
|
||||
.forEach(e -> result.put(e.getKey(), MessageDetailRouterDTO.from(e.getValue(), routerConfigs.get(e.getKey()))));
|
||||
.forEach(e -> result.put(e.getKey(), MessageRouteDetailDTO.from(e.getValue(), routerConfigs.get(e.getKey()))));
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<MessageButtonRouterDTO> listButtonRouters(String templateCode) {
|
||||
private List<MessageRouteButtonDTO> listButtonRouters(String templateCode) {
|
||||
List<MessageRouteButton> routeButtons = messageRouteButtonDao.lambdaQuery()
|
||||
.eq(MessageRouteButton::getTemplateCode, templateCode)
|
||||
.list();
|
||||
@ -131,11 +131,11 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe
|
||||
List<String> btnCodes = routeButtons.stream().map(MessageRouteButton::getBtnCode).collect(Collectors.toList());
|
||||
Map<String, List<MessageRouterConfig>> btnRouterConfigs = groupingByRouterCode(btnCodes);
|
||||
return routeButtons.stream()
|
||||
.map(e -> MessageButtonRouterDTO.from(e, btnRouterConfigs.get(e.getBtnCode())))
|
||||
.map(e -> MessageRouteButtonDTO.from(e, btnRouterConfigs.get(e.getBtnCode())))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private Map<String, List<MessageButtonRouterDTO>> listButtonRoutersGroupingByTemplateCode(
|
||||
private Map<String, List<MessageRouteButtonDTO>> listButtonRoutersGroupingByTemplateCode(
|
||||
Collection<String> templateCodes) {
|
||||
List<MessageRouteButton> routeButtons = messageRouteButtonDao.lambdaQuery()
|
||||
.in(MessageRouteButton::getTemplateCode, templateCodes)
|
||||
@ -147,8 +147,8 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe
|
||||
Set<String> btnCodes = routeButtons.stream().map(MessageRouteButton::getBtnCode).collect(Collectors.toSet());
|
||||
Map<String, List<MessageRouterConfig>> btnRouterConfigs = groupingByRouterCode(btnCodes);
|
||||
return routeButtons.stream()
|
||||
.map(e -> MessageButtonRouterDTO.from(e, btnRouterConfigs.get(e.getBtnCode())))
|
||||
.collect(Collectors.groupingBy(MessageButtonRouterDTO::getTemplateCode));
|
||||
.map(e -> MessageRouteButtonDTO.from(e, btnRouterConfigs.get(e.getBtnCode())))
|
||||
.collect(Collectors.groupingBy(MessageRouteButtonDTO::getTemplateCode));
|
||||
}
|
||||
|
||||
private MessageRouteDetail selectRouteDetail(String templateCode) {
|
||||
@ -208,7 +208,7 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe
|
||||
.collect(Collectors.groupingBy(MessageRouterConfig::getRouterCode));
|
||||
}
|
||||
|
||||
private void saveDetailRouter(MessageDetailRouterDTO detailRouter) {
|
||||
private void saveDetailRouter(MessageRouteDetailDTO detailRouter) {
|
||||
if (Objects.isNull(detailRouter)) {
|
||||
log.info("detailRouter is null.");
|
||||
return;
|
||||
@ -217,13 +217,13 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe
|
||||
messageRouterConfigDao.saveBatch(detailRouter.fetchMessageRouterConfigs());
|
||||
}
|
||||
|
||||
private void batchSaveButtonRouter(List<MessageButtonRouterDTO> buttonRouters) {
|
||||
private void batchSaveButtonRouter(List<MessageRouteButtonDTO> buttonRouters) {
|
||||
if (CollectionUtils.isEmpty(buttonRouters)) {
|
||||
log.info("buttonRouters is empty.");
|
||||
return;
|
||||
}
|
||||
List<MessageRouteButtonWrapper> routeButtonWrappers = buttonRouters.stream()
|
||||
.filter(MessageButtonRouterDTO::isValid)
|
||||
.filter(MessageRouteButtonDTO::isValid)
|
||||
.map(e -> MessageRouteButtonWrapper.of(e.fetchMessageRouteButton(), e))
|
||||
.collect(Collectors.toList());
|
||||
// 生成自定义按钮的唯一标识和顺序
|
||||
@ -296,9 +296,9 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe
|
||||
@AllArgsConstructor
|
||||
private static class MessageRouteButtonWrapper {
|
||||
private MessageRouteButton routeButton;
|
||||
private MessageButtonRouterDTO buttonRouter;
|
||||
private MessageRouteButtonDTO buttonRouter;
|
||||
|
||||
static MessageRouteButtonWrapper of(MessageRouteButton routeButton, MessageButtonRouterDTO buttonRouter) {
|
||||
static MessageRouteButtonWrapper of(MessageRouteButton routeButton, MessageRouteButtonDTO buttonRouter) {
|
||||
return new MessageRouteButtonWrapper(routeButton, buttonRouter);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user