feat(REQ-1507): 消息路由数据模型的重构

背景:
  https://jira.axzo.cn/browse/REQ-1507?goToView=1

修改:

1、消息路由数据模型的重构

影响:
  无
This commit is contained in:
luofu 2023-11-08 10:39:19 +08:00
parent 4810bbf1b9
commit 3fb1fc6b5d
9 changed files with 234 additions and 24 deletions

View File

@ -1,7 +1,6 @@
package cn.axzo.msg.center.message.domain.dto;
import cn.axzo.msg.center.domain.entity.MessageBaseTemplate;
import cn.axzo.msg.center.service.dto.BizDetailShowStrategyDTO;
import cn.axzo.msg.center.service.dto.MessageCardContentItemDTO;
import cn.axzo.msg.center.service.enums.MessageCategoryEnum;
import cn.axzo.msg.center.service.enums.PushTerminalEnum;
@ -65,10 +64,6 @@ public class MessageTemplateDTO implements Serializable {
* 模板icon
*/
private String icon;
/**
* 业务详情展示策略
*/
private BizDetailShowStrategyDTO bizDetailShowStrategy;
/**
* 模板路由信息
*/
@ -84,8 +79,6 @@ public class MessageTemplateDTO implements Serializable {
public static MessageTemplateDTO from(MessageBaseTemplate baseTemplate, List<RawMessageRouterDTO> routers) {
// 业务详情展示策略
BizDetailShowStrategyDTO bizDetailShowStrategy = MessageRouterUtil.selectAndConvertBizDetailShowStrategy(
baseTemplate.getBizDetailShowStrategy(), routers).orElse(null);
return MessageTemplateDTO.builder()
.name(baseTemplate.getName())
.code(baseTemplate.getCode())
@ -93,7 +86,6 @@ public class MessageTemplateDTO implements Serializable {
.content(baseTemplate.getContent())
.msgCardContentItems(JSONObjectUtil.parseArray(baseTemplate.getCardContent(), MessageCardContentItemDTO.class))
.msgCategory(baseTemplate.getMsgCategory())
.bizDetailShowStrategy(bizDetailShowStrategy)
.icon(baseTemplate.getIcon())
.routers(MessageRouterUtil.selectRouterButtons(routers))
.pushTerminals(JSON.parseArray(baseTemplate.getPushTerminal(), PushTerminalEnum.class))

View File

@ -0,0 +1,144 @@
package cn.axzo.msg.center.message.domain.dto;
import cn.axzo.msg.center.service.enums.BizDetailShowStrategyEnum;
import cn.axzo.msg.center.service.enums.MessageCategoryEnum;
import cn.axzo.msg.center.service.enums.RouterButtonSourceEnum;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @author cold_blade
* @date 2023/11/8
* @version 1.0
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MessageTemplateRouterDTO implements Serializable {
private static final long serialVersionUID = -4230859886203498149L;
/**
* 业务详情路由
*/
private BizDetailRouterDTO bizDetailRouter;
/**
* 按钮路由列表
*/
private List<MessageTemplateRouteButtonDTO> routeButtons;
@Override
public String toString() {
return JSON.toJSONString(this);
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class BizDetailRouterDTO implements Serializable {
private static final long serialVersionUID = -6332526731908737802L;
/**
* 模板编码
*/
private String templateCode;
/**
* 业务详情展示策略
*/
private BizDetailShowStrategyEnum bizDetailShowStrategy;
/**
* 跳转路由的配置列表
*/
private List<MessageRouterConfigDTO> routerConfigs;
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class MessageTemplateRouteButtonDTO implements Serializable {
private static final long serialVersionUID = -7544674409859277745L;
/**
* 按钮名称
*/
private String name;
/**
* 按钮唯一标识
*/
private String btnCode;
/**
* 模板code
*/
private String templateCode;
/**
* 按钮来源
*/
private RouterButtonSourceEnum source;
/**
* 路由类型
*/
private MessageCategoryEnum category;
/**
* API地址,仅当按钮是接口调用类型时有值
*/
private String apiUrl;
/**
* 跳转路由的配置列表
*/
private List<MessageRouterConfigDTO> routerConfigs;
/**
* 按钮style配置
*/
private JSONObject style;
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class MessageRouterConfigDTO implements Serializable {
private static final long serialVersionUID = -303015602477458085L;
/**
* 路由编码
*/
private String routerCode;
/**
* 路由的系统类型
*/
private TerminalTypeEnum terminalType;
/**
* 路由地址
*/
private String url;
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
}

View File

@ -273,9 +273,6 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService
template.setCardContent(JSONObjectUtil.toJSONString(param.getMsgCardContentItems()));
template.setIcon(param.getIcon());
template.setPushTerminal(JSONObjectUtil.toJSONString(param.getPushTerminals()));
if (Objects.nonNull(param.getBizDetailShowStrategy())) {
template.setBizDetailShowStrategy(param.getBizDetailShowStrategy().getShowStrategy());
}
template.setMinAppVersion(param.getMinAppVersion());
template.setCreatorId(param.getOperatorId());
template.setUpdaterId(param.getOperatorId());
@ -314,8 +311,6 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService
.set(StringUtils.isNotBlank(param.getIcon()), MessageBaseTemplate::getIcon, param.getIcon())
.set(StringUtils.isNotBlank(param.getMinAppVersion()), MessageBaseTemplate::getMinAppVersion,
param.getMinAppVersion())
.set(Objects.nonNull(param.getBizDetailShowStrategy()), MessageBaseTemplate::getBizDetailShowStrategy,
param.getBizDetailShowStrategy().getShowStrategy())
.update();
}
@ -413,9 +408,6 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService
.collect(Collectors.toList());
// 按钮路由策略
List<MessageRouterButtonDTO> msgRouterButtons = MessageRouterUtil.selectAndConvertRouterButtons(routers);
// 业务详情展示策略
BizDetailShowStrategyDTO bizDetailShowStrategy = MessageRouterUtil.selectAndConvertBizDetailShowStrategy(
record.getBizDetailShowStrategy(), routers).orElse(null);
return MessageTemplateDetailResponse.builder()
.templateName(record.getName())
.category(MessageTemplateCategoryUtil.parentCategory(record.getMsgCategory()))
@ -427,7 +419,8 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService
.cardContentItems(JSONObjectUtil.parseArray(record.getCardContent(), MessageCardContentItemDTO.class))
.msgIcon(record.getIcon())
.routers(msgRouterButtons)
.detailStrategy(bizDetailShowStrategy)
// TODO: [cold_blade] P0
.detailStrategy(null)
.minAppVersion(record.getMinAppVersion())
.createTimestamp(record.getCreateAt().getTime())
.updateTimestamp(record.getUpdateAt().getTime())

View File

@ -9,7 +9,7 @@ import org.springframework.stereotype.Component;
/**
* @description
* @author cold_blade
* @date 2023/9/28
* @date 2023/11/8
* @version 1.0
*/
@Slf4j

View File

@ -0,0 +1,18 @@
package cn.axzo.msg.center.dal;
import cn.axzo.msg.center.dal.mapper.MessageRouteDetailMapper;
import cn.axzo.msg.center.domain.entity.MessageRouteDetail;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* @description
* @author cold_blade
* @date 2023/11/8
* @version 1.0
*/
@Slf4j
@Component
public class MessageRouteDetailDao extends ServiceImpl<MessageRouteDetailMapper, MessageRouteDetail> {
}

View File

@ -0,0 +1,14 @@
package cn.axzo.msg.center.dal.mapper;
import cn.axzo.msg.center.domain.entity.MessageRouteDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @description
* 消息路由业务详情表Mapper
* @author cold_blade
* @date 2023/9/20
* @version 1.0
*/
public interface MessageRouteDetailMapper extends BaseMapper<MessageRouteDetail> {
}

View File

@ -1,7 +1,6 @@
package cn.axzo.msg.center.domain.entity;
import cn.axzo.msg.center.domain.persistence.BaseEntityExt;
import cn.axzo.msg.center.service.enums.BizDetailShowStrategyEnum;
import cn.axzo.msg.center.service.enums.MessageCategoryEnum;
import cn.axzo.msg.center.service.enums.StatusEnum;
import com.alibaba.fastjson.JSON;
@ -67,10 +66,6 @@ public class MessageBaseTemplate extends BaseEntityExt<MessageBaseTemplate> impl
* APP最小版本支持可不配
*/
private String minAppVersion;
/**
* 业务详情展示策略
*/
private BizDetailShowStrategyEnum bizDetailShowStrategy;
/**
* 创建者自然人id
*/

View File

@ -2,6 +2,7 @@ package cn.axzo.msg.center.domain.entity;
import cn.axzo.msg.center.domain.persistence.BaseEntityExt;
import cn.axzo.msg.center.service.enums.MessageCategoryEnum;
import cn.axzo.msg.center.service.enums.RouterButtonSourceEnum;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
@ -16,7 +17,7 @@ import lombok.Setter;
import java.io.Serializable;
/**
* 消息路由配置
* 消息路由按钮
*
* @author cold_blade
* @date 2023/11/7
@ -44,6 +45,10 @@ public class MessageRouteButton extends BaseEntityExt<MessageRouteButton> implem
* 模板code
*/
private String templateCode;
/**
* 按钮来源
*/
private RouterButtonSourceEnum source;
/**
* 路由类型
*/

View File

@ -0,0 +1,49 @@
package cn.axzo.msg.center.domain.entity;
import cn.axzo.msg.center.domain.persistence.BaseEntityExt;
import cn.axzo.msg.center.service.enums.BizDetailShowStrategyEnum;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
/**
* 消息路由详情
*
* @author cold_blade
* @date 2023/11/8
* @version 1.0
*/
@Setter
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("message_route_detail")
public class MessageRouteDetail extends BaseEntityExt<MessageRouteDetail> implements Serializable {
private static final long serialVersionUID = -6868015511438657632L;
/**
* 显示名称
*/
private String name;
/**
* 模板code
*/
private String templateCode;
/**
* 业务详情展示策略
*/
private BizDetailShowStrategyEnum showStrategy;
@Override
public String toString() {
return JSON.toJSONString(this);
}
}