From a36813f81fac827b6c8454ba7ecc92ecd96b8a3b Mon Sep 17 00:00:00 2001 From: luofu Date: Thu, 12 Oct 2023 09:49:55 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat(REQ-1465):=20=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=E5=AE=9A?= =?UTF-8?q?=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1465?goToView=1 修改: 新增模板操作相关接口定义: 1、创建接口 2、修改接口 3、详情接口 影响: 无 --- .../controller/MessageTemplateController.java | 14 +++- .../service/dto/MessageBaseTemplateDTO.java | 66 +++++++++++++++++ .../center/service/dto/MessageRouterDTO.java | 6 ++ .../center/service/enums/ButtonStyleEnum.java | 22 ++++++ .../service/enums/PushTerminalEnum.java | 22 ++++++ .../client/MessageTemplateClient.java | 24 ++++-- .../MessageTemplateClientFallback.java | 16 ++-- .../request/MessageTemplateCreateRequest.java | 11 ++- .../request/MessageTemplateUpdateRequest.java | 74 +++++++++++++++++++ .../MessageTemplateDetailResponse.java | 73 ++++++++++++++++++ .../domain/entity/MessageBaseTemplate.java | 4 + .../domain/entity/MessageTemplateRouter.java | 4 + .../domain/entity/PendingMessageRecord.java | 4 + 13 files changed, 322 insertions(+), 18 deletions(-) create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageBaseTemplateDTO.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/ButtonStyleEnum.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PushTerminalEnum.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateUpdateRequest.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/template/response/MessageTemplateDetailResponse.java diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageTemplateController.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageTemplateController.java index d8e9d4d0..e0d1b56c 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageTemplateController.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageTemplateController.java @@ -4,7 +4,7 @@ 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.response.MessageTemplateDetailResponse; import cn.azxo.framework.common.model.CommonResponse; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.RestController; @@ -23,15 +23,21 @@ public class MessageTemplateController implements MessageTemplateClient { private final MessageTemplateNewService messageTemplateNewService; @Override - public CommonResponse addTemplate(MessageTemplateCreateRequest request) { + public CommonResponse save(MessageTemplateCreateRequest request) { MessageTemplateCreateParam param = MessageTemplateCreateParam.from(request); messageTemplateNewService.createTemplate(param); return CommonResponse.success(param.getTemplateCode()); } @Override - public CommonResponse batchMove(MessageTemplateMoveToRequest request) { - // TODO: [cold_blade] [P2] 模板关联的批量移动 + public CommonResponse update(MessageTemplateCreateRequest request) { + // TODO:[cold_blade] [P0] update template + return null; + } + + @Override + public CommonResponse detail(String templateCode) { + // TODO:[cold_blade] [P0] query template return null; } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageBaseTemplateDTO.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageBaseTemplateDTO.java new file mode 100644 index 00000000..3ae986b1 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageBaseTemplateDTO.java @@ -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 pushTerminals; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageRouterDTO.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageRouterDTO.java index 9afba13a..3322b087 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageRouterDTO.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageRouterDTO.java @@ -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 style; @Override public String toString() { diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/ButtonStyleEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/ButtonStyleEnum.java new file mode 100644 index 00000000..8aad56c5 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/ButtonStyleEnum.java @@ -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; +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PushTerminalEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PushTerminalEnum.java new file mode 100644 index 00000000..a475125a --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PushTerminalEnum.java @@ -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; +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/MessageTemplateClient.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/MessageTemplateClient.java index 325c6d2f..5eda61fe 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/MessageTemplateClient.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/MessageTemplateClient.java @@ -2,13 +2,14 @@ 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.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 +30,26 @@ public interface MessageTemplateClient { * 添加消息模板 * * @param request 模板数据模型 + * @return 模板编码 */ @PostMapping(value = "/message/template/add", produces = {MediaType.APPLICATION_JSON_VALUE}) - CommonResponse addTemplate(@RequestBody @Valid MessageTemplateCreateRequest request); + CommonResponse save(@RequestBody @Valid MessageTemplateCreateRequest request); /** - * 批量消息模板分类迁移 + * 添加消息模板 * - * @param request 待迁移的关联关系id以及目标分类 + * @param request 模板数据模型 + * @return 模板编码 */ - @PostMapping(value = "/message/template/group/batch-move", produces = {MediaType.APPLICATION_JSON_VALUE}) - CommonResponse batchMove(@RequestBody @Valid MessageTemplateMoveToRequest request); + @PostMapping(value = "/message/template/update", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse update(@RequestBody @Valid MessageTemplateCreateRequest request); + + /** + * 消息模板详情 + * + * @param templateCode 消息模板编码 + * @return 消息模板详情 + */ + @PostMapping(value = "/message/template/detail", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse detail(@RequestParam("templateCode") String templateCode); } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/fallback/MessageTemplateClientFallback.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/fallback/MessageTemplateClientFallback.java index 1b79f7d7..27d91041 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/fallback/MessageTemplateClientFallback.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/fallback/MessageTemplateClientFallback.java @@ -2,7 +2,7 @@ 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.response.MessageTemplateDetailResponse; import cn.azxo.framework.common.model.CommonResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -18,14 +18,20 @@ import org.springframework.stereotype.Component; @Component public class MessageTemplateClientFallback implements MessageTemplateClient { @Override - public CommonResponse addTemplate(MessageTemplateCreateRequest request) { + public CommonResponse save(MessageTemplateCreateRequest request) { log.error("fall back while adding template. request:{}", request); return CommonResponse.error("fall back while adding template"); } @Override - public CommonResponse 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 update(MessageTemplateCreateRequest request) { + log.error("fall back while updating template. request:{}", request); + return CommonResponse.error("fall back while updating template"); + } + + @Override + public CommonResponse detail(String templateCode) { + log.error("fall back while query template detail. templateCode:{}", templateCode); + return CommonResponse.error("fall back while query template detail"); } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateCreateRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateCreateRequest.java index f4cec735..14440e03 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateCreateRequest.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateCreateRequest.java @@ -2,6 +2,7 @@ package cn.axzo.msg.center.service.template.request; 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.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 msgGroupNodeCodes; + @NotEmpty(message = "groupPaths is required") + private List groupPaths; + /** + * 推送终端配置 + */ + private List pushTerminals; /** * 消息标题 */ diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateUpdateRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateUpdateRequest.java new file mode 100644 index 00000000..5ec82aa1 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateUpdateRequest.java @@ -0,0 +1,74 @@ +package cn.axzo.msg.center.service.template.request; + +import cn.axzo.msg.center.service.dto.MessageRouterDTO; +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 groupPaths; + /** + * 推送终端配置 + */ + private List 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 routers; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/response/MessageTemplateDetailResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/response/MessageTemplateDetailResponse.java new file mode 100644 index 00000000..6599deb3 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/response/MessageTemplateDetailResponse.java @@ -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 groupPaths; + /** + * 推送终端配置 + */ + private List pushTerminals; + /** + * 消息标题 + */ + private String msgTitle; + /** + * 消息卡片信息 + */ + private String msgCardInfo; + /** + * 消息内容 + */ + private String msgContent; + /** + * 消息图标 + */ + private String msgIcon; + /** + * 路由策略列表 + */ + private List routers; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageBaseTemplate.java b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageBaseTemplate.java index b652f869..a608450f 100644 --- a/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageBaseTemplate.java +++ b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageBaseTemplate.java @@ -51,6 +51,10 @@ public class MessageBaseTemplate extends BaseEntity impleme * 模板icon */ private String icon; + /** + * 推送终端配置 JSON字串 + */ + private String pushTerminal; /** * 创建者自然人id */ diff --git a/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateRouter.java b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateRouter.java index 68215289..8ef1f5f7 100644 --- a/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateRouter.java +++ b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateRouter.java @@ -44,6 +44,10 @@ public class MessageTemplateRouter extends BaseEntity imp * 路由地址 */ private String url; + /** + * 按钮style配置 + */ + private String style; @Override public String toString() { diff --git a/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/PendingMessageRecord.java b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/PendingMessageRecord.java index e519ed29..06322e2a 100644 --- a/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/PendingMessageRecord.java +++ b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/PendingMessageRecord.java @@ -98,6 +98,10 @@ public class PendingMessageRecord extends BaseEntity imple * 业务描述eg:流程结点描述 */ private String bizDesc; + /** + * 业务扩展参数 + */ + private String bizExtParam; /** * 路由参数(留存) */ From 0c042e1559e155434262332f33f7c2a624ddde51 Mon Sep 17 00:00:00 2001 From: luofu Date: Thu, 12 Oct 2023 17:18:59 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat(REQ-1465):=20=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=E5=AE=9A?= =?UTF-8?q?=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1465?goToView=1 修改: 新增模板操作相关接口定义: 1、创建接口 2、修改接口 3、详情接口 影响: 无 --- .../controller/MessageTemplateController.java | 3 +- .../domain/dto/RawMessageRouterDTO.java | 73 ++++++++++++------- .../param/MessageTemplateCreateParam.java | 3 +- .../MessageTemplateRouterServiceImpl.java | 24 ++++-- .../impl/PendingMessageNewServiceImpl.java | 16 ++-- .../msg/center/utils/MessageRouterUtil.java | 55 ++++---------- .../service/dto/MessageRouterButtonDTO.java | 54 ++++++++++++++ .../service/dto/MessageRouterTerminalDTO.java | 46 ++++++++++++ .../service/enums/TerminalTypeEnum.java | 7 +- .../client/MessageTemplateClient.java | 3 +- .../MessageTemplateClientFallback.java | 3 +- .../request/MessageTemplateCreateRequest.java | 4 +- .../request/MessageTemplateUpdateRequest.java | 4 +- 13 files changed, 203 insertions(+), 92 deletions(-) create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageRouterButtonDTO.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageRouterTerminalDTO.java diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageTemplateController.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageTemplateController.java index e0d1b56c..8de9e4b4 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageTemplateController.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageTemplateController.java @@ -4,6 +4,7 @@ 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.MessageTemplateUpdateRequest; import cn.axzo.msg.center.service.template.response.MessageTemplateDetailResponse; import cn.azxo.framework.common.model.CommonResponse; import lombok.RequiredArgsConstructor; @@ -30,7 +31,7 @@ public class MessageTemplateController implements MessageTemplateClient { } @Override - public CommonResponse update(MessageTemplateCreateRequest request) { + public CommonResponse update(MessageTemplateUpdateRequest request) { // TODO:[cold_blade] [P0] update template return null; } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/RawMessageRouterDTO.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/RawMessageRouterDTO.java index 1c8ea27a..ba1ee845 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/RawMessageRouterDTO.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/RawMessageRouterDTO.java @@ -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 terminals; /** * 模板编码 */ private String templateCode; + /** + * 按钮样式配置 + */ + private List style; - public static RawMessageRouterDTO from(MessageTemplateRouter msgTemplateRouter) { + public static RawMessageRouterDTO from(List 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 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; } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/MessageTemplateCreateParam.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/MessageTemplateCreateParam.java index f99c1cbe..b1151d5d 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/MessageTemplateCreateParam.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/MessageTemplateCreateParam.java @@ -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 routers; + private List routers; public static MessageTemplateCreateParam from(MessageTemplateCreateRequest request) { return MessageTemplateCreateParam.builder() diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateRouterServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateRouterServiceImpl.java index 8a0ca09d..6572992f 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateRouterServiceImpl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateRouterServiceImpl.java @@ -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 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 listByTemplateCodes(List templateCodes) { + // 根据模板编码进行分组 + Map> routers = messageTemplateRouterDao + .listByTemplateCode(templateCodes).stream() + .collect(Collectors.groupingBy(MessageTemplateRouter::getTemplateCode)); + return routers.values().stream() + .flatMap(e -> { + // 模板路由的按钮维度 + Map> btnMap = e.stream() + .collect(Collectors.groupingBy(MessageTemplateRouter::getName)); + return btnMap.values().stream() + .map(RawMessageRouterDTO::from); + }).collect(Collectors.toList()); + } } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java index 079a52d6..fcbc418b 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java @@ -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 routers = rawRouters.stream().map(e -> { - MessageRouterDTO router = BeanConverter.convert(e, MessageRouterDTO.class); - // 视情况替换原始URL中的参数变量 - MessageRouterUtil.parseRouteUrl(router, pendingMessageRecord.getRouterParams()); - return router; - }).collect(Collectors.toList()); + List 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() diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/utils/MessageRouterUtil.java b/inside-notices/src/main/java/cn/axzo/msg/center/utils/MessageRouterUtil.java index 1ec2d748..d04bcfe1 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/utils/MessageRouterUtil.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/utils/MessageRouterUtil.java @@ -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 ROUTER_SELECT_ORDER = - ImmutableMap.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 selectRouter(List 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); - } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageRouterButtonDTO.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageRouterButtonDTO.java new file mode 100644 index 00000000..996e0f3d --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageRouterButtonDTO.java @@ -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 style; + /** + * 路由终端列表,若当前按钮为ACTION,则只能配一个接口地址 + */ + private List terminals; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageRouterTerminalDTO.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageRouterTerminalDTO.java new file mode 100644 index 00000000..b4769b3a --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageRouterTerminalDTO.java @@ -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); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/TerminalTypeEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/TerminalTypeEnum.java index 1394e4fc..6f1fde50 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/TerminalTypeEnum.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/TerminalTypeEnum.java @@ -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; diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/MessageTemplateClient.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/MessageTemplateClient.java index 5eda61fe..90673954 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/MessageTemplateClient.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/MessageTemplateClient.java @@ -2,6 +2,7 @@ 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.MessageTemplateUpdateRequest; import cn.axzo.msg.center.service.template.response.MessageTemplateDetailResponse; import cn.azxo.framework.common.model.CommonResponse; import org.springframework.cloud.openfeign.FeignClient; @@ -42,7 +43,7 @@ public interface MessageTemplateClient { * @return 模板编码 */ @PostMapping(value = "/message/template/update", produces = {MediaType.APPLICATION_JSON_VALUE}) - CommonResponse update(@RequestBody @Valid MessageTemplateCreateRequest request); + CommonResponse update(@RequestBody @Valid MessageTemplateUpdateRequest request); /** * 消息模板详情 diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/fallback/MessageTemplateClientFallback.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/fallback/MessageTemplateClientFallback.java index 27d91041..cc0d75ae 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/fallback/MessageTemplateClientFallback.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/fallback/MessageTemplateClientFallback.java @@ -2,6 +2,7 @@ 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.MessageTemplateUpdateRequest; import cn.axzo.msg.center.service.template.response.MessageTemplateDetailResponse; import cn.azxo.framework.common.model.CommonResponse; import lombok.extern.slf4j.Slf4j; @@ -24,7 +25,7 @@ public class MessageTemplateClientFallback implements MessageTemplateClient { } @Override - public CommonResponse update(MessageTemplateCreateRequest request) { + public CommonResponse update(MessageTemplateUpdateRequest request) { log.error("fall back while updating template. request:{}", request); return CommonResponse.error("fall back while updating template"); } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateCreateRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateCreateRequest.java index 14440e03..e3648cdb 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateCreateRequest.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateCreateRequest.java @@ -1,6 +1,6 @@ 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; @@ -73,7 +73,7 @@ public class MessageTemplateCreateRequest implements Serializable { /** * 路由策略列表 */ - private List routers; + private List routers; @Override public String toString() { diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateUpdateRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateUpdateRequest.java index 5ec82aa1..73f35827 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateUpdateRequest.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateUpdateRequest.java @@ -1,6 +1,6 @@ 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.PushTerminalEnum; import com.alibaba.fastjson.JSON; import lombok.Getter; @@ -65,7 +65,7 @@ public class MessageTemplateUpdateRequest implements Serializable { /** * 路由策略列表 */ - private List routers; + private List routers; @Override public String toString() { From db4e03716a0cb2269b9136d4e905e61c6b9469fb Mon Sep 17 00:00:00 2001 From: luofu Date: Thu, 12 Oct 2023 18:17:58 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat(REQ-1465):=20=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=E5=AE=9A?= =?UTF-8?q?=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1465?goToView=1 修改: 新增模板分类管理操作相关接口定义: 1、查询分类树接口 2、分页查询分类关联的模板接口 3、变更模板分类的关联关系接口 4、解除模板分类的关联关系接口 影响: 无 --- .../group/client/MessageGroupClient.java | 11 ++++ .../MessageTemplateGroupRelationClient.java | 54 +++++++++++++++++++ .../fallback/MessageGroupClientFallback.java | 10 ++++ ...geTemplateGroupRelationClientFallback.java | 40 ++++++++++++++ ...ssageTemplateGroupRelationMoveRequest.java | 43 +++++++++++++++ ...ageTemplateGroupRelationRemoveRequest.java | 38 +++++++++++++ .../MessageGroupTreeNodeResponse.java | 47 ++++++++++++++++ .../MessageTemplateGroupRelationResponse.java | 35 ++++++++++++ .../request/MessageTemplateMoveToRequest.java | 40 -------------- 9 files changed, 278 insertions(+), 40 deletions(-) create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/MessageTemplateGroupRelationClient.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/fallback/MessageTemplateGroupRelationClientFallback.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageTemplateGroupRelationMoveRequest.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageTemplateGroupRelationRemoveRequest.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/group/response/MessageGroupTreeNodeResponse.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/group/response/MessageTemplateGroupRelationResponse.java delete mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateMoveToRequest.java diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/MessageGroupClient.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/MessageGroupClient.java index 611167eb..582fae14 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/MessageGroupClient.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/MessageGroupClient.java @@ -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 deleteNode(@RequestParam("nodeCode") String nodeCode, @RequestParam("operatorId") Long operatorId); + + /** + * 查询通知/待办的分类信息 + * + * @param category 消息分类 + */ + @PostMapping(value = "/message/group/node/list", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse> list(@RequestParam("category") MessageCategoryEnum category); } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/MessageTemplateGroupRelationClient.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/MessageTemplateGroupRelationClient.java new file mode 100644 index 00000000..92ced945 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/MessageTemplateGroupRelationClient.java @@ -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(@RequestParam("nodeCode") String nodeCode); + + /** + * 变更模板与分类的关联关系 + * + * @param request 变更分类的相关参数 + */ + @PostMapping(value = "/message/template/group-relation/move", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse move(@RequestBody MessageTemplateGroupRelationMoveRequest request); + + /** + * 变更模板与分类的关联关系 + * + * @param request 变更分类的相关参数 + * @return 关联关系解除失败的模板编码 + */ + @PostMapping(value = "/message/template/group-relation/remove", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse> remove(@RequestBody MessageTemplateGroupRelationRemoveRequest request); +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/fallback/MessageGroupClientFallback.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/fallback/MessageGroupClientFallback.java index 9c350661..f53866ae 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/fallback/MessageGroupClientFallback.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/fallback/MessageGroupClientFallback.java @@ -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(MessageCategoryEnum category) { + log.error("fall back while listing message group node. category:[{}]", category); + return CommonResponse.error("fall back while listing message group node"); + } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/fallback/MessageTemplateGroupRelationClientFallback.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/fallback/MessageTemplateGroupRelationClientFallback.java new file mode 100644 index 00000000..39915a7e --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/fallback/MessageTemplateGroupRelationClientFallback.java @@ -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(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 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> 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"); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageTemplateGroupRelationMoveRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageTemplateGroupRelationMoveRequest.java new file mode 100644 index 00000000..f4bc2bbc --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageTemplateGroupRelationMoveRequest.java @@ -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 templateCodes; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageTemplateGroupRelationRemoveRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageTemplateGroupRelationRemoveRequest.java new file mode 100644 index 00000000..1a395421 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageTemplateGroupRelationRemoveRequest.java @@ -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 templateCodes; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/response/MessageGroupTreeNodeResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/response/MessageGroupTreeNodeResponse.java new file mode 100644 index 00000000..b3be1f48 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/response/MessageGroupTreeNodeResponse.java @@ -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 children; +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/response/MessageTemplateGroupRelationResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/response/MessageTemplateGroupRelationResponse.java new file mode 100644 index 00000000..a184e65b --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/response/MessageTemplateGroupRelationResponse.java @@ -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; +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateMoveToRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateMoveToRequest.java deleted file mode 100644 index c7bee961..00000000 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateMoveToRequest.java +++ /dev/null @@ -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 templateGroupRelationIds; - /** - * 迁移的目标分类结点编码 - */ - private String targetGroupNodeCode; - - @Override - public String toString() { - return JSON.toJSONString(this); - } -}