Merge branch 'feature/REQ-1465' into 'dev'
Feature/req 1465 See merge request universal/infrastructure/backend/msg-center-plat!62
This commit is contained in:
commit
823f121dd0
@ -4,7 +4,8 @@ import cn.axzo.msg.center.message.domain.param.MessageTemplateCreateParam;
|
||||
import cn.axzo.msg.center.message.service.MessageTemplateNewService;
|
||||
import cn.axzo.msg.center.service.template.client.MessageTemplateClient;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateCreateRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateMoveToRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateUpdateRequest;
|
||||
import cn.axzo.msg.center.service.template.response.MessageTemplateDetailResponse;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
@ -23,15 +24,21 @@ public class MessageTemplateController implements MessageTemplateClient {
|
||||
private final MessageTemplateNewService messageTemplateNewService;
|
||||
|
||||
@Override
|
||||
public CommonResponse<String> addTemplate(MessageTemplateCreateRequest request) {
|
||||
public CommonResponse<String> save(MessageTemplateCreateRequest request) {
|
||||
MessageTemplateCreateParam param = MessageTemplateCreateParam.from(request);
|
||||
messageTemplateNewService.createTemplate(param);
|
||||
return CommonResponse.success(param.getTemplateCode());
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<String> batchMove(MessageTemplateMoveToRequest request) {
|
||||
// TODO: [cold_blade] [P2] 模板关联的批量移动
|
||||
public CommonResponse<Void> update(MessageTemplateUpdateRequest request) {
|
||||
// TODO:[cold_blade] [P0] update template
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<MessageTemplateDetailResponse> detail(String templateCode) {
|
||||
// TODO:[cold_blade] [P0] query template
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,9 +1,13 @@
|
||||
package cn.axzo.msg.center.message.domain.dto;
|
||||
|
||||
import cn.axzo.msg.center.domain.entity.MessageTemplateRouter;
|
||||
import cn.axzo.msg.center.service.dto.MessageRouterButtonDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageRouterDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageRouterTerminalDTO;
|
||||
import cn.axzo.msg.center.service.enums.ButtonStyleEnum;
|
||||
import cn.axzo.msg.center.service.enums.RouterCategoryEnum;
|
||||
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
|
||||
import cn.axzo.msg.center.utils.MessageRouterUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
@ -12,6 +16,8 @@ import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @description
|
||||
@ -40,51 +46,64 @@ public class RawMessageRouterDTO implements Serializable {
|
||||
*/
|
||||
private RouterCategoryEnum category;
|
||||
/**
|
||||
* 页面地址 OR API接口地址
|
||||
* 路由终端
|
||||
*/
|
||||
private String url;
|
||||
/**
|
||||
* 页面地址所属应用端(如果是API接口地址,请忽略改字段值)
|
||||
* WEB: web端页面
|
||||
* MINI_PROGRAM: 安心筑小程序端页面
|
||||
* IOS: 原生IOS端页面
|
||||
* ANDROID: 原生Android端页面
|
||||
* WEB_VIEW: H5页面
|
||||
* WECHAT_MINI_PROGRAM: 微信小程序页面
|
||||
*/
|
||||
private TerminalTypeEnum terminalType;
|
||||
private List<MessageRouterTerminalDTO> terminals;
|
||||
/**
|
||||
* 模板编码
|
||||
*/
|
||||
private String templateCode;
|
||||
/**
|
||||
* 按钮样式配置
|
||||
*/
|
||||
private List<ButtonStyleEnum> style;
|
||||
|
||||
public static RawMessageRouterDTO from(MessageTemplateRouter msgTemplateRouter) {
|
||||
public static RawMessageRouterDTO from(List<MessageTemplateRouter> msgTemplateRouters) {
|
||||
MessageTemplateRouter router = msgTemplateRouters.get(0);
|
||||
return RawMessageRouterDTO.builder()
|
||||
.desc(msgTemplateRouter.getName())
|
||||
.url(msgTemplateRouter.getUrl())
|
||||
.category(msgTemplateRouter.getCategory())
|
||||
.terminalType(msgTemplateRouter.getTerminalType())
|
||||
.templateCode(msgTemplateRouter.getTemplateCode())
|
||||
.desc(router.getName())
|
||||
.category(router.getCategory())
|
||||
.templateCode(router.getTemplateCode())
|
||||
.style(JSON.parseArray(router.getStyle(), ButtonStyleEnum.class))
|
||||
.terminals(JSON.parseArray(router.getStyle(), MessageRouterTerminalDTO.class))
|
||||
.build();
|
||||
}
|
||||
|
||||
public static RawMessageRouterDTO from(MessageRouterDTO router, String templateCode) {
|
||||
public static RawMessageRouterDTO from(MessageRouterButtonDTO router, String templateCode) {
|
||||
return RawMessageRouterDTO.builder()
|
||||
.desc(router.getDesc())
|
||||
.url(router.getUrl())
|
||||
.category(router.getCategory())
|
||||
.terminalType(router.getTerminalType())
|
||||
.terminals(router.getTerminals())
|
||||
.style(router.getStyle())
|
||||
.templateCode(templateCode)
|
||||
.build();
|
||||
}
|
||||
|
||||
public MessageTemplateRouter toMessageTemplateRouter() {
|
||||
public List<MessageTemplateRouter> toMessageTemplateRouters() {
|
||||
return this.terminals.stream()
|
||||
.map(this::convert)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public MessageRouterDTO toMessageRouter(TerminalTypeEnum terminalType) {
|
||||
MessageRouterTerminalDTO terminal = MessageRouterUtil.select(this, terminalType);
|
||||
return MessageRouterDTO.builder()
|
||||
.desc(this.desc)
|
||||
.category(this.category)
|
||||
.style(this.style)
|
||||
.terminalType(terminal.getTerminalType())
|
||||
.url(terminal.getUrl())
|
||||
.build();
|
||||
}
|
||||
|
||||
private MessageTemplateRouter convert(MessageRouterTerminalDTO terminal) {
|
||||
MessageTemplateRouter router = new MessageTemplateRouter();
|
||||
router.setName(this.desc);
|
||||
router.setUrl(this.url);
|
||||
router.setCategory(this.category);
|
||||
router.setTerminalType(this.terminalType);
|
||||
router.setTemplateCode(this.templateCode);
|
||||
router.setName(desc);
|
||||
router.setCategory(category);
|
||||
router.setTemplateCode(templateCode);
|
||||
router.setStyle(JSON.toJSONString(style));
|
||||
router.setUrl(terminal.getUrl());
|
||||
router.setTerminalType(terminal.getTerminalType());
|
||||
return router;
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package cn.axzo.msg.center.message.domain.param;
|
||||
|
||||
import cn.axzo.msg.center.service.dto.MessageRouterButtonDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageRouterDTO;
|
||||
import cn.axzo.msg.center.service.enums.MessageCategoryEnum;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateCreateRequest;
|
||||
@ -67,7 +68,7 @@ public class MessageTemplateCreateParam implements Serializable {
|
||||
/**
|
||||
* 路由列表
|
||||
*/
|
||||
private List<MessageRouterDTO> routers;
|
||||
private List<MessageRouterButtonDTO> routers;
|
||||
|
||||
public static MessageTemplateCreateParam from(MessageTemplateCreateRequest request) {
|
||||
return MessageTemplateCreateParam.builder()
|
||||
|
||||
@ -36,9 +36,7 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe
|
||||
log.warn("the template code is blank.");
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return messageTemplateRouterDao.listByTemplateCode(Lists.newArrayList(templateCode)).stream()
|
||||
.map(RawMessageRouterDTO::from)
|
||||
.collect(Collectors.toList());
|
||||
return listByTemplateCodes(Lists.newArrayList(templateCode));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -47,7 +45,7 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe
|
||||
return;
|
||||
}
|
||||
List<MessageTemplateRouter> messageTemplateRouters = routers.stream()
|
||||
.map(RawMessageRouterDTO::toMessageTemplateRouter)
|
||||
.flatMap(e -> e.toMessageTemplateRouters().stream())
|
||||
.collect(Collectors.toList());
|
||||
messageTemplateRouterDao.saveBatch(messageTemplateRouters);
|
||||
}
|
||||
@ -57,8 +55,22 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe
|
||||
if (CollectionUtils.isEmpty(templateCodes)) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
return messageTemplateRouterDao.listByTemplateCode(templateCodes).stream()
|
||||
.map(RawMessageRouterDTO::from)
|
||||
return listByTemplateCodes(templateCodes).stream()
|
||||
.collect(Collectors.groupingBy(RawMessageRouterDTO::getTemplateCode));
|
||||
}
|
||||
|
||||
private List<RawMessageRouterDTO> listByTemplateCodes(List<String> templateCodes) {
|
||||
// 根据模板编码进行分组
|
||||
Map<String, List<MessageTemplateRouter>> routers = messageTemplateRouterDao
|
||||
.listByTemplateCode(templateCodes).stream()
|
||||
.collect(Collectors.groupingBy(MessageTemplateRouter::getTemplateCode));
|
||||
return routers.values().stream()
|
||||
.flatMap(e -> {
|
||||
// 模板路由的按钮维度
|
||||
Map<String, List<MessageTemplateRouter>> btnMap = e.stream()
|
||||
.collect(Collectors.groupingBy(MessageTemplateRouter::getName));
|
||||
return btnMap.values().stream()
|
||||
.map(RawMessageRouterDTO::from);
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
package cn.axzo.msg.center.message.service.impl;
|
||||
|
||||
import cn.axzo.core.utils.converter.BeanConverter;
|
||||
import cn.axzo.msg.center.common.enums.TableIsDeleteEnum;
|
||||
import cn.axzo.msg.center.common.exception.ServiceException;
|
||||
import cn.axzo.msg.center.common.utils.PlaceholderResolver;
|
||||
@ -169,13 +168,14 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService {
|
||||
.findFirst()
|
||||
.map(MessageTemplateDTO::getRouters)
|
||||
.orElseGet(Collections::emptyList);
|
||||
rawRouters = MessageRouterUtil.selectRouter(rawRouters, terminalType);
|
||||
List<MessageRouterDTO> routers = rawRouters.stream().map(e -> {
|
||||
MessageRouterDTO router = BeanConverter.convert(e, MessageRouterDTO.class);
|
||||
// 视情况替换原始URL中的参数变量
|
||||
MessageRouterUtil.parseRouteUrl(router, pendingMessageRecord.getRouterParams());
|
||||
return router;
|
||||
}).collect(Collectors.toList());
|
||||
List<MessageRouterDTO> routers = rawRouters.stream()
|
||||
.map(e -> {
|
||||
MessageRouterDTO router = e.toMessageRouter(terminalType);
|
||||
// 视情况替换原始URL中的参数变量
|
||||
MessageRouterUtil.parseRouteUrl(router, pendingMessageRecord.getRouterParams());
|
||||
return router;
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
pendingMessage.setRouters(routers);
|
||||
// 获取模板卡片信息
|
||||
String cardContent = messageTemplates.stream()
|
||||
|
||||
@ -3,10 +3,10 @@ package cn.axzo.msg.center.utils;
|
||||
import cn.axzo.msg.center.common.utils.PlaceholderResolver;
|
||||
import cn.axzo.msg.center.message.domain.dto.RawMessageRouterDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageRouterDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageRouterTerminalDTO;
|
||||
import cn.axzo.msg.center.service.enums.RouterCategoryEnum;
|
||||
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
@ -30,32 +30,22 @@ public final class MessageRouterUtil {
|
||||
|
||||
// 非法路由参数的定义
|
||||
private static final String INVALID_ROUTER_PARAM = "null";
|
||||
// 当前系统选取路由的优先级策略
|
||||
private static final ImmutableMap<TerminalTypeEnum, Integer> ROUTER_SELECT_ORDER =
|
||||
ImmutableMap.<TerminalTypeEnum, Integer>builder()
|
||||
.put(TerminalTypeEnum.WEB_VIEW, 1)
|
||||
.put(TerminalTypeEnum.MINI_PROGRAM, 2)
|
||||
.put(TerminalTypeEnum.ANDROID, 3)
|
||||
.put(TerminalTypeEnum.IOS, 3)
|
||||
.put(TerminalTypeEnum.WEB, 3)
|
||||
.put(TerminalTypeEnum.WECHAT_MINI_PROGRAM, 3)
|
||||
.build();
|
||||
|
||||
/**
|
||||
* 根据指定的终端类型选取合适的路由
|
||||
*
|
||||
* @param messageRouters 模板配置的路由列表
|
||||
* @param terminalType 指定的终端类型,可为null
|
||||
* @return 合适的路由
|
||||
* @param rawMessageRouter 原始的模板路由策略
|
||||
* @param terminalType 当前请求的终端类型
|
||||
* @return 合适的路由数据
|
||||
*/
|
||||
public static List<RawMessageRouterDTO> selectRouter(List<RawMessageRouterDTO> messageRouters,
|
||||
TerminalTypeEnum terminalType) {
|
||||
if (CollectionUtils.isEmpty(messageRouters)) {
|
||||
return Collections.emptyList();
|
||||
public static MessageRouterTerminalDTO select(RawMessageRouterDTO rawMessageRouter, TerminalTypeEnum terminalType) {
|
||||
if (RouterCategoryEnum.ACTION.equals(rawMessageRouter.getCategory())) {
|
||||
return rawMessageRouter.getTerminals().get(0);
|
||||
}
|
||||
return messageRouters.stream()
|
||||
.filter(e -> Objects.equals(e.getTerminalType(), terminalType))
|
||||
.collect(Collectors.toList());
|
||||
return rawMessageRouter.getTerminals().stream()
|
||||
.filter(e -> Objects.equals(terminalType, e.getTerminalType()))
|
||||
// 若没有匹配的,默认选择第一个然后由前端去进行最终判断
|
||||
.findFirst().orElseGet(() -> rawMessageRouter.getTerminals().get(0));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -76,31 +66,12 @@ public final class MessageRouterUtil {
|
||||
* @param routerParam 路由参数
|
||||
*/
|
||||
public static void parseRouteUrl(MessageRouterDTO router, String routerParam) {
|
||||
// 路由参数有效且是直接调整页面地址的路由类型
|
||||
if (isRouterParamValid(routerParam)
|
||||
&& RouterCategoryEnum.JUMP.equals(router.getCategory())) {
|
||||
// 路由参数有效
|
||||
if (isRouterParamValid(routerParam)) {
|
||||
// 替换原始URL中的参数变量
|
||||
String routerUrl = PlaceholderResolver
|
||||
.getDefaultResolver().resolveByMap(router.getUrl(), JSON.parseObject(routerParam));
|
||||
router.setUrl(routerUrl);
|
||||
}
|
||||
}
|
||||
|
||||
private static Integer compare(RawMessageRouterDTO src, RawMessageRouterDTO tgt) {
|
||||
if (Objects.isNull(tgt)) {
|
||||
// NULL 默认优先级最低
|
||||
return 1;
|
||||
}
|
||||
Integer srcOrder = ROUTER_SELECT_ORDER.get(src.getTerminalType());
|
||||
Integer tgtOrder = ROUTER_SELECT_ORDER.get(tgt.getTerminalType());
|
||||
if (Objects.isNull(srcOrder)) {
|
||||
// 新增的类型未指定优先级的话,则默认最低
|
||||
return 1;
|
||||
}
|
||||
if (Objects.isNull(tgtOrder)) {
|
||||
// 新增的类型未指定优先级的话,则默认最低
|
||||
return -1;
|
||||
}
|
||||
return srcOrder.compareTo(tgtOrder);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,66 @@
|
||||
package cn.axzo.msg.center.service.dto;
|
||||
|
||||
import cn.axzo.msg.center.service.enums.MessageCategoryEnum;
|
||||
import cn.axzo.msg.center.service.enums.PushTerminalEnum;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author cold_blade
|
||||
* @date 2023/10/11
|
||||
* @version 1.0
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class MessageBaseTemplateDTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -7079227473990043416L;
|
||||
|
||||
/**
|
||||
* 模板名称
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 系统自动生成的模板code
|
||||
*/
|
||||
private String code;
|
||||
/**
|
||||
* 所属消息类型
|
||||
*/
|
||||
private MessageCategoryEnum msgCategory;
|
||||
/**
|
||||
* 模板标题
|
||||
*/
|
||||
private String title;
|
||||
/**
|
||||
* 模板类容
|
||||
*/
|
||||
private String content;
|
||||
/**
|
||||
* 卡片信息,json字串
|
||||
*/
|
||||
private String cardContent;
|
||||
/**
|
||||
* 模板icon
|
||||
*/
|
||||
private String icon;
|
||||
/**
|
||||
* 推送终端配置列表
|
||||
*/
|
||||
private List<PushTerminalEnum> pushTerminals;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,54 @@
|
||||
package cn.axzo.msg.center.service.dto;
|
||||
|
||||
import cn.axzo.msg.center.service.enums.ButtonStyleEnum;
|
||||
import cn.axzo.msg.center.service.enums.RouterCategoryEnum;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @description
|
||||
*
|
||||
* @author cold_blade
|
||||
* @date 2023/9/23
|
||||
* @version 1.0
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class MessageRouterButtonDTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -9083376003614521781L;
|
||||
|
||||
/**
|
||||
* 路由描述
|
||||
*/
|
||||
private String desc;
|
||||
/**
|
||||
* 路由分类
|
||||
* JUMP: 直接跳转
|
||||
* ACTION: 接口调用
|
||||
*/
|
||||
private RouterCategoryEnum category;
|
||||
/**
|
||||
* 按钮样式配置
|
||||
*/
|
||||
private List<ButtonStyleEnum> style;
|
||||
/**
|
||||
* 路由终端列表,若当前按钮为ACTION,则只能配一个接口地址
|
||||
*/
|
||||
private List<MessageRouterTerminalDTO> terminals;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,6 @@
|
||||
package cn.axzo.msg.center.service.dto;
|
||||
|
||||
import cn.axzo.msg.center.service.enums.ButtonStyleEnum;
|
||||
import cn.axzo.msg.center.service.enums.RouterCategoryEnum;
|
||||
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
@ -10,6 +11,7 @@ import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @description
|
||||
@ -51,6 +53,10 @@ public class MessageRouterDTO implements Serializable {
|
||||
* WECHAT_MINI_PROGRAM: 微信小程序页面
|
||||
*/
|
||||
private TerminalTypeEnum terminalType;
|
||||
/**
|
||||
* 按钮样式配置
|
||||
*/
|
||||
private List<ButtonStyleEnum> style;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
|
||||
@ -0,0 +1,46 @@
|
||||
package cn.axzo.msg.center.service.dto;
|
||||
|
||||
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author cold_blade
|
||||
* @date 2023/10/12
|
||||
* @version 1.0
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class MessageRouterTerminalDTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 4084885624985898305L;
|
||||
|
||||
/**
|
||||
* 页面地址 OR API接口地址
|
||||
*/
|
||||
private String url;
|
||||
/**
|
||||
* 页面地址所属应用端(如果是API接口地址,请忽略改字段值)
|
||||
* WEB: web端页面
|
||||
* MINI_PROGRAM: 安心筑小程序端页面
|
||||
* IOS: 原生IOS端页面
|
||||
* ANDROID: 原生Android端页面
|
||||
* WEB_VIEW: H5页面
|
||||
* WECHAT_MINI_PROGRAM: 微信小程序页面
|
||||
*/
|
||||
private TerminalTypeEnum terminalType;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
package cn.axzo.msg.center.service.enums;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 按钮style枚举
|
||||
*
|
||||
* @author cold_blade
|
||||
* @date 2023/10/11
|
||||
* @version 1.0
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public enum ButtonStyleEnum {
|
||||
|
||||
HIGH_LIGHT("按钮高亮展示"), OVER_CARD("按钮显示在卡片"),
|
||||
;
|
||||
|
||||
private final String desc;
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
package cn.axzo.msg.center.service.enums;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 推送终端枚举
|
||||
*
|
||||
* @author cold_blade
|
||||
* @date 2023/10/11
|
||||
* @version 1.0
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public enum PushTerminalEnum {
|
||||
|
||||
B_ENTERPRISE_APP("B-安心筑企业版"), C_WORKER_APP("C-安心筑工人版"),
|
||||
;
|
||||
|
||||
private final String desc;
|
||||
}
|
||||
@ -20,7 +20,12 @@ public enum TerminalTypeEnum {
|
||||
IOS(3, "ios"),
|
||||
ANDROID(4, "android"),
|
||||
WEB_VIEW(5, "webview"),
|
||||
WECHAT_MINI_PROGRAM(6, "wechat mini-program");
|
||||
WECHAT_MINI_PROGRAM(6, "wechat mini-program"),
|
||||
/**
|
||||
* 所有端
|
||||
*/
|
||||
ALL(-1, "all"),
|
||||
;
|
||||
|
||||
private final Integer code;
|
||||
private final String desc;
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
package cn.axzo.msg.center.service.group.client;
|
||||
|
||||
import cn.axzo.msg.center.service.enums.MessageCategoryEnum;
|
||||
import cn.axzo.msg.center.service.group.client.fallback.MessageGroupClientFallback;
|
||||
import cn.axzo.msg.center.service.group.request.MessageGroupNodeAddRequest;
|
||||
import cn.axzo.msg.center.service.group.request.MessageGroupNodeUpdateRequest;
|
||||
import cn.axzo.msg.center.service.group.response.MessageGroupTreeNodeResponse;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.http.MediaType;
|
||||
@ -12,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 消息分类管理
|
||||
@ -50,4 +53,12 @@ public interface MessageGroupClient {
|
||||
@PostMapping(value = "/message/group/node/delete", produces = {MediaType.APPLICATION_JSON_VALUE})
|
||||
CommonResponse<Void> deleteNode(@RequestParam("nodeCode") String nodeCode,
|
||||
@RequestParam("operatorId") Long operatorId);
|
||||
|
||||
/**
|
||||
* 查询通知/待办的分类信息
|
||||
*
|
||||
* @param category 消息分类
|
||||
*/
|
||||
@PostMapping(value = "/message/group/node/list", produces = {MediaType.APPLICATION_JSON_VALUE})
|
||||
CommonResponse<List<MessageGroupTreeNodeResponse>> list(@RequestParam("category") MessageCategoryEnum category);
|
||||
}
|
||||
|
||||
@ -0,0 +1,54 @@
|
||||
package cn.axzo.msg.center.service.group.client;
|
||||
|
||||
import cn.axzo.msg.center.service.group.client.fallback.MessageGroupClientFallback;
|
||||
import cn.axzo.msg.center.service.group.request.MessageTemplateGroupRelationMoveRequest;
|
||||
import cn.axzo.msg.center.service.group.request.MessageTemplateGroupRelationRemoveRequest;
|
||||
import cn.axzo.msg.center.service.group.response.MessageTemplateGroupRelationResponse;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import cn.azxo.framework.common.model.Page;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author cold_blade
|
||||
* @date 2023/10/12
|
||||
* @version 1.0
|
||||
*/
|
||||
@Component
|
||||
@FeignClient(value = "msg-center", url = "${server.serviceUrl:http://msg-center:8080}",
|
||||
fallback = MessageGroupClientFallback.class)
|
||||
public interface MessageTemplateGroupRelationClient {
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询分类下关联的模板列表
|
||||
*
|
||||
* @param nodeCode 分类结点的编码
|
||||
* @return 模板列表
|
||||
*/
|
||||
@PostMapping(value = "/message/template/group-relation/page", produces = {MediaType.APPLICATION_JSON_VALUE})
|
||||
CommonResponse<Page<MessageTemplateGroupRelationResponse>> page(@RequestParam("nodeCode") String nodeCode);
|
||||
|
||||
/**
|
||||
* 变更模板与分类的关联关系
|
||||
*
|
||||
* @param request 变更分类的相关参数
|
||||
*/
|
||||
@PostMapping(value = "/message/template/group-relation/move", produces = {MediaType.APPLICATION_JSON_VALUE})
|
||||
CommonResponse<Void> move(@RequestBody MessageTemplateGroupRelationMoveRequest request);
|
||||
|
||||
/**
|
||||
* 变更模板与分类的关联关系
|
||||
*
|
||||
* @param request 变更分类的相关参数
|
||||
* @return 关联关系解除失败的模板编码
|
||||
*/
|
||||
@PostMapping(value = "/message/template/group-relation/remove", produces = {MediaType.APPLICATION_JSON_VALUE})
|
||||
CommonResponse<List<String>> remove(@RequestBody MessageTemplateGroupRelationRemoveRequest request);
|
||||
}
|
||||
@ -1,12 +1,16 @@
|
||||
package cn.axzo.msg.center.service.group.client.fallback;
|
||||
|
||||
import cn.axzo.msg.center.service.enums.MessageCategoryEnum;
|
||||
import cn.axzo.msg.center.service.group.client.MessageGroupClient;
|
||||
import cn.axzo.msg.center.service.group.request.MessageGroupNodeAddRequest;
|
||||
import cn.axzo.msg.center.service.group.request.MessageGroupNodeUpdateRequest;
|
||||
import cn.axzo.msg.center.service.group.response.MessageGroupTreeNodeResponse;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @description
|
||||
*
|
||||
@ -34,4 +38,10 @@ public class MessageGroupClientFallback implements MessageGroupClient {
|
||||
log.error("fall back while deleting message group node. nodeCode:[{}], operatorId:[{}]", nodeCode, operatorId);
|
||||
return CommonResponse.error("fall back while deleting message group node");
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<List<MessageGroupTreeNodeResponse>> list(MessageCategoryEnum category) {
|
||||
log.error("fall back while listing message group node. category:[{}]", category);
|
||||
return CommonResponse.error("fall back while listing message group node");
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,40 @@
|
||||
package cn.axzo.msg.center.service.group.client.fallback;
|
||||
|
||||
import cn.axzo.msg.center.service.group.client.MessageTemplateGroupRelationClient;
|
||||
import cn.axzo.msg.center.service.group.request.MessageTemplateGroupRelationMoveRequest;
|
||||
import cn.axzo.msg.center.service.group.request.MessageTemplateGroupRelationRemoveRequest;
|
||||
import cn.axzo.msg.center.service.group.response.MessageTemplateGroupRelationResponse;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import cn.azxo.framework.common.model.Page;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author cold_blade
|
||||
* @date 2023/10/12
|
||||
* @version 1.0
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class MessageTemplateGroupRelationClientFallback implements MessageTemplateGroupRelationClient {
|
||||
|
||||
@Override
|
||||
public CommonResponse<Page<MessageTemplateGroupRelationResponse>> page(String nodeCode) {
|
||||
log.error("fall back while page querying message template group relation. nodeCode:{}", nodeCode);
|
||||
return CommonResponse.error("fall back while page querying message template group relation");
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Void> move(MessageTemplateGroupRelationMoveRequest request) {
|
||||
log.error("fall back while moving message template group relation. request:{}", request);
|
||||
return CommonResponse.error("fall back while moving message template group relation");
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<List<String>> remove(MessageTemplateGroupRelationRemoveRequest request) {
|
||||
log.error("fall back while removing message template group relation. request:{}", request);
|
||||
return CommonResponse.error("fall back while removing message template group relation");
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
package cn.axzo.msg.center.service.group.request;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author cold_blade
|
||||
* @date 2023/10/12
|
||||
* @version 1.0
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class MessageTemplateGroupRelationMoveRequest implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 8336083457743619246L;
|
||||
|
||||
/**
|
||||
* 模板当前所处的分类结点编码
|
||||
*/
|
||||
@NotBlank(message = "curNodeCode is required")
|
||||
private String curNodeCode;
|
||||
/**
|
||||
* 模板将要移动到的目标分类结点编码
|
||||
*/
|
||||
@NotBlank(message = "targetNodeCode is required")
|
||||
private String targetNodeCode;
|
||||
/**
|
||||
* 选中的模板编码列表
|
||||
*/
|
||||
@NotEmpty(message = "templateCodes is required")
|
||||
private List<String> templateCodes;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
package cn.axzo.msg.center.service.group.request;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author cold_blade
|
||||
* @date 2023/10/12
|
||||
* @version 1.0
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class MessageTemplateGroupRelationRemoveRequest implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 8336083457743619246L;
|
||||
|
||||
/**
|
||||
* 模板当前所处的分类结点编码
|
||||
*/
|
||||
@NotBlank(message = "curNodeCode is required")
|
||||
private String curNodeCode;
|
||||
/**
|
||||
* 选中的模板编码列表
|
||||
*/
|
||||
@NotEmpty(message = "templateCodes is required")
|
||||
private List<String> templateCodes;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,47 @@
|
||||
package cn.axzo.msg.center.service.group.response;
|
||||
|
||||
import cn.axzo.msg.center.service.enums.MessageGroupNodeCategoryEnum;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author cold_blade
|
||||
* @date 2023/10/12
|
||||
* @version 1.0
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class MessageGroupTreeNodeResponse implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -6741888813327778598L;
|
||||
|
||||
/**
|
||||
* 结点类型
|
||||
* GENERAL_MESSAGE_CENTER: 消息中心
|
||||
* GENERAL_MESSAGE_MODULE: 消息模块
|
||||
* GENERAL_MESSAGE_CATEGORY: 消息分类
|
||||
* PENDING_MESSAGE_CENTER: 待办中心
|
||||
* PENDING_MESSAGE_MODULE: 待办模块
|
||||
* PENDING_MESSAGE_CATEGORY: 待办分类
|
||||
*/
|
||||
private MessageGroupNodeCategoryEnum category;
|
||||
/**
|
||||
* 结点名称
|
||||
*/
|
||||
private String nodeName;
|
||||
/**
|
||||
* 结点编码
|
||||
*/
|
||||
private String nodeCode;
|
||||
/**
|
||||
* 父节点编码
|
||||
*/
|
||||
private String parentNodeCode;
|
||||
/**
|
||||
* 子节点列表
|
||||
*/
|
||||
private List<MessageGroupTreeNodeResponse> children;
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
package cn.axzo.msg.center.service.group.response;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author cold_blade
|
||||
* @date 2023/10/12
|
||||
* @version 1.0
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class MessageTemplateGroupRelationResponse implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -5321330362977310550L;
|
||||
|
||||
/**
|
||||
* 模板名称
|
||||
*/
|
||||
private String templateName;
|
||||
/**
|
||||
* 模板编码
|
||||
*/
|
||||
private String templateCode;
|
||||
/**
|
||||
* 消息标题
|
||||
*/
|
||||
private String title;
|
||||
/**
|
||||
* 模板创建时间戳
|
||||
*/
|
||||
private Long createTimestamp;
|
||||
}
|
||||
@ -2,13 +2,15 @@ package cn.axzo.msg.center.service.template.client;
|
||||
|
||||
import cn.axzo.msg.center.service.template.client.fallback.MessageTemplateClientFallback;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateCreateRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateMoveToRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateUpdateRequest;
|
||||
import cn.axzo.msg.center.service.template.response.MessageTemplateDetailResponse;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
@ -29,15 +31,26 @@ public interface MessageTemplateClient {
|
||||
* 添加消息模板
|
||||
*
|
||||
* @param request 模板数据模型
|
||||
* @return 模板编码
|
||||
*/
|
||||
@PostMapping(value = "/message/template/add", produces = {MediaType.APPLICATION_JSON_VALUE})
|
||||
CommonResponse<String> addTemplate(@RequestBody @Valid MessageTemplateCreateRequest request);
|
||||
CommonResponse<String> save(@RequestBody @Valid MessageTemplateCreateRequest request);
|
||||
|
||||
/**
|
||||
* 批量消息模板分类迁移
|
||||
* 添加消息模板
|
||||
*
|
||||
* @param request 待迁移的关联关系id以及目标分类
|
||||
* @param request 模板数据模型
|
||||
* @return 模板编码
|
||||
*/
|
||||
@PostMapping(value = "/message/template/group/batch-move", produces = {MediaType.APPLICATION_JSON_VALUE})
|
||||
CommonResponse<String> batchMove(@RequestBody @Valid MessageTemplateMoveToRequest request);
|
||||
@PostMapping(value = "/message/template/update", produces = {MediaType.APPLICATION_JSON_VALUE})
|
||||
CommonResponse<Void> update(@RequestBody @Valid MessageTemplateUpdateRequest request);
|
||||
|
||||
/**
|
||||
* 消息模板详情
|
||||
*
|
||||
* @param templateCode 消息模板编码
|
||||
* @return 消息模板详情
|
||||
*/
|
||||
@PostMapping(value = "/message/template/detail", produces = {MediaType.APPLICATION_JSON_VALUE})
|
||||
CommonResponse<MessageTemplateDetailResponse> detail(@RequestParam("templateCode") String templateCode);
|
||||
}
|
||||
|
||||
@ -2,7 +2,8 @@ package cn.axzo.msg.center.service.template.client.fallback;
|
||||
|
||||
import cn.axzo.msg.center.service.template.client.MessageTemplateClient;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateCreateRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateMoveToRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateUpdateRequest;
|
||||
import cn.axzo.msg.center.service.template.response.MessageTemplateDetailResponse;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
@ -18,14 +19,20 @@ import org.springframework.stereotype.Component;
|
||||
@Component
|
||||
public class MessageTemplateClientFallback implements MessageTemplateClient {
|
||||
@Override
|
||||
public CommonResponse<String> addTemplate(MessageTemplateCreateRequest request) {
|
||||
public CommonResponse<String> save(MessageTemplateCreateRequest request) {
|
||||
log.error("fall back while adding template. request:{}", request);
|
||||
return CommonResponse.error("fall back while adding template");
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<String> batchMove(MessageTemplateMoveToRequest request) {
|
||||
log.error("fall back while batch moving to target group. request:{}", request);
|
||||
return CommonResponse.error("fall back while batch moving to target group");
|
||||
public CommonResponse<Void> update(MessageTemplateUpdateRequest request) {
|
||||
log.error("fall back while updating template. request:{}", request);
|
||||
return CommonResponse.error("fall back while updating template");
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<MessageTemplateDetailResponse> detail(String templateCode) {
|
||||
log.error("fall back while query template detail. templateCode:{}", templateCode);
|
||||
return CommonResponse.error("fall back while query template detail");
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
package cn.axzo.msg.center.service.template.request;
|
||||
|
||||
import cn.axzo.msg.center.service.dto.MessageRouterDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageRouterButtonDTO;
|
||||
import cn.axzo.msg.center.service.enums.MessageCategoryEnum;
|
||||
import cn.axzo.msg.center.service.enums.PushTerminalEnum;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@ -43,10 +44,14 @@ public class MessageTemplateCreateRequest implements Serializable {
|
||||
@NotNull(message = "category is required")
|
||||
private MessageCategoryEnum category;
|
||||
/**
|
||||
* 消息分类结点的结点编码列表
|
||||
* 消息分类的树结点编码路径列表 eg: aa:bb:cc
|
||||
*/
|
||||
@NotEmpty(message = "msgGroupNodeCodes is required")
|
||||
private List<String> msgGroupNodeCodes;
|
||||
@NotEmpty(message = "groupPaths is required")
|
||||
private List<String> groupPaths;
|
||||
/**
|
||||
* 推送终端配置
|
||||
*/
|
||||
private List<PushTerminalEnum> pushTerminals;
|
||||
/**
|
||||
* 消息标题
|
||||
*/
|
||||
@ -68,7 +73,7 @@ public class MessageTemplateCreateRequest implements Serializable {
|
||||
/**
|
||||
* 路由策略列表
|
||||
*/
|
||||
private List<MessageRouterDTO> routers;
|
||||
private List<MessageRouterButtonDTO> routers;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
|
||||
@ -1,40 +0,0 @@
|
||||
package cn.axzo.msg.center.service.template.request;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @description
|
||||
*
|
||||
* @author cold_blade
|
||||
* @date 2023/9/26
|
||||
* @version 1.0
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class MessageTemplateMoveToRequest implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 6484726175219602690L;
|
||||
|
||||
/**
|
||||
* 操作者的自然人id
|
||||
*/
|
||||
private Long operatorId;
|
||||
/**
|
||||
* 模板与分类的关联关系的id列表
|
||||
*/
|
||||
private List<Long> templateGroupRelationIds;
|
||||
/**
|
||||
* 迁移的目标分类结点编码
|
||||
*/
|
||||
private String targetGroupNodeCode;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,74 @@
|
||||
package cn.axzo.msg.center.service.template.request;
|
||||
|
||||
import cn.axzo.msg.center.service.dto.MessageRouterButtonDTO;
|
||||
import cn.axzo.msg.center.service.enums.PushTerminalEnum;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @description
|
||||
*
|
||||
* @author cold_blade
|
||||
* @date 2023/10/11
|
||||
* @version 1.0
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class MessageTemplateUpdateRequest implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -2894419272913799317L;
|
||||
|
||||
/**
|
||||
* 操作者的自然人id
|
||||
*/
|
||||
@NotNull(message = "operatorId is required")
|
||||
private Long operatorId;
|
||||
/**
|
||||
* 模板名称
|
||||
*/
|
||||
@NotBlank(message = "templateName is required")
|
||||
private String templateName;
|
||||
/**
|
||||
* 消息分类的树结点编码路径列表 eg: aa:bb:cc
|
||||
*/
|
||||
@NotEmpty(message = "groupPaths is required")
|
||||
private List<String> groupPaths;
|
||||
/**
|
||||
* 推送终端配置
|
||||
*/
|
||||
private List<PushTerminalEnum> pushTerminals;
|
||||
/**
|
||||
* 消息标题
|
||||
*/
|
||||
@NotBlank(message = "msgTitle is required")
|
||||
private String msgTitle;
|
||||
/**
|
||||
* 消息卡片信息
|
||||
*/
|
||||
private String msgCardInfo;
|
||||
/**
|
||||
* 消息内容
|
||||
*/
|
||||
@NotBlank(message = "msgContent is required")
|
||||
private String msgContent;
|
||||
/**
|
||||
* 消息图标
|
||||
*/
|
||||
private String msgIcon;
|
||||
/**
|
||||
* 路由策略列表
|
||||
*/
|
||||
private List<MessageRouterButtonDTO> routers;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,73 @@
|
||||
package cn.axzo.msg.center.service.template.response;
|
||||
|
||||
import cn.axzo.msg.center.service.dto.MessageRouterDTO;
|
||||
import cn.axzo.msg.center.service.enums.MessageCategoryEnum;
|
||||
import cn.axzo.msg.center.service.enums.PushTerminalEnum;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author cold_blade
|
||||
* @date 2023/10/11
|
||||
* @version 1.0
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class MessageTemplateDetailResponse implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 6772912658753264863L;
|
||||
|
||||
/**
|
||||
* 模板名称
|
||||
*/
|
||||
private String templateName;
|
||||
/**
|
||||
* 消息类型
|
||||
* GENERAL_MESSAGE: 普通消息
|
||||
* PENDING_MESSAGE: 待办消息
|
||||
*/
|
||||
private MessageCategoryEnum category;
|
||||
/**
|
||||
* 消息分类的树结点编码路径列表 eg: aa:bb:cc
|
||||
*/
|
||||
private List<String> groupPaths;
|
||||
/**
|
||||
* 推送终端配置
|
||||
*/
|
||||
private List<PushTerminalEnum> pushTerminals;
|
||||
/**
|
||||
* 消息标题
|
||||
*/
|
||||
private String msgTitle;
|
||||
/**
|
||||
* 消息卡片信息
|
||||
*/
|
||||
private String msgCardInfo;
|
||||
/**
|
||||
* 消息内容
|
||||
*/
|
||||
private String msgContent;
|
||||
/**
|
||||
* 消息图标
|
||||
*/
|
||||
private String msgIcon;
|
||||
/**
|
||||
* 路由策略列表
|
||||
*/
|
||||
private List<MessageRouterDTO> routers;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -51,6 +51,10 @@ public class MessageBaseTemplate extends BaseEntity<MessageBaseTemplate> impleme
|
||||
* 模板icon
|
||||
*/
|
||||
private String icon;
|
||||
/**
|
||||
* 推送终端配置 JSON字串
|
||||
*/
|
||||
private String pushTerminal;
|
||||
/**
|
||||
* 创建者自然人id
|
||||
*/
|
||||
|
||||
@ -44,6 +44,10 @@ public class MessageTemplateRouter extends BaseEntity<MessageTemplateRouter> imp
|
||||
* 路由地址
|
||||
*/
|
||||
private String url;
|
||||
/**
|
||||
* 按钮style配置
|
||||
*/
|
||||
private String style;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
|
||||
@ -98,6 +98,10 @@ public class PendingMessageRecord extends BaseEntity<PendingMessageRecord> imple
|
||||
* 业务描述eg:流程结点描述
|
||||
*/
|
||||
private String bizDesc;
|
||||
/**
|
||||
* 业务扩展参数
|
||||
*/
|
||||
private String bizExtParam;
|
||||
/**
|
||||
* 路由参数(留存)
|
||||
*/
|
||||
|
||||
Loading…
Reference in New Issue
Block a user