From 2c0263e53301db4c42ccfec27e27f4bb7263c1cc Mon Sep 17 00:00:00 2001 From: luofu Date: Wed, 20 Sep 2023 20:56:07 +0800 Subject: [PATCH 01/34] =?UTF-8?q?feat(server):=20=E5=BE=85=E5=8A=9E?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景 REQ-1309 修改: 新增数据模型 影响: 无 --- .../enums/GeneralMessageStateEnum.java | 28 +++++ .../service/enums/IdentityTypeEnum.java | 29 +++++ .../service/enums/MessageCategoryEnum.java | 23 ++++ .../enums/MessageGroupNodeCategoryEnum.java | 26 +++++ .../service/enums/OrganizationTypeEnum.java | 23 ++++ .../enums/PendingMessageStateEnum.java | 27 +++++ .../service/enums/RouterCategoryEnum.java | 22 ++++ .../msg/center/service/enums/StatusEnum.java | 22 ++++ .../service/enums/TerminalTypeEnum.java | 27 +++++ msg-center-new/pom.xml | 89 +++++++++++++++ .../domain/po/GeneralMessageRecordPO.java | 93 ++++++++++++++++ .../perf/domain/po/MessageBaseTemplatePO.java | 67 ++++++++++++ .../perf/domain/po/MessageGroupNodePO.java | 62 +++++++++++ .../domain/po/MessageTemplateGroupPO.java | 39 +++++++ .../domain/po/MessageTemplateRouterPO.java | 52 +++++++++ .../domain/po/PendingMessageRecordPO.java | 101 ++++++++++++++++++ .../mapper/GeneralMessageRecordMapper.java | 14 +++ .../mapper/MessageBaseTemplateMapper.java | 14 +++ .../perf/mapper/MessageGroupNodeMapper.java | 14 +++ .../mapper/MessageTemplateGroupMapper.java | 14 +++ .../mapper/MessageTemplateRouterMapper.java | 14 +++ .../mapper/PendingMessageRecordMapper.java | 14 +++ .../perf/service/MessageGroupService.java | 12 +++ .../perf/service/PendingMessageService.java | 12 +++ pom.xml | 1 + .../axzo/msg/center/MsgCenterApplication.java | 2 +- 26 files changed, 840 insertions(+), 1 deletion(-) create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/GeneralMessageStateEnum.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/IdentityTypeEnum.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageCategoryEnum.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageGroupNodeCategoryEnum.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/OrganizationTypeEnum.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PendingMessageStateEnum.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/RouterCategoryEnum.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/StatusEnum.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/TerminalTypeEnum.java create mode 100644 msg-center-new/pom.xml create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/GeneralMessageRecordPO.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageBaseTemplatePO.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageGroupNodePO.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageTemplateGroupPO.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageTemplateRouterPO.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/GeneralMessageRecordMapper.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageBaseTemplateMapper.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageGroupNodeMapper.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageTemplateGroupMapper.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageTemplateRouterMapper.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/PendingMessageRecordMapper.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/perf/service/MessageGroupService.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/perf/service/PendingMessageService.java diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/GeneralMessageStateEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/GeneralMessageStateEnum.java new file mode 100644 index 00000000..2bb0a13f --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/GeneralMessageStateEnum.java @@ -0,0 +1,28 @@ +package cn.axzo.msg.center.service.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum GeneralMessageStateEnum { + + UNSENT(1, "未发送"), + HAS_BEEN_SENT(2, "已发送"), + RECEIVED(3, "已接收"), + HAVE_READ(4, "已读"), + RETRACT(6, "已撤销"), + DELETED(7, "已删除"), + ; + + private final Integer code; + private final String message; +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/IdentityTypeEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/IdentityTypeEnum.java new file mode 100644 index 00000000..625f3a22 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/IdentityTypeEnum.java @@ -0,0 +1,29 @@ +package cn.axzo.msg.center.service.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum IdentityTypeEnum { + + /*人员身份类型*/ + NOT_SUPPORT(0, "NOT_SUPPORT", "无效类型"), + WORKER(1, "WORKER", "工人"), + WORKER_LEADER(2, "WORKER_LEADER", "班组长"), + PRACTITIONER(3, "PRACTITIONER", "从业人员"), + REGULATOR(4, "REGULATOR", "监管人员"), + OPERATOR(5, "OPERATOR", "运营人员"), + ; + private final Integer code; + private final String message; + private final String desc; +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageCategoryEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageCategoryEnum.java new file mode 100644 index 00000000..b879e335 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageCategoryEnum.java @@ -0,0 +1,23 @@ +package cn.axzo.msg.center.service.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum MessageCategoryEnum { + + GENERAL_MESSAGE(1, "普通消息"), + PENDING_MESSAGE(2, "待办消息"); + + private final Integer code; + private final String message; +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageGroupNodeCategoryEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageGroupNodeCategoryEnum.java new file mode 100644 index 00000000..38491e67 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageGroupNodeCategoryEnum.java @@ -0,0 +1,26 @@ +package cn.axzo.msg.center.service.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum MessageGroupNodeCategoryEnum { + GENERAL_MESSAGE_CENTER("消息中心"), + GENERAL_MESSAGE_MODULE("消息模块"), + GENERAL_MESSAGE_CATEGORY("消息分类"), + PENDING_MESSAGE_CENTER("待办中心"), + PENDING_MESSAGE_MODULE("待办模块"), + PENDING_MESSAGE_CATEGORY("待办分类"), + ; + + private final String desc; +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/OrganizationTypeEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/OrganizationTypeEnum.java new file mode 100644 index 00000000..fb469054 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/OrganizationTypeEnum.java @@ -0,0 +1,23 @@ +package cn.axzo.msg.center.service.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum OrganizationTypeEnum { + ENT(2, "企业"), + PROJECT(1, "项目"), + UNKNOWN(0, "未知"); + + private final Integer code; + private final String message; +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PendingMessageStateEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PendingMessageStateEnum.java new file mode 100644 index 00000000..b6d63cce --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PendingMessageStateEnum.java @@ -0,0 +1,27 @@ +package cn.axzo.msg.center.service.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum PendingMessageStateEnum { + + UNSENT(1, "未发送"), + HAS_BEEN_SENT(2, "已发送"), + COMPLETED(5, "已办"), + RETRACT(6, "已撤回"), + DELETED(7, "已删除"), + ; + + private final Integer code; + private final String message; +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/RouterCategoryEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/RouterCategoryEnum.java new file mode 100644 index 00000000..04a10dcd --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/RouterCategoryEnum.java @@ -0,0 +1,22 @@ +package cn.axzo.msg.center.service.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum RouterCategoryEnum { + + JUMP("直接跳转"), + ACTION("接口调用"); + + private final String desc; +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/StatusEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/StatusEnum.java new file mode 100644 index 00000000..6d3b6686 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/StatusEnum.java @@ -0,0 +1,22 @@ +package cn.axzo.msg.center.service.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum StatusEnum { + + ENABLE("启用"), + DISABLE("禁用"); + + private final String desc; +} 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 new file mode 100644 index 00000000..0f4c1eac --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/TerminalTypeEnum.java @@ -0,0 +1,27 @@ +package cn.axzo.msg.center.service.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum TerminalTypeEnum { + + WEB(1, "web"), + MINI_PROGRAM(2, "mini_program"), + IOS(3, "ios"), + ANDROID(4, "android"), + WEB_VIEW(5, "webview"), + WECHAT_MINI_PROGRAM(6, "wechat mini-program"); + + private final Integer code; + private final String desc; +} diff --git a/msg-center-new/pom.xml b/msg-center-new/pom.xml new file mode 100644 index 00000000..f6eca95d --- /dev/null +++ b/msg-center-new/pom.xml @@ -0,0 +1,89 @@ + + + + msg-center + cn.axzo.msgcenter + ${revision} + ../pom.xml + + 4.0.0 + + msg-center-new + + + 8 + 8 + UTF-8 + + + + com.baomidou + lock4j-redisson-spring-boot-starter + + + + cn.hutool + hutool-all + + + + cn.axzo.msgcenter + msg-center-api + 1.0.0-SNAPSHOT + + + org.aspectj + aspectjweaver + + + org.springframework.boot + spring-boot-starter-aop + + + com.baomidou + mybatis-plus-boot-starter + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + RELEASE + + + com.baomidou + mybatis-plus-extension + + + mysql + mysql-connector-java + runtime + + + org.mapstruct + mapstruct + + + com.zaxxer + HikariCP + + + org.springframework.boot + spring-boot-starter-jdbc + + + com.baomidou + mybatis-plus-generator + + + org.springframework.retry + spring-retry + 1.3.3 + + + com.aliyun + alibaba-dingtalk-service-sdk + 2.0.0 + + + \ No newline at end of file diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/GeneralMessageRecordPO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/GeneralMessageRecordPO.java new file mode 100644 index 00000000..df2cf2c7 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/GeneralMessageRecordPO.java @@ -0,0 +1,93 @@ +package cn.axzo.msg.center.perf.domain.po; + +import cn.axzo.core.persistence.BaseEntity; +import cn.axzo.msg.center.service.enums.GeneralMessageStateEnum; +import cn.axzo.msg.center.service.enums.IdentityTypeEnum; +import cn.axzo.msg.center.service.enums.OrganizationTypeEnum; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + * @description + * 普通消息记录表数据模型 + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +@Setter +@Getter +@TableName("general_message_record") +public class GeneralMessageRecordPO extends BaseEntity implements Serializable { + + private static final long serialVersionUID = -1271402884501451185L; + + /** + * 发送者ID + */ + private Long senderId; + /** + * 接收者ID + */ + private Long receiverId; + /** + * 接收者类型 + */ + private IdentityTypeEnum receiverType; + /** + * 自然人 ID + */ + private Long personId; + /** + * 模板编码 + */ + private String templateCode; + /** + * 消息标题 + */ + private String title; + /** + * 消息内容 + */ + private String content; + /** + * 消息所属组织类型 + */ + private OrganizationTypeEnum orgType; + /** + * 消息所属组织Id + */ + private Long orgId; + /** + * 消息所属组织名称 + */ + private String orgName; + /** + * 消息状态 + */ + private GeneralMessageStateEnum state; + /** + * 关联业务主键 + */ + private String bizCode; + /** + * 路由参数(留存) + */ + private String routerParams; + /** + * 重试次数 + */ + private Integer retryCount; + /** + * 最终失败原因 + */ + private String failCause; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageBaseTemplatePO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageBaseTemplatePO.java new file mode 100644 index 00000000..12845102 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageBaseTemplatePO.java @@ -0,0 +1,67 @@ +package cn.axzo.msg.center.perf.domain.po; + +import cn.axzo.core.persistence.BaseEntity; +import cn.axzo.msg.center.service.enums.MessageCategoryEnum; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + * @description + * 消息基础模板数据模型 + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +@Setter +@Getter +@TableName("message_base_template") +public class MessageBaseTemplatePO extends BaseEntity implements Serializable { + + private static final long serialVersionUID = -880409106378455813L; + + /** + * 模板名称 + */ + private String name; + /** + * 系统自动生成的模板code + */ + private String code; + /** + * 所属消息类型 + */ + private MessageCategoryEnum msgCategory; + /** + * 模板标题 + */ + private String title; + /** + * 模板类容 + */ + private String content; + /** + * 卡片信息,json字串 + */ + private String cardContent; + /** + * 模板icon + */ + private String icon; + /** + * 创建者自然人id + */ + private Long creatorId; + /** + * 更新者自然人id + */ + private Long updaterId; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageGroupNodePO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageGroupNodePO.java new file mode 100644 index 00000000..1e7e0bef --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageGroupNodePO.java @@ -0,0 +1,62 @@ +package cn.axzo.msg.center.perf.domain.po; + +import cn.axzo.core.persistence.BaseEntity; +import cn.axzo.msg.center.service.enums.MessageGroupNodeCategoryEnum; +import cn.axzo.msg.center.service.enums.StatusEnum; +import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + * @description + * 消息分组结点表数据模型 + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +@Setter +@Getter +public class MessageGroupNodePO extends BaseEntity implements Serializable { + + private static final long serialVersionUID = -4536503805143925884L; + + /** + * 模板分组结点名称 + */ + private String name; + /** + * 模板分组结点名称code + */ + private String code; + /** + * 结点类型 + */ + private MessageGroupNodeCategoryEnum category; + /** + * 父节点 + */ + private String parentCode; + /** + * 是否为叶节点 + */ + private Integer isLeaf; + /** + * 状态 + */ + private StatusEnum status; + /** + * 创建者自然人id + */ + private Long creatorId; + /** + * 更新者自然人id + */ + private Long updaterId; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageTemplateGroupPO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageTemplateGroupPO.java new file mode 100644 index 00000000..14336dee --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageTemplateGroupPO.java @@ -0,0 +1,39 @@ +package cn.axzo.msg.center.perf.domain.po; + +import cn.axzo.core.persistence.BaseEntity; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + * @description + * 消息模板关联分类表数据模型 + * + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +@Setter +@Getter +@TableName("message_template_group") +public class MessageTemplateGroupPO extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 3902204750978588588L; + + /** + * 模板编码 + */ + private String templateCode; + /** + * 分组code + */ + private String groupCode; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageTemplateRouterPO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageTemplateRouterPO.java new file mode 100644 index 00000000..3769c0c4 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageTemplateRouterPO.java @@ -0,0 +1,52 @@ +package cn.axzo.msg.center.perf.domain.po; + +import cn.axzo.core.persistence.BaseEntity; +import cn.axzo.msg.center.service.enums.RouterCategoryEnum; +import cn.axzo.msg.center.service.enums.TerminalTypeEnum; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + * @description + * 消息模板路由表数据模型 + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +@Setter +@Getter +@TableName("message_template_router") +public class MessageTemplateRouterPO extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 6549664208396593182L; + + /** + * 路由显示名称 + */ + private String name; + /** + * 模板code + */ + private String templateCode; + /** + * 路由类型 + */ + private RouterCategoryEnum category; + /** + * 路由的终端类型 + */ + private TerminalTypeEnum terminalType; + /** + * 路由地址 + */ + private String url; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java new file mode 100644 index 00000000..e30bac23 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java @@ -0,0 +1,101 @@ +package cn.axzo.msg.center.perf.domain.po; + +import cn.axzo.core.persistence.BaseEntity; +import cn.axzo.msg.center.service.enums.IdentityTypeEnum; +import cn.axzo.msg.center.service.enums.PendingMessageStateEnum; +import cn.axzo.msg.center.service.enums.OrganizationTypeEnum; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + * @description + * 待办消息记录表数据模型 + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +@Setter +@Getter +@TableName("pending_message_record") +public class PendingMessageRecordPO extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 2184329278851311992L; + + /** + * 发起者ID + */ + private Long creatorId; + /** + * 发起者的自然人ID + */ + private Long creatorPersonId; + /** + * 发起者身份 + */ + private IdentityTypeEnum creatorType; + /** + * 执行者ID + */ + private Long executorId; + /** + * 执行者的自然人ID + */ + private Long executorPersonId; + /** + * 执行者身份 + */ + private IdentityTypeEnum executorType; + /** + * 模板编码 + */ + private String templateCode; + /** + * 消息标题 + */ + private String title; + /** + * 消息内容 + */ + private String content; + /** + * 消息所属组织类型 + */ + private OrganizationTypeEnum orgType; + /** + * 消息所属组织Id + */ + private Long orgId; + /** + * 消息所属组织名称 + */ + private String orgName; + /** + * 待办状态 + */ + private PendingMessageStateEnum state; + /** + * 关联业务主键 + */ + private String bizCode; + /** + * 路由参数(留存) + */ + private String routerParams; + /** + * 重试次数 + */ + private Integer retryCount; + /** + * 最终失败原因 + */ + private String failCause; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/GeneralMessageRecordMapper.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/GeneralMessageRecordMapper.java new file mode 100644 index 00000000..f087e0ac --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/GeneralMessageRecordMapper.java @@ -0,0 +1,14 @@ +package cn.axzo.msg.center.perf.mapper; + +import cn.axzo.msg.center.perf.domain.po.GeneralMessageRecordPO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @description + * 普通消息记录表Mapper + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +public interface GeneralMessageRecordMapper extends BaseMapper { +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageBaseTemplateMapper.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageBaseTemplateMapper.java new file mode 100644 index 00000000..5a2acc74 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageBaseTemplateMapper.java @@ -0,0 +1,14 @@ +package cn.axzo.msg.center.perf.mapper; + +import cn.axzo.msg.center.perf.domain.po.MessageBaseTemplatePO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @description + * 消息基础模板Mapper + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +public interface MessageBaseTemplateMapper extends BaseMapper { +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageGroupNodeMapper.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageGroupNodeMapper.java new file mode 100644 index 00000000..7411fb33 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageGroupNodeMapper.java @@ -0,0 +1,14 @@ +package cn.axzo.msg.center.perf.mapper; + +import cn.axzo.msg.center.perf.domain.po.MessageGroupNodePO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @description + * 消息分组结点Mapper + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +public interface MessageGroupNodeMapper extends BaseMapper { +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageTemplateGroupMapper.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageTemplateGroupMapper.java new file mode 100644 index 00000000..195958e5 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageTemplateGroupMapper.java @@ -0,0 +1,14 @@ +package cn.axzo.msg.center.perf.mapper; + +import cn.axzo.msg.center.perf.domain.po.MessageTemplateGroupPO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @description + * 消息模板关联分类Mapper + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +public interface MessageTemplateGroupMapper extends BaseMapper { +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageTemplateRouterMapper.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageTemplateRouterMapper.java new file mode 100644 index 00000000..e0f43a34 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageTemplateRouterMapper.java @@ -0,0 +1,14 @@ +package cn.axzo.msg.center.perf.mapper; + +import cn.axzo.msg.center.perf.domain.po.MessageTemplateRouterPO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @description + * 消息模板路由Mapper + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +public interface MessageTemplateRouterMapper extends BaseMapper { +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/PendingMessageRecordMapper.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/PendingMessageRecordMapper.java new file mode 100644 index 00000000..3d227f6a --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/PendingMessageRecordMapper.java @@ -0,0 +1,14 @@ +package cn.axzo.msg.center.perf.mapper; + +import cn.axzo.msg.center.perf.domain.po.PendingMessageRecordPO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @description + * 待办消息记录Mapper + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +public interface PendingMessageRecordMapper extends BaseMapper { +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/service/MessageGroupService.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/service/MessageGroupService.java new file mode 100644 index 00000000..fea2748a --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/service/MessageGroupService.java @@ -0,0 +1,12 @@ +package cn.axzo.msg.center.perf.service; + +/** + * @description + * 消息分类Service + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +public interface MessageGroupService { + +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/service/PendingMessageService.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/service/PendingMessageService.java new file mode 100644 index 00000000..44b03258 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/service/PendingMessageService.java @@ -0,0 +1,12 @@ +package cn.axzo.msg.center.perf.service; + +/** + * @description + * 待办Service + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +public interface PendingMessageService { + +} diff --git a/pom.xml b/pom.xml index d7ec1313..90e0c69d 100644 --- a/pom.xml +++ b/pom.xml @@ -24,6 +24,7 @@ start msg-center-dal msg-center-domain + msg-center-new diff --git a/start/src/main/java/cn/axzo/msg/center/MsgCenterApplication.java b/start/src/main/java/cn/axzo/msg/center/MsgCenterApplication.java index bfdabdee..cb570813 100644 --- a/start/src/main/java/cn/axzo/msg/center/MsgCenterApplication.java +++ b/start/src/main/java/cn/axzo/msg/center/MsgCenterApplication.java @@ -17,7 +17,7 @@ import org.springframework.scheduling.annotation.EnableAsync; * @date 2023/5/30 11:01 */ @Slf4j -@MapperScan(value = "cn.axzo.msg.center.dal") +@MapperScan(value = {"cn.axzo.msg.center.dal", "cn.axzo.msg.center.perf.mapper"}) @SpringBootApplication(scanBasePackages = {"cn.axzo.msg"}) @EnableFeignClients(basePackages = "cn.axzo.log") /*@EnableAsync*/ From 13b0184abcbb9430b4e09d7740e9aabac3eb23f1 Mon Sep 17 00:00:00 2001 From: luofu Date: Sat, 23 Sep 2023 14:30:21 +0800 Subject: [PATCH 02/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 新增代办中心列表分页查询接口定义 影响: 无 --- .../center/service/dto/QueryOrderByDTO.java | 35 ++++++++ .../center/service/enums/BizCategoryEnum.java | 22 +++++ .../enums/PendingMessageRoleCategoryEnum.java | 22 +++++ .../pending/client/PendingMessageClient.java | 26 ++++++ .../PendingMessageClientFallback.java | 27 ++++++ .../request/PendingMessagePageRequest.java | 90 +++++++++++++++++++ .../response/PendingMessageResponse.java | 67 ++++++++++++++ .../domain/po/PendingMessageRecordPO.java | 48 +++++++++- 8 files changed, 334 insertions(+), 3 deletions(-) create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/QueryOrderByDTO.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/BizCategoryEnum.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PendingMessageRoleCategoryEnum.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/QueryOrderByDTO.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/QueryOrderByDTO.java new file mode 100644 index 00000000..711d9845 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/QueryOrderByDTO.java @@ -0,0 +1,35 @@ +package cn.axzo.msg.center.service.dto; + +import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/23 + * @version 1.0 + */ +@Setter +@Getter +public class QueryOrderByDTO implements Serializable { + + private static final long serialVersionUID = 4374533352245898714L; + + /** + * 排序字段 + */ + private String orderField; + /** + * 是否为升序排序 + */ + private Boolean isAsc; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/BizCategoryEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/BizCategoryEnum.java new file mode 100644 index 00000000..e3085def --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/BizCategoryEnum.java @@ -0,0 +1,22 @@ +package cn.axzo.msg.center.service.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/22 + * @version 1.0 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum BizCategoryEnum { + + FLOW("流程"), OTHER("其它"), + ; + + private final String desc; +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PendingMessageRoleCategoryEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PendingMessageRoleCategoryEnum.java new file mode 100644 index 00000000..f762b655 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PendingMessageRoleCategoryEnum.java @@ -0,0 +1,22 @@ +package cn.axzo.msg.center.service.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/23 + * @version 1.0 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum PendingMessageRoleCategoryEnum { + + PROMOTER("发起者"), CREATOR("创建者"), EXECUTOR("执行者"), + ; + + private final String desc; +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java new file mode 100644 index 00000000..c03b91ee --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java @@ -0,0 +1,26 @@ +package cn.axzo.msg.center.service.pending.client; + +import cn.axzo.msg.center.service.pending.client.fallback.PendingMessageClientFallback; +import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; +import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; +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; + +/** + * @description + * @author cold_blade + * @date 2023/9/23 + * @version 1.0 + */ +@Component +@FeignClient(value = "msg-center", url = "${server.serviceUrl:http://msg-center:8080}", + fallback = PendingMessageClientFallback.class) +public interface PendingMessageClient { + + @PostMapping(value = "/pending-message/record/page", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse> pageQuery(PendingMessagePageRequest request); +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java new file mode 100644 index 00000000..0fddd46e --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java @@ -0,0 +1,27 @@ +package cn.axzo.msg.center.service.pending.client.fallback; + +import cn.axzo.msg.center.service.pending.client.PendingMessageClient; +import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; +import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; +import cn.azxo.framework.common.model.CommonResponse; +import cn.azxo.framework.common.model.Page; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @description + * client降级处理类 + * @author cold_blade + * @date 2023/9/23 + * @version 1.0 + */ +@Slf4j +@Component +public class PendingMessageClientFallback implements PendingMessageClient { + + @Override + public CommonResponse> pageQuery(PendingMessagePageRequest request) { + log.warn("broke out fall back while page querying pending message."); + return null; + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java new file mode 100644 index 00000000..73798eb0 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java @@ -0,0 +1,90 @@ +package cn.axzo.msg.center.service.pending.request; + +import cn.axzo.basics.common.page.PageRequest; +import cn.axzo.msg.center.service.dto.QueryOrderByDTO; +import cn.axzo.msg.center.service.enums.IdentityTypeEnum; +import cn.axzo.msg.center.service.enums.PendingMessageRoleCategoryEnum; +import cn.axzo.msg.center.service.enums.PendingMessageStateEnum; +import cn.axzo.msg.center.service.enums.TerminalTypeEnum; +import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Collection; + +/** + * @description + * 代办记录分页查询参数的数模型 + * @author cold_blade + * @date 2023/9/23 + * @version 1.0 + */ +@Setter +@Getter +public class PendingMessagePageRequest extends PageRequest implements Serializable { + + private static final long serialVersionUID = 7172093131252325437L; + + /** + * APP终端类型(前端不care) + * WEB: web端页面 + * MINI_PROGRAM: 安心筑小程序端页面 + * IOS: 原生IOS端页面 + * ANDROID: 原生Android端页面 + * WEB_VIEW: H5页面 + * WECHAT_MINI_PROGRAM: 微信小程序页面 + */ + private TerminalTypeEnum terminalType; + /** + * 当前登录账户的自然id(前端不care) + */ + private Long personId; + /** + * 当前登录账户的身份id(前端不care) + */ + private Long identityId; + /** + * 当前登录账户的身份类型(前端不care) + */ + private IdentityTypeEnum identityType; + /** + * 业务方是否只关注特定身份的消息 + * true: 是 + * false: 否 + */ + private Boolean withIdentify; + /** + * 代办角色 + * PROMOTER: 发起者 + * CREATOR: 创建者 + * EXECUTOR: 执行者 + */ + private PendingMessageRoleCategoryEnum roleCategory; + /** + * 代办消息状态 + * UNSENT: 未发送 + * HAS_BEEN_SENT: 已发送 + * COMPLETED: 已办 + * RETRACT: 已撤回 + * DELETED: 已删除 + */ + private PendingMessageStateEnum msgState; + /** + * 代办消息的分类结点编码 + */ + private String groupNodeCode; + /** + * 消息标题 + */ + private String title; + /** + * 排序字段集合 + */ + private Collection orderFields; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java new file mode 100644 index 00000000..5786c9b5 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java @@ -0,0 +1,67 @@ +package cn.axzo.msg.center.service.pending.response; + +import com.alibaba.fastjson.JSON; + +import java.io.Serializable; + +/** + * @description + * 代办消息记录页面展示数模型 + * @author cold_blade + * @date 2023/9/23 + * @version 1.0 + */ +public class PendingMessageResponse implements Serializable { + + private static final long serialVersionUID = -4133864010679470398L; + + /** + * 消息id + */ + private Long msgId; + /** + * 消息标题 + */ + private String title; + /** + * 代办发起者姓名 + */ + private String promoterName; + /** + * 代办发起者的自然人id + */ + private Long promoterPersonId; + /** + * 代办创建者姓名 + */ + private String creatorName; + /** + * 代办创建者自然人id + */ + private Long creatorPersonId; + /** + * 代办执行者姓名 + */ + private String executorName; + /** + * 代办执行者自然人id + */ + private Long executorPersonId; + /** + * 业务状态描述 + */ + private String bizDesc; + /** + * 申请时间戳 + */ + private Long createTimestamp; + /** + * 处理时间戳 + */ + private Long updateTimestamp; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java index e30bac23..6cf9c311 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java @@ -1,15 +1,17 @@ package cn.axzo.msg.center.perf.domain.po; import cn.axzo.core.persistence.BaseEntity; +import cn.axzo.msg.center.service.enums.BizCategoryEnum; import cn.axzo.msg.center.service.enums.IdentityTypeEnum; -import cn.axzo.msg.center.service.enums.PendingMessageStateEnum; import cn.axzo.msg.center.service.enums.OrganizationTypeEnum; +import cn.axzo.msg.center.service.enums.PendingMessageStateEnum; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Getter; import lombok.Setter; import java.io.Serializable; +import java.util.Date; /** * @description @@ -28,19 +30,43 @@ public class PendingMessageRecordPO extends BaseEntity i /** * 发起者ID */ - private Long creatorId; + private Long promoterId; + /** + * 发起者姓名 + */ + private String promoterName; /** * 发起者的自然人ID */ - private Long creatorPersonId; + private Long promoterPersonId; /** * 发起者身份 */ + private IdentityTypeEnum promoterType; + /** + * 创建者ID + */ + private Long creatorId; + /** + * 创建者姓名 + */ + private String creatorName; + /** + * 创建者的自然人ID + */ + private Long creatorPersonId; + /** + * 创建者身份 + */ private IdentityTypeEnum creatorType; /** * 执行者ID */ private Long executorId; + /** + * 执行者姓名 + */ + private String executorName; /** * 执行者的自然人ID */ @@ -49,6 +75,10 @@ public class PendingMessageRecordPO extends BaseEntity i * 执行者身份 */ private IdentityTypeEnum executorType; + /** + * 代办完成时间 + */ + private Date executeTime; /** * 模板编码 */ @@ -77,10 +107,22 @@ public class PendingMessageRecordPO extends BaseEntity i * 待办状态 */ private PendingMessageStateEnum state; + /** + * 业务类型 + */ + private BizCategoryEnum bizCategory; /** * 关联业务主键 */ private String bizCode; + /** + * 流程类代办的流程结点编码 + */ + private String subBizCode; + /** + * 业务描述eg:流程结点描述 + */ + private String bizDesc; /** * 路由参数(留存) */ From 7f1d07894283dd6090951385fdd07c47c751d42a Mon Sep 17 00:00:00 2001 From: luofu Date: Sat, 23 Sep 2023 16:46:54 +0800 Subject: [PATCH 03/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E7=BB=9F=E8=AE=A1=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-1309?goToView=1 修改: 新增代办分类统计接口定义 影响: 无 --- .../msg/center/service/dto/GroupNodeDTO.java | 53 +++++++++++++ .../enums/MessageGroupNodeCategoryEnum.java | 1 + .../service/pending/client/MessageClient.java | 30 ++++++++ .../pending/client/PendingMessageClient.java | 5 +- .../fallback/MessageClientFallback.java | 29 +++++++ .../MessageGroupNodeStatisticRequest.java | 75 +++++++++++++++++++ .../request/PendingMessagePageRequest.java | 2 + .../MessageGroupNodeStatisticResponse.java | 54 +++++++++++++ 8 files changed, 248 insertions(+), 1 deletion(-) create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/GroupNodeDTO.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/MessageClient.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/MessageClientFallback.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/MessageGroupNodeStatisticRequest.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/MessageGroupNodeStatisticResponse.java diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/GroupNodeDTO.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/GroupNodeDTO.java new file mode 100644 index 00000000..256ada15 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/GroupNodeDTO.java @@ -0,0 +1,53 @@ +package cn.axzo.msg.center.service.dto; + +import cn.axzo.msg.center.service.enums.MessageGroupNodeCategoryEnum; +import cn.axzo.msg.center.service.enums.StatusEnum; +import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/23 + * @version 1.0 + */ +@Setter +@Getter +public class GroupNodeDTO implements Serializable { + + private static final long serialVersionUID = -5935469947222698608L; + + /** + * 模板分组结点名称 + */ + private String name; + /** + * 模板分组结点名称code + */ + private String code; + /** + * 结点类型 + */ + private MessageGroupNodeCategoryEnum category; + /** + * 父节点 + */ + private String parentCode; + /** + * 是否为叶节点 + */ + private Integer isLeaf; + /** + * 状态 + */ + private StatusEnum status; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageGroupNodeCategoryEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageGroupNodeCategoryEnum.java index 38491e67..0727b216 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageGroupNodeCategoryEnum.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageGroupNodeCategoryEnum.java @@ -14,6 +14,7 @@ import lombok.Getter; @Getter @AllArgsConstructor(access = AccessLevel.PRIVATE) public enum MessageGroupNodeCategoryEnum { + GENERAL_MESSAGE_CENTER("消息中心"), GENERAL_MESSAGE_MODULE("消息模块"), GENERAL_MESSAGE_CATEGORY("消息分类"), diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/MessageClient.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/MessageClient.java new file mode 100644 index 00000000..b457c6fe --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/MessageClient.java @@ -0,0 +1,30 @@ +package cn.axzo.msg.center.service.pending.client; + +import cn.axzo.msg.center.service.pending.client.fallback.MessageClientFallback; +import cn.axzo.msg.center.service.pending.request.MessageGroupNodeStatisticRequest; +import cn.axzo.msg.center.service.pending.response.MessageGroupNodeStatisticResponse; +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 javax.validation.Valid; +import java.util.List; + +/** + * @description + * @author cold_blade + * @date 2023/9/23 + * @version 1.0 + */ +@Component +@FeignClient(value = "msg-center", url = "${server.serviceUrl:http://msg-center:8080}", + fallback = MessageClientFallback.class) +public interface MessageClient { + + @PostMapping(value = "/message/record/group/statistic", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse> groupStatistic(@RequestBody @Valid + MessageGroupNodeStatisticRequest request); +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java index c03b91ee..beb39188 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java @@ -9,6 +9,9 @@ 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 javax.validation.Valid; /** * @description @@ -22,5 +25,5 @@ import org.springframework.web.bind.annotation.PostMapping; public interface PendingMessageClient { @PostMapping(value = "/pending-message/record/page", produces = {MediaType.APPLICATION_JSON_VALUE}) - CommonResponse> pageQuery(PendingMessagePageRequest request); + CommonResponse> pageQuery(@RequestBody @Valid PendingMessagePageRequest request); } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/MessageClientFallback.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/MessageClientFallback.java new file mode 100644 index 00000000..efbb1c56 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/MessageClientFallback.java @@ -0,0 +1,29 @@ +package cn.axzo.msg.center.service.pending.client.fallback; + +import cn.axzo.msg.center.service.pending.client.MessageClient; +import cn.axzo.msg.center.service.pending.request.MessageGroupNodeStatisticRequest; +import cn.axzo.msg.center.service.pending.response.MessageGroupNodeStatisticResponse; +import cn.azxo.framework.common.model.CommonResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @description + * client降级处理类 + * @author cold_blade + * @date 2023/9/23 + * @version 1.0 + */ +@Slf4j +@Component +public class MessageClientFallback implements MessageClient { + + @Override + public CommonResponse> groupStatistic( + MessageGroupNodeStatisticRequest request) { + log.warn("broke out fall back while doing statistic message record by group."); + return null; + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/MessageGroupNodeStatisticRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/MessageGroupNodeStatisticRequest.java new file mode 100644 index 00000000..effa1fe4 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/MessageGroupNodeStatisticRequest.java @@ -0,0 +1,75 @@ +package cn.axzo.msg.center.service.pending.request; + +import cn.axzo.msg.center.service.enums.IdentityTypeEnum; +import cn.axzo.msg.center.service.enums.PendingMessageRoleCategoryEnum; +import cn.axzo.msg.center.service.enums.PendingMessageStateEnum; +import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/23 + * @version 1.0 + */ +@Setter +@Getter +public class MessageGroupNodeStatisticRequest implements Serializable { + + private static final long serialVersionUID = 9160942889637654608L; + + /** + * 当前登录账户的自然id(前端不care) + */ + @NotNull(message = "personId is required") + private Long personId; + /** + * 消息的分类结点编码 + */ + @NotNull(message = "groupNodeCode is required") + private String groupNodeCode; + /** + * 当前登录账户的身份id(前端不care) + */ + private Long identityId; + /** + * 当前登录账户的身份类型(前端不care) + */ + private IdentityTypeEnum identityType; + /** + * 业务方是否只关注特定身份的消息 + * true: 是 + * false: 否 + */ + private Boolean withIdentify; + /** + * 代办角色 + * PROMOTER: 发起者 + * CREATOR: 创建者 + * EXECUTOR: 执行者 + */ + private PendingMessageRoleCategoryEnum roleCategory; + /** + * 代办消息状态 + * UNSENT: 未发送 + * HAS_BEEN_SENT: 已发送 + * COMPLETED: 已办 + * RETRACT: 已撤回 + * DELETED: 已删除 + */ + private PendingMessageStateEnum msgState; + /** + * 消息标题 + */ + private String title; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java index 73798eb0..ef31b6a4 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java @@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSON; import lombok.Getter; import lombok.Setter; +import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.Collection; @@ -39,6 +40,7 @@ public class PendingMessagePageRequest extends PageRequest implements Serializab /** * 当前登录账户的自然id(前端不care) */ + @NotNull(message = "personId is required") private Long personId; /** * 当前登录账户的身份id(前端不care) diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/MessageGroupNodeStatisticResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/MessageGroupNodeStatisticResponse.java new file mode 100644 index 00000000..39c649c9 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/MessageGroupNodeStatisticResponse.java @@ -0,0 +1,54 @@ +package cn.axzo.msg.center.service.pending.response; + +import cn.axzo.msg.center.service.enums.MessageGroupNodeCategoryEnum; +import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/23 + * @version 1.0 + */ +@Setter +@Getter +public class MessageGroupNodeStatisticResponse implements Serializable { + + private static final long serialVersionUID = 972200410809186003L; + + /** + * 结点类型 + * GENERAL_MESSAGE_CENTER: 消息中心 + * GENERAL_MESSAGE_MODULE: 消息模块 + * GENERAL_MESSAGE_CATEGORY: 消息分类 + * PENDING_MESSAGE_CENTER: 待办中心 + * PENDING_MESSAGE_MODULE: 待办模块 + * PENDING_MESSAGE_CATEGORY: 待办分类 + */ + private MessageGroupNodeCategoryEnum category; + /** + * 结点名称 + */ + private String groupNodeName; + /** + * 结点编码 + */ + private String groupNodeCode; + /** + * 父节点编码 + */ + private String parentNodeCode; + /** + * 结点对应的代办数量 + */ + private Integer pendingCount; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} From 480df425c7bc64f583ac02745f94b399857b6bf8 Mon Sep 17 00:00:00 2001 From: luofu Date: Sat, 23 Sep 2023 17:27:54 +0800 Subject: [PATCH 04/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 新增代办详情接口定义 影响: 无 --- .../msg/center/service/dto/IdentityDTO.java | 40 +++++++++++++++++++ .../pending/client/PendingMessageClient.java | 6 ++- .../PendingMessageClientFallback.java | 8 +++- .../response/PendingMessageResponse.java | 29 +++++++------- 4 files changed, 67 insertions(+), 16 deletions(-) create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/IdentityDTO.java diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/IdentityDTO.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/IdentityDTO.java new file mode 100644 index 00000000..ef4c162a --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/IdentityDTO.java @@ -0,0 +1,40 @@ +package cn.axzo.msg.center.service.dto; + +import cn.axzo.msg.center.service.enums.IdentityTypeEnum; +import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/23 + * @version 1.0 + */ +@Setter +@Getter +public class IdentityDTO implements Serializable { + + private static final long serialVersionUID = 7176145314439312573L; + + /** + * 自然人姓名 + */ + private String name; + /** + * 身份id + */ + private Long id; + /** + * 身份类型 + */ + private IdentityTypeEnum type; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java index beb39188..2ec5f93f 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java @@ -10,6 +10,7 @@ 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; @@ -26,4 +27,7 @@ public interface PendingMessageClient { @PostMapping(value = "/pending-message/record/page", produces = {MediaType.APPLICATION_JSON_VALUE}) CommonResponse> pageQuery(@RequestBody @Valid PendingMessagePageRequest request); -} + + @PostMapping(value = "/pending-message/record/detail", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse detail(@RequestParam("msgIdentityCode") String msgIdentityCode); +} \ No newline at end of file diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java index 0fddd46e..606f8222 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java @@ -21,7 +21,13 @@ public class PendingMessageClientFallback implements PendingMessageClient { @Override public CommonResponse> pageQuery(PendingMessagePageRequest request) { - log.warn("broke out fall back while page querying pending message."); + log.warn("broke out fall back while page querying pending message. req:{}", request); + return null; + } + + @Override + public CommonResponse detail(String msgIdentityCode) { + log.warn("broke out fall back while querying pending message. {}", msgIdentityCode); return null; } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java index 5786c9b5..22e5db04 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java @@ -1,5 +1,6 @@ package cn.axzo.msg.center.service.pending.response; +import cn.axzo.msg.center.service.dto.IdentityDTO; import com.alibaba.fastjson.JSON; import java.io.Serializable; @@ -16,37 +17,37 @@ public class PendingMessageResponse implements Serializable { private static final long serialVersionUID = -4133864010679470398L; /** - * 消息id + * 消息的唯一标识 */ - private Long msgId; + private String identityCode; /** * 消息标题 */ private String title; /** - * 代办发起者姓名 + * 消息内容 */ - private String promoterName; + private String content; /** - * 代办发起者的自然人id + * 代办发起者信息 */ - private Long promoterPersonId; + private IdentityDTO promoter; /** - * 代办创建者姓名 + * 代办创建者信息 */ - private String creatorName; + private IdentityDTO creator; /** - * 代办创建者自然人id + * 代办执行者信息 */ - private Long creatorPersonId; + private IdentityDTO executor; /** - * 代办执行者姓名 + * 业务编码 */ - private String executorName; + private String bizCode; /** - * 代办执行者自然人id + * 子业务编码 */ - private Long executorPersonId; + private String subBizCode; /** * 业务状态描述 */ From 94fac8e1364b5384932f12b8dfe4fb74ea9e2dfd Mon Sep 17 00:00:00 2001 From: luofu Date: Sat, 23 Sep 2023 17:41:42 +0800 Subject: [PATCH 05/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 新增代办详情接口定义 影响: 无 --- .../center/service/dto/MessageRouterDTO.java | 57 +++++++++++++++++++ .../pending/client/PendingMessageClient.java | 4 +- .../PendingMessageClientFallback.java | 6 +- .../response/PendingMessageResponse.java | 5 ++ .../domain/po/PendingMessageRecordPO.java | 4 ++ 5 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageRouterDTO.java 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 new file mode 100644 index 00000000..ec95e032 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageRouterDTO.java @@ -0,0 +1,57 @@ +package cn.axzo.msg.center.service.dto; + +import cn.axzo.msg.center.service.enums.RouterCategoryEnum; +import cn.axzo.msg.center.service.enums.TerminalTypeEnum; +import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/23 + * @version 1.0 + */ +@Setter +@Getter +public class MessageRouterDTO implements Serializable { + + private static final long serialVersionUID = 1326971022827041566L; + + /** + * 路由描述 + */ + private String desc; + /** + * 路由分类 + * JUMP: 直接跳转 + * ACTION: 接口调用 + */ + 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; + /** + * 参数及其对应的值的JSON串 + */ + private String param; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java index 2ec5f93f..39651160 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java @@ -1,5 +1,6 @@ package cn.axzo.msg.center.service.pending.client; +import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import cn.axzo.msg.center.service.pending.client.fallback.PendingMessageClientFallback; import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; @@ -29,5 +30,6 @@ public interface PendingMessageClient { CommonResponse> pageQuery(@RequestBody @Valid PendingMessagePageRequest request); @PostMapping(value = "/pending-message/record/detail", produces = {MediaType.APPLICATION_JSON_VALUE}) - CommonResponse detail(@RequestParam("msgIdentityCode") String msgIdentityCode); + CommonResponse detail(@RequestParam("msgIdentityCode") String msgIdentityCode, + @RequestParam("terminalType") TerminalTypeEnum terminalType); } \ No newline at end of file diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java index 606f8222..68c7455d 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java @@ -1,5 +1,6 @@ package cn.axzo.msg.center.service.pending.client.fallback; +import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import cn.axzo.msg.center.service.pending.client.PendingMessageClient; import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; @@ -26,8 +27,9 @@ public class PendingMessageClientFallback implements PendingMessageClient { } @Override - public CommonResponse detail(String msgIdentityCode) { - log.warn("broke out fall back while querying pending message. {}", msgIdentityCode); + public CommonResponse detail(String msgIdentityCode, TerminalTypeEnum terminalType) { + log.warn("broke out fall back while querying pending message. msgIdentityCode:[{}], terminalType:[{}]", + msgIdentityCode, terminalType); return null; } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java index 22e5db04..14858722 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java @@ -1,6 +1,7 @@ package cn.axzo.msg.center.service.pending.response; import cn.axzo.msg.center.service.dto.IdentityDTO; +import cn.axzo.msg.center.service.dto.MessageRouterDTO; import com.alibaba.fastjson.JSON; import java.io.Serializable; @@ -60,6 +61,10 @@ public class PendingMessageResponse implements Serializable { * 处理时间戳 */ private Long updateTimestamp; + /** + * 路由信息,可为空 + */ + private MessageRouterDTO router; @Override public String toString() { diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java index 6cf9c311..35acba43 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java @@ -27,6 +27,10 @@ public class PendingMessageRecordPO extends BaseEntity i private static final long serialVersionUID = 2184329278851311992L; + /** + * 消息的唯一标识 + */ + private String identityCode; /** * 发起者ID */ From 31595df54d68605e27120f1b9a9f7d2d1411eb35 Mon Sep 17 00:00:00 2001 From: luofu Date: Tue, 26 Sep 2023 10:18:16 +0800 Subject: [PATCH 06/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 新增代办操作相关的接口定义 影响: 无 --- .../pending/client/PendingMessageClient.java | 43 +++++++ .../PendingMessageClientFallback.java | 23 +++- .../request/PendingMessagePushRequest.java | 110 ++++++++++++++++++ 3 files changed, 174 insertions(+), 2 deletions(-) create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePushRequest.java diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java index 39651160..7e954974 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java @@ -3,6 +3,7 @@ package cn.axzo.msg.center.service.pending.client; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import cn.axzo.msg.center.service.pending.client.fallback.PendingMessageClientFallback; import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; +import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest; import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; import cn.azxo.framework.common.model.CommonResponse; import cn.azxo.framework.common.model.Page; @@ -16,6 +17,8 @@ import org.springframework.web.bind.annotation.RequestParam; import javax.validation.Valid; /** + * 代办消息模块管理 + * * @description * @author cold_blade * @date 2023/9/23 @@ -26,10 +29,50 @@ import javax.validation.Valid; fallback = PendingMessageClientFallback.class) public interface PendingMessageClient { + /** + * 代办列表分页查询 + * + * @param request 分页查询相关参数 + * @return 代办列表 + */ @PostMapping(value = "/pending-message/record/page", produces = {MediaType.APPLICATION_JSON_VALUE}) CommonResponse> pageQuery(@RequestBody @Valid PendingMessagePageRequest request); + /** + * 查询代办详情 + * + * @param msgIdentityCode 消息的唯一标识 + * @param terminalType APP终端类型 + * @return 代办详情 + */ @PostMapping(value = "/pending-message/record/detail", produces = {MediaType.APPLICATION_JSON_VALUE}) CommonResponse detail(@RequestParam("msgIdentityCode") String msgIdentityCode, @RequestParam("terminalType") TerminalTypeEnum terminalType); + + /** + * 发送代办 + * + * @param request 代办核心参数 + * @return 代办唯一标识 + */ + @PostMapping(value = "/pending-message/push", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse push(@RequestBody @Valid PendingMessagePushRequest request); + + /** + * 完成代办 + * + * @param msgIdentityCode 代办唯一标识 + * @return 成功返回 {@code true} 失败返回 {@code false} + */ + @PostMapping(value = "/pending-message/complete", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse complete(String msgIdentityCode); + + /** + * 撤销代办 + * + * @param msgIdentityCode 代办唯一标识 + * @return 成功返回 {@code true} 失败返回 {@code false} + */ + @PostMapping(value = "/pending-message/revoke", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse revoke(String msgIdentityCode); } \ No newline at end of file diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java index 68c7455d..c675c5f9 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java @@ -3,6 +3,7 @@ package cn.axzo.msg.center.service.pending.client.fallback; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import cn.axzo.msg.center.service.pending.client.PendingMessageClient; import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; +import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest; import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; import cn.azxo.framework.common.model.CommonResponse; import cn.azxo.framework.common.model.Page; @@ -22,14 +23,32 @@ public class PendingMessageClientFallback implements PendingMessageClient { @Override public CommonResponse> pageQuery(PendingMessagePageRequest request) { - log.warn("broke out fall back while page querying pending message. req:{}", request); + log.error("broke out fall back while page querying pending message. req:{}", request); return null; } @Override public CommonResponse detail(String msgIdentityCode, TerminalTypeEnum terminalType) { - log.warn("broke out fall back while querying pending message. msgIdentityCode:[{}], terminalType:[{}]", + log.error("broke out fall back while querying pending message. msgIdentityCode:[{}], terminalType:[{}]", msgIdentityCode, terminalType); return null; } + + @Override + public CommonResponse push(PendingMessagePushRequest request) { + log.error("broke out fall back while push pending message. request:{}", request); + return null; + } + + @Override + public CommonResponse complete(String msgIdentityCode) { + log.error("broke out fall back while completing pending message. msgIdentityCode:[{}]", msgIdentityCode); + return null; + } + + @Override + public CommonResponse revoke(String msgIdentityCode) { + log.error("broke out fall back while revoking pending message. msgIdentityCode:[{}]", msgIdentityCode); + return null; + } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePushRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePushRequest.java new file mode 100644 index 00000000..9537024c --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePushRequest.java @@ -0,0 +1,110 @@ +package cn.axzo.msg.center.service.pending.request; + +import cn.axzo.msg.center.service.enums.BizCategoryEnum; +import cn.axzo.msg.center.service.enums.IdentityTypeEnum; +import cn.axzo.msg.center.service.enums.OrganizationTypeEnum; + +import javax.validation.constraints.NotNull; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/26 + * @version 1.0 + */ +public class PendingMessagePushRequest { + + /** + * 发起者ID + */ + private Long promoterId; + /** + * 发起者姓名 + */ + private String promoterName; + /** + * 发起者的自然人ID + */ + private Long promoterPersonId; + /** + * 发起者身份 + */ + private IdentityTypeEnum promoterType; + /** + * 创建者ID + */ + @NotNull(message = "creatorId is required") + private Long creatorId; + /** + * 创建者姓名 + */ + private String creatorName; + /** + * 创建者的自然人ID + */ + @NotNull(message = "creatorPersonId is required") + private Long creatorPersonId; + /** + * 创建者身份 + */ + @NotNull(message = "creatorType is required") + private IdentityTypeEnum creatorType; + /** + * 执行者ID + */ + @NotNull(message = "executorId is required") + private Long executorId; + /** + * 执行者姓名 + */ + private String executorName; + /** + * 执行者的自然人ID + */ + @NotNull(message = "executorId is required") + private Long executorPersonId; + /** + * 执行者身份 + */ + @NotNull(message = "executorId is required") + private IdentityTypeEnum executorType; + /** + * 模板编码 + */ + @NotNull(message = "executorId is required") + private String templateCode; + /** + * 消息所属组织类型 + */ + private OrganizationTypeEnum orgType; + /** + * 消息所属组织Id + */ + private Long orgId; + /** + * 消息所属组织名称 + */ + private String orgName; + /** + * 业务类型 + */ + @NotNull(message = "executorId is required") + private BizCategoryEnum bizCategory; + /** + * 关联业务主键 + */ + private String bizCode; + /** + * 流程类代办的流程结点编码 + */ + private String subBizCode; + /** + * 业务描述eg:流程结点描述 + */ + private String bizDesc; + /** + * 路由参数(json string) + */ + private String routerParams; +} From bc8f3122fad1edca945d043df68070b7a9965b15 Mon Sep 17 00:00:00 2001 From: luofu Date: Tue, 26 Sep 2023 11:19:42 +0800 Subject: [PATCH 07/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 新增代办操作相关的接口定义 影响: 无 --- .../msg/center/service/dto/IdentityDTO.java | 4 - .../msg/center/service/dto/PersonDTO.java | 35 +++++++++ .../request/PendingMessagePushRequest.java | 77 ++++++------------- 3 files changed, 58 insertions(+), 58 deletions(-) create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/PersonDTO.java diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/IdentityDTO.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/IdentityDTO.java index ef4c162a..b4f8d634 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/IdentityDTO.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/IdentityDTO.java @@ -20,10 +20,6 @@ public class IdentityDTO implements Serializable { private static final long serialVersionUID = 7176145314439312573L; - /** - * 自然人姓名 - */ - private String name; /** * 身份id */ diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/PersonDTO.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/PersonDTO.java new file mode 100644 index 00000000..0282cfe1 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/PersonDTO.java @@ -0,0 +1,35 @@ +package cn.axzo.msg.center.service.dto; + +import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/26 + * @version 1.0 + */ +@Setter +@Getter +public class PersonDTO implements Serializable { + + private static final long serialVersionUID = 1231840051925115741L; + + /** + * 自然人id + */ + private Long id; + /** + * 身份信息 + */ + private IdentityDTO identity; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePushRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePushRequest.java index 9537024c..6e797ee0 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePushRequest.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePushRequest.java @@ -1,10 +1,14 @@ package cn.axzo.msg.center.service.pending.request; +import cn.axzo.msg.center.service.dto.PersonDTO; import cn.axzo.msg.center.service.enums.BizCategoryEnum; -import cn.axzo.msg.center.service.enums.IdentityTypeEnum; import cn.axzo.msg.center.service.enums.OrganizationTypeEnum; +import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; import javax.validation.constraints.NotNull; +import java.io.Serializable; /** * @description @@ -13,66 +17,26 @@ import javax.validation.constraints.NotNull; * @date 2023/9/26 * @version 1.0 */ -public class PendingMessagePushRequest { +@Setter +@Getter +public class PendingMessagePushRequest implements Serializable { + + private static final long serialVersionUID = -4523292375275477706L; /** - * 发起者ID + * 发起者 */ - private Long promoterId; + @NotNull(message = "promoter is required") + private PersonDTO promoter; /** - * 发起者姓名 + * 执行者 */ - private String promoterName; - /** - * 发起者的自然人ID - */ - private Long promoterPersonId; - /** - * 发起者身份 - */ - private IdentityTypeEnum promoterType; - /** - * 创建者ID - */ - @NotNull(message = "creatorId is required") - private Long creatorId; - /** - * 创建者姓名 - */ - private String creatorName; - /** - * 创建者的自然人ID - */ - @NotNull(message = "creatorPersonId is required") - private Long creatorPersonId; - /** - * 创建者身份 - */ - @NotNull(message = "creatorType is required") - private IdentityTypeEnum creatorType; - /** - * 执行者ID - */ - @NotNull(message = "executorId is required") - private Long executorId; - /** - * 执行者姓名 - */ - private String executorName; - /** - * 执行者的自然人ID - */ - @NotNull(message = "executorId is required") - private Long executorPersonId; - /** - * 执行者身份 - */ - @NotNull(message = "executorId is required") - private IdentityTypeEnum executorType; + @NotNull(message = "executor is required") + private PersonDTO executor; /** * 模板编码 */ - @NotNull(message = "executorId is required") + @NotNull(message = "templateCode is required") private String templateCode; /** * 消息所属组织类型 @@ -89,7 +53,7 @@ public class PendingMessagePushRequest { /** * 业务类型 */ - @NotNull(message = "executorId is required") + @NotNull(message = "bizCategory is required") private BizCategoryEnum bizCategory; /** * 关联业务主键 @@ -107,4 +71,9 @@ public class PendingMessagePushRequest { * 路由参数(json string) */ private String routerParams; + + @Override + public String toString() { + return JSON.toJSONString(this); + } } From 5f46b06855584139ddd169dda17e022fb249e169 Mon Sep 17 00:00:00 2001 From: luofu Date: Tue, 26 Sep 2023 14:03:33 +0800 Subject: [PATCH 08/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 新增代办操作相关的接口定义 影响: 无 --- .../service/enums/IdentityTypeEnum.java | 16 ++++++++++ .../service/pending/client/MessageClient.java | 30 ------------------- .../pending/client/PendingMessageClient.java | 7 +++++ .../fallback/MessageClientFallback.java | 29 ------------------ .../PendingMessageClientFallback.java | 10 +++++++ ...nse.java => MessageGroupNodeResponse.java} | 12 ++++++-- .../domain/po/PendingMessageRecordPO.java | 24 --------------- 7 files changed, 42 insertions(+), 86 deletions(-) delete mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/MessageClient.java delete mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/MessageClientFallback.java rename msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/{MessageGroupNodeStatisticResponse.java => MessageGroupNodeResponse.java} (76%) diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/IdentityTypeEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/IdentityTypeEnum.java index 625f3a22..d11466e4 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/IdentityTypeEnum.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/IdentityTypeEnum.java @@ -4,6 +4,10 @@ import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; +import java.util.Arrays; +import java.util.Objects; +import java.util.Optional; + /** * @description * @@ -26,4 +30,16 @@ public enum IdentityTypeEnum { private final Integer code; private final String message; private final String desc; + + /** + * 通过code获取对应的枚举实例 + * + * @param code 身份枚举的编码 + * @return 身份枚举实例 {@code OR} 空 + */ + public static Optional codeOf(Integer code) { + return Arrays.stream(values()) + .filter(e -> Objects.equals(e.code, code)) + .findFirst(); + } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/MessageClient.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/MessageClient.java deleted file mode 100644 index b457c6fe..00000000 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/MessageClient.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.axzo.msg.center.service.pending.client; - -import cn.axzo.msg.center.service.pending.client.fallback.MessageClientFallback; -import cn.axzo.msg.center.service.pending.request.MessageGroupNodeStatisticRequest; -import cn.axzo.msg.center.service.pending.response.MessageGroupNodeStatisticResponse; -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 javax.validation.Valid; -import java.util.List; - -/** - * @description - * @author cold_blade - * @date 2023/9/23 - * @version 1.0 - */ -@Component -@FeignClient(value = "msg-center", url = "${server.serviceUrl:http://msg-center:8080}", - fallback = MessageClientFallback.class) -public interface MessageClient { - - @PostMapping(value = "/message/record/group/statistic", produces = {MediaType.APPLICATION_JSON_VALUE}) - CommonResponse> groupStatistic(@RequestBody @Valid - MessageGroupNodeStatisticRequest request); -} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java index 7e954974..57200103 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java @@ -2,8 +2,10 @@ package cn.axzo.msg.center.service.pending.client; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import cn.axzo.msg.center.service.pending.client.fallback.PendingMessageClientFallback; +import cn.axzo.msg.center.service.pending.request.MessageGroupNodeStatisticRequest; import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest; +import cn.axzo.msg.center.service.pending.response.MessageGroupNodeResponse; import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; import cn.azxo.framework.common.model.CommonResponse; import cn.azxo.framework.common.model.Page; @@ -15,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import javax.validation.Valid; +import java.util.List; /** * 代办消息模块管理 @@ -29,6 +32,10 @@ import javax.validation.Valid; fallback = PendingMessageClientFallback.class) public interface PendingMessageClient { + @PostMapping(value = "/pending-message/record/group/statistic", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse> groupStatistic(@RequestBody @Valid + MessageGroupNodeStatisticRequest request); + /** * 代办列表分页查询 * diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/MessageClientFallback.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/MessageClientFallback.java deleted file mode 100644 index efbb1c56..00000000 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/MessageClientFallback.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.axzo.msg.center.service.pending.client.fallback; - -import cn.axzo.msg.center.service.pending.client.MessageClient; -import cn.axzo.msg.center.service.pending.request.MessageGroupNodeStatisticRequest; -import cn.axzo.msg.center.service.pending.response.MessageGroupNodeStatisticResponse; -import cn.azxo.framework.common.model.CommonResponse; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.List; - -/** - * @description - * client降级处理类 - * @author cold_blade - * @date 2023/9/23 - * @version 1.0 - */ -@Slf4j -@Component -public class MessageClientFallback implements MessageClient { - - @Override - public CommonResponse> groupStatistic( - MessageGroupNodeStatisticRequest request) { - log.warn("broke out fall back while doing statistic message record by group."); - return null; - } -} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java index c675c5f9..882459e7 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java @@ -2,14 +2,18 @@ package cn.axzo.msg.center.service.pending.client.fallback; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import cn.axzo.msg.center.service.pending.client.PendingMessageClient; +import cn.axzo.msg.center.service.pending.request.MessageGroupNodeStatisticRequest; import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest; +import cn.axzo.msg.center.service.pending.response.MessageGroupNodeResponse; import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; 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; + /** * @description * client降级处理类 @@ -21,6 +25,12 @@ import org.springframework.stereotype.Component; @Component public class PendingMessageClientFallback implements PendingMessageClient { + @Override + public CommonResponse> groupStatistic(MessageGroupNodeStatisticRequest request) { + log.error("broke out fall back while statistic pending message. req:{}", request); + return null; + } + @Override public CommonResponse> pageQuery(PendingMessagePageRequest request) { log.error("broke out fall back while page querying pending message. req:{}", request); diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/MessageGroupNodeStatisticResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/MessageGroupNodeResponse.java similarity index 76% rename from msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/MessageGroupNodeStatisticResponse.java rename to msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/MessageGroupNodeResponse.java index 39c649c9..d4e4f7ce 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/MessageGroupNodeStatisticResponse.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/MessageGroupNodeResponse.java @@ -1,11 +1,13 @@ package cn.axzo.msg.center.service.pending.response; +import cn.axzo.basics.common.model.IBaseTree; import cn.axzo.msg.center.service.enums.MessageGroupNodeCategoryEnum; import com.alibaba.fastjson.JSON; import lombok.Getter; import lombok.Setter; import java.io.Serializable; +import java.util.List; /** * @description @@ -16,7 +18,7 @@ import java.io.Serializable; */ @Setter @Getter -public class MessageGroupNodeStatisticResponse implements Serializable { +public class MessageGroupNodeResponse implements IBaseTree, Serializable { private static final long serialVersionUID = 972200410809186003L; @@ -33,15 +35,19 @@ public class MessageGroupNodeStatisticResponse implements Serializable { /** * 结点名称 */ - private String groupNodeName; + private String nodeName; /** * 结点编码 */ - private String groupNodeCode; + private String nodeCode; /** * 父节点编码 */ private String parentNodeCode; + /** + * 字节的列表 + */ + private List nodeChildren; /** * 结点对应的代办数量 */ diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java index 35acba43..19f19028 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java @@ -35,10 +35,6 @@ public class PendingMessageRecordPO extends BaseEntity i * 发起者ID */ private Long promoterId; - /** - * 发起者姓名 - */ - private String promoterName; /** * 发起者的自然人ID */ @@ -47,30 +43,10 @@ public class PendingMessageRecordPO extends BaseEntity i * 发起者身份 */ private IdentityTypeEnum promoterType; - /** - * 创建者ID - */ - private Long creatorId; - /** - * 创建者姓名 - */ - private String creatorName; - /** - * 创建者的自然人ID - */ - private Long creatorPersonId; - /** - * 创建者身份 - */ - private IdentityTypeEnum creatorType; /** * 执行者ID */ private Long executorId; - /** - * 执行者姓名 - */ - private String executorName; /** * 执行者的自然人ID */ From 044b3d548d5ff294c9ba66c42c3d759c70901756 Mon Sep 17 00:00:00 2001 From: luofu Date: Tue, 26 Sep 2023 14:20:23 +0800 Subject: [PATCH 09/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 新增代办操作相关的接口定义 影响: 无 --- .../service/pending/response/PendingMessageResponse.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java index 14858722..a5d0441e 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java @@ -33,10 +33,6 @@ public class PendingMessageResponse implements Serializable { * 代办发起者信息 */ private IdentityDTO promoter; - /** - * 代办创建者信息 - */ - private IdentityDTO creator; /** * 代办执行者信息 */ From cde78759df4fa3e8c45fe725729b89bd46bac29a Mon Sep 17 00:00:00 2001 From: luofu Date: Tue, 26 Sep 2023 15:16:20 +0800 Subject: [PATCH 10/34] =?UTF-8?q?feat(REQ-1309):=20=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E7=AE=A1=E7=90=86=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-1309?goToView=1 修改: 新增消息分类相关操作的接口定义 影响: 无 --- .../group/client/MessageGroupClient.java | 56 +++++++++++++++++++ .../fallback/MessageGroupClientFallback.java | 37 ++++++++++++ .../request/MessageGroupNodeAddRequest.java | 52 +++++++++++++++++ .../PendingMessageClientFallback.java | 24 ++++---- .../response/PendingMessageResponse.java | 4 ++ .../perf/domain/po/MessageGroupNodePO.java | 4 ++ 6 files changed, 165 insertions(+), 12 deletions(-) create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/MessageGroupClient.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/fallback/MessageGroupClientFallback.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageGroupNodeAddRequest.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 new file mode 100644 index 00000000..b2645990 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/MessageGroupClient.java @@ -0,0 +1,56 @@ +package cn.axzo.msg.center.service.group.client; + +import cn.axzo.msg.center.service.enums.StatusEnum; +import cn.axzo.msg.center.service.group.client.fallback.MessageGroupClientFallback; +import cn.axzo.msg.center.service.group.request.MessageGroupNodeAddRequest; +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; + +/** + * 消息分类管理 + * + * @description + * @author cold_blade + * @date 2023/9/26 + * @version 1.0 + */ +@Component +@FeignClient(value = "msg-center", url = "${server.serviceUrl:http://msg-center:8080}", + fallback = MessageGroupClientFallback.class) +public interface MessageGroupClient { + + /** + * 添加消息分类结点 + * + * @param request 结点相关参数 + */ + @PostMapping(value = "/message/group/node/add", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse addNode(@RequestBody @Valid MessageGroupNodeAddRequest request); + + /** + * 变更结点的状态 + * ENABLE: 启用 + * DISABLE: 禁用 + * + * @param nodeCode 结点编码 + * @param status 结点的目标状态 + */ + @PostMapping(value = "/message/group/node/status/update", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse updateStatus(@RequestParam("nodeCode") String nodeCode, + @RequestParam("status") StatusEnum status); + + /** + * 删除结点 + * + * @param nodeCode 结点编码 + */ + @PostMapping(value = "/message/group/node/delete", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse deleteNode(@RequestParam("nodeCode") String nodeCode); +} 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 new file mode 100644 index 00000000..cc622a75 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/fallback/MessageGroupClientFallback.java @@ -0,0 +1,37 @@ +package cn.axzo.msg.center.service.group.client.fallback; + +import cn.axzo.msg.center.service.enums.StatusEnum; +import cn.axzo.msg.center.service.group.client.MessageGroupClient; +import cn.axzo.msg.center.service.group.request.MessageGroupNodeAddRequest; +import cn.azxo.framework.common.model.CommonResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/26 + * @version 1.0 + */ +@Slf4j +@Component +public class MessageGroupClientFallback implements MessageGroupClient { + @Override + public CommonResponse addNode(MessageGroupNodeAddRequest request) { + log.error("fall back while adding message group node. request:{}", request); + return CommonResponse.error("fall back while adding message group node"); + } + + @Override + public CommonResponse updateStatus(String nodeCode, StatusEnum status) { + log.error("fall back while updating message group node status. nodeCode:[{}], status:[{}]", nodeCode, status); + return CommonResponse.error("fall back while updating message group node status"); + } + + @Override + public CommonResponse deleteNode(String nodeCode) { + log.error("fall back while deleting message group node. nodeCode:[{}]", nodeCode); + return CommonResponse.error("fall back while deleting message group node"); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageGroupNodeAddRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageGroupNodeAddRequest.java new file mode 100644 index 00000000..a1c61ecd --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageGroupNodeAddRequest.java @@ -0,0 +1,52 @@ +package cn.axzo.msg.center.service.group.request; + +import cn.axzo.msg.center.service.enums.MessageGroupNodeCategoryEnum; +import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotEmpty; +import java.io.Serializable; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/26 + * @version 1.0 + */ +@Setter +@Getter +public class MessageGroupNodeAddRequest implements Serializable { + + private static final long serialVersionUID = -6296122036443137951L; + + /** + * 父节点编码 + */ + private String parentNodeCode; + /** + * 待添加结点名称 + */ + @NotEmpty(message = "nodeName is required") + private String nodeName; + /** + * 待添加结点编码 + */ + @NotEmpty(message = "nodeCode is required") + private String nodeCode; + /** + * 待添加结点类型 + */ + @NotEmpty(message = "category is required") + private MessageGroupNodeCategoryEnum category; + /** + * 待添加结点图标 + */ + private String icon; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java index 882459e7..07916a64 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java @@ -27,38 +27,38 @@ public class PendingMessageClientFallback implements PendingMessageClient { @Override public CommonResponse> groupStatistic(MessageGroupNodeStatisticRequest request) { - log.error("broke out fall back while statistic pending message. req:{}", request); - return null; + log.error("fall back while statistic pending message. req:{}", request); + return CommonResponse.error("fall back while statistic pending message"); } @Override public CommonResponse> pageQuery(PendingMessagePageRequest request) { - log.error("broke out fall back while page querying pending message. req:{}", request); - return null; + log.error("fall back while page querying pending message. req:{}", request); + return CommonResponse.error("fall back while page querying pending message"); } @Override public CommonResponse detail(String msgIdentityCode, TerminalTypeEnum terminalType) { - log.error("broke out fall back while querying pending message. msgIdentityCode:[{}], terminalType:[{}]", + log.error("fall back while querying pending message. msgIdentityCode:[{}], terminalType:[{}]", msgIdentityCode, terminalType); - return null; + return CommonResponse.error("fall back while querying pending message"); } @Override public CommonResponse push(PendingMessagePushRequest request) { - log.error("broke out fall back while push pending message. request:{}", request); - return null; + log.error("fall back while push pending message. request:{}", request); + return CommonResponse.error("fall back while push pending message"); } @Override public CommonResponse complete(String msgIdentityCode) { - log.error("broke out fall back while completing pending message. msgIdentityCode:[{}]", msgIdentityCode); - return null; + log.error("fall back while completing pending message. msgIdentityCode:[{}]", msgIdentityCode); + return CommonResponse.error("fall back while completing pending message"); } @Override public CommonResponse revoke(String msgIdentityCode) { - log.error("broke out fall back while revoking pending message. msgIdentityCode:[{}]", msgIdentityCode); - return null; + log.error("fall back while revoking pending message. msgIdentityCode:[{}]", msgIdentityCode); + return CommonResponse.error("fall back while revoking pending message"); } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java index a5d0441e..9817cdb0 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java @@ -3,6 +3,8 @@ package cn.axzo.msg.center.service.pending.response; import cn.axzo.msg.center.service.dto.IdentityDTO; import cn.axzo.msg.center.service.dto.MessageRouterDTO; import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; import java.io.Serializable; @@ -13,6 +15,8 @@ import java.io.Serializable; * @date 2023/9/23 * @version 1.0 */ +@Setter +@Getter public class PendingMessageResponse implements Serializable { private static final long serialVersionUID = -4133864010679470398L; diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageGroupNodePO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageGroupNodePO.java index 1e7e0bef..a990aa9a 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageGroupNodePO.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageGroupNodePO.java @@ -30,6 +30,10 @@ public class MessageGroupNodePO extends BaseEntity implement * 模板分组结点名称code */ private String code; + /** + * 分组结点图标 + */ + private String icon; /** * 结点类型 */ From 15ca092e5da1de1ec5fae155586c68e8240f60f4 Mon Sep 17 00:00:00 2001 From: luofu Date: Tue, 26 Sep 2023 15:37:44 +0800 Subject: [PATCH 11/34] =?UTF-8?q?feat(REQ-1309):=20=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E7=AE=A1=E7=90=86=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-1309?goToView=1 修改: 新增消息分类相关操作的接口定义 影响: 无 --- .../group/client/MessageGroupClient.java | 17 +++--- .../fallback/MessageGroupClientFallback.java | 12 ++--- .../request/MessageGroupNodeAddRequest.java | 8 ++- .../MessageGroupNodeUpdateRequest.java | 53 +++++++++++++++++++ 4 files changed, 73 insertions(+), 17 deletions(-) create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageGroupNodeUpdateRequest.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 b2645990..611167eb 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,8 @@ package cn.axzo.msg.center.service.group.client; -import cn.axzo.msg.center.service.enums.StatusEnum; 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.azxo.framework.common.model.CommonResponse; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; @@ -35,16 +35,12 @@ public interface MessageGroupClient { CommonResponse addNode(@RequestBody @Valid MessageGroupNodeAddRequest request); /** - * 变更结点的状态 - * ENABLE: 启用 - * DISABLE: 禁用 + * 更新结点数据 * - * @param nodeCode 结点编码 - * @param status 结点的目标状态 + * @param request 待更新的结点相关数据项 */ - @PostMapping(value = "/message/group/node/status/update", produces = {MediaType.APPLICATION_JSON_VALUE}) - CommonResponse updateStatus(@RequestParam("nodeCode") String nodeCode, - @RequestParam("status") StatusEnum status); + @PostMapping(value = "/message/group/node/update", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse updateStatus(@RequestBody MessageGroupNodeUpdateRequest request); /** * 删除结点 @@ -52,5 +48,6 @@ public interface MessageGroupClient { * @param nodeCode 结点编码 */ @PostMapping(value = "/message/group/node/delete", produces = {MediaType.APPLICATION_JSON_VALUE}) - CommonResponse deleteNode(@RequestParam("nodeCode") String nodeCode); + CommonResponse deleteNode(@RequestParam("nodeCode") String nodeCode, + @RequestParam("operatorId") Long operatorId); } 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 cc622a75..9c350661 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,8 +1,8 @@ package cn.axzo.msg.center.service.group.client.fallback; -import cn.axzo.msg.center.service.enums.StatusEnum; 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.azxo.framework.common.model.CommonResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -24,14 +24,14 @@ public class MessageGroupClientFallback implements MessageGroupClient { } @Override - public CommonResponse updateStatus(String nodeCode, StatusEnum status) { - log.error("fall back while updating message group node status. nodeCode:[{}], status:[{}]", nodeCode, status); - return CommonResponse.error("fall back while updating message group node status"); + public CommonResponse updateStatus(MessageGroupNodeUpdateRequest request) { + log.error("fall back while updating message group node. request:{}", request); + return CommonResponse.error("fall back while updating message group node"); } @Override - public CommonResponse deleteNode(String nodeCode) { - log.error("fall back while deleting message group node. nodeCode:[{}]", nodeCode); + public CommonResponse deleteNode(String nodeCode, Long operatorId) { + log.error("fall back while deleting message group node. nodeCode:[{}], operatorId:[{}]", nodeCode, operatorId); return CommonResponse.error("fall back while deleting message group node"); } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageGroupNodeAddRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageGroupNodeAddRequest.java index a1c61ecd..852c215b 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageGroupNodeAddRequest.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageGroupNodeAddRequest.java @@ -6,6 +6,7 @@ import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; import java.io.Serializable; /** @@ -21,6 +22,11 @@ public class MessageGroupNodeAddRequest implements Serializable { private static final long serialVersionUID = -6296122036443137951L; + /** + * 操作者的自然人id + */ + @NotNull(message = "operatorId is required") + private Long operatorId; /** * 父节点编码 */ @@ -38,7 +44,7 @@ public class MessageGroupNodeAddRequest implements Serializable { /** * 待添加结点类型 */ - @NotEmpty(message = "category is required") + @NotNull(message = "category is required") private MessageGroupNodeCategoryEnum category; /** * 待添加结点图标 diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageGroupNodeUpdateRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageGroupNodeUpdateRequest.java new file mode 100644 index 00000000..de903960 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageGroupNodeUpdateRequest.java @@ -0,0 +1,53 @@ +package cn.axzo.msg.center.service.group.request; + +import cn.axzo.msg.center.service.enums.MessageGroupNodeCategoryEnum; +import cn.axzo.msg.center.service.enums.StatusEnum; +import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/26 + * @version 1.0 + */ +@Setter +@Getter +public class MessageGroupNodeUpdateRequest implements Serializable { + + private static final long serialVersionUID = -7719513661519986970L; + + /** + * 操作者的自然人id + */ + @NotNull(message = "operatorId is required") + private Long operatorId; + /** + * 待添加结点编码 + */ + @NotEmpty(message = "nodeCode is required") + private String nodeCode; + /** + * 待添加结点名称 + */ + private String nodeName; + /** + * 结点状态 + */ + private StatusEnum status; + /** + * 待添加结点图标 + */ + private String icon; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} From a4c46cb075973d1e62961ea193a647259756b43f Mon Sep 17 00:00:00 2001 From: luofu Date: Tue, 26 Sep 2023 16:26:00 +0800 Subject: [PATCH 12/34] =?UTF-8?q?feat(REQ-1309):=20=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E7=AE=A1=E7=90=86=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-1309?goToView=1 修改: 新增消息模板相关操作的接口定义 影响: 无 --- .../MessageGroupNodeStatisticRequest.java | 3 +- .../request/PendingMessagePushRequest.java | 3 +- .../client/MessageTemplateClient.java | 43 +++++++++++ .../MessageTemplateClientFallback.java | 31 ++++++++ .../request/MessageTemplateCreateRequest.java | 77 +++++++++++++++++++ .../request/MessageTemplateMoveToRequest.java | 40 ++++++++++ 6 files changed, 195 insertions(+), 2 deletions(-) create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/MessageTemplateClient.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/fallback/MessageTemplateClientFallback.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateCreateRequest.java create 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/pending/request/MessageGroupNodeStatisticRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/MessageGroupNodeStatisticRequest.java index effa1fe4..1675adce 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/MessageGroupNodeStatisticRequest.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/MessageGroupNodeStatisticRequest.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSON; import lombok.Getter; import lombok.Setter; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.io.Serializable; @@ -31,7 +32,7 @@ public class MessageGroupNodeStatisticRequest implements Serializable { /** * 消息的分类结点编码 */ - @NotNull(message = "groupNodeCode is required") + @NotBlank(message = "groupNodeCode is required") private String groupNodeCode; /** * 当前登录账户的身份id(前端不care) diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePushRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePushRequest.java index 6e797ee0..ab8182c3 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePushRequest.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePushRequest.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSON; import lombok.Getter; import lombok.Setter; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.io.Serializable; @@ -36,7 +37,7 @@ public class PendingMessagePushRequest implements Serializable { /** * 模板编码 */ - @NotNull(message = "templateCode is required") + @NotBlank(message = "templateCode is required") private String templateCode; /** * 消息所属组织类型 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 new file mode 100644 index 00000000..325c6d2f --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/MessageTemplateClient.java @@ -0,0 +1,43 @@ +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.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 javax.validation.Valid; + +/** + * 消息模板管理 + * + * @description + * @author cold_blade + * @date 2023/9/26 + * @version 1.0 + */ +@Component +@FeignClient(value = "msg-center", url = "${server.serviceUrl:http://msg-center:8080}", + fallback = MessageTemplateClientFallback.class) +public interface MessageTemplateClient { + + /** + * 添加消息模板 + * + * @param request 模板数据模型 + */ + @PostMapping(value = "/message/template/add", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse addTemplate(@RequestBody @Valid MessageTemplateCreateRequest request); + + /** + * 批量消息模板分类迁移 + * + * @param request 待迁移的关联关系id以及目标分类 + */ + @PostMapping(value = "/message/template/group/batch-move", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse batchMove(@RequestBody @Valid MessageTemplateMoveToRequest 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 new file mode 100644 index 00000000..1b79f7d7 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/client/fallback/MessageTemplateClientFallback.java @@ -0,0 +1,31 @@ +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.azxo.framework.common.model.CommonResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/26 + * @version 1.0 + */ +@Slf4j +@Component +public class MessageTemplateClientFallback implements MessageTemplateClient { + @Override + public CommonResponse addTemplate(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"); + } +} 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 new file mode 100644 index 00000000..f4cec735 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateCreateRequest.java @@ -0,0 +1,77 @@ +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 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/9/26 + * @version 1.0 + */ +@Setter +@Getter +public class MessageTemplateCreateRequest 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; + /** + * 消息类型 + * GENERAL_MESSAGE: 普通消息 + * PENDING_MESSAGE: 待办消息 + */ + @NotNull(message = "category is required") + private MessageCategoryEnum category; + /** + * 消息分类结点的结点编码列表 + */ + @NotEmpty(message = "msgGroupNodeCodes is required") + private List msgGroupNodeCodes; + /** + * 消息标题 + */ + @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/request/MessageTemplateMoveToRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateMoveToRequest.java new file mode 100644 index 00000000..c7bee961 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/request/MessageTemplateMoveToRequest.java @@ -0,0 +1,40 @@ +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); + } +} From b1396b42779c203008e10c5adecc5eda84f4d6ee Mon Sep 17 00:00:00 2001 From: luofu Date: Wed, 27 Sep 2023 15:33:13 +0800 Subject: [PATCH 13/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 代码结构调整 影响: 无 --- .../msg/center/service/dto/IdentityDTO.java | 6 ++ .../msg/center/service/dto/PersonDTO.java | 6 ++ .../MessageGroupNodeStatisticRequest.java | 13 +-- .../response/MessageGroupNodeResponse.java | 2 +- .../axzo/msg/center/im/service/IMService.java | 11 +++ .../domain/dto/MessageGroupNodeDTO.java | 61 +++++++++++++ .../message/domain/dto/PendingMessageDTO.java | 74 ++++++++++++++++ .../param/MessageGroupNodeStatisticParam.java | 86 +++++++++++++++++++ .../domain/po/GeneralMessageRecordPO.java | 2 +- .../domain/po/MessageBaseTemplatePO.java | 2 +- .../domain/po/MessageGroupNodePO.java | 2 +- .../domain/po/MessageTemplateGroupPO.java | 2 +- .../domain/po/MessageTemplateRouterPO.java | 2 +- .../domain/po/PendingMessageRecordPO.java | 2 +- .../mapper/GeneralMessageRecordMapper.java | 4 +- .../mapper/MessageBaseTemplateMapper.java | 4 +- .../mapper/MessageGroupNodeMapper.java | 4 +- .../mapper/MessageTemplateGroupMapper.java | 4 +- .../mapper/MessageTemplateRouterMapper.java | 4 +- .../mapper/PendingMessageRecordMapper.java | 4 +- .../service/MessageGroupService.java | 2 +- .../service/PendingMessageService.java | 64 ++++++++++++++ .../perf/service/PendingMessageService.java | 12 --- 23 files changed, 335 insertions(+), 38 deletions(-) create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/im/service/IMService.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageGroupNodeDTO.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/param/MessageGroupNodeStatisticParam.java rename msg-center-new/src/main/java/cn/axzo/msg/center/{perf => message}/domain/po/GeneralMessageRecordPO.java (97%) rename msg-center-new/src/main/java/cn/axzo/msg/center/{perf => message}/domain/po/MessageBaseTemplatePO.java (96%) rename msg-center-new/src/main/java/cn/axzo/msg/center/{perf => message}/domain/po/MessageGroupNodePO.java (96%) rename msg-center-new/src/main/java/cn/axzo/msg/center/{perf => message}/domain/po/MessageTemplateGroupPO.java (94%) rename msg-center-new/src/main/java/cn/axzo/msg/center/{perf => message}/domain/po/MessageTemplateRouterPO.java (96%) rename msg-center-new/src/main/java/cn/axzo/msg/center/{perf => message}/domain/po/PendingMessageRecordPO.java (98%) rename msg-center-new/src/main/java/cn/axzo/msg/center/{perf => message}/mapper/GeneralMessageRecordMapper.java (70%) rename msg-center-new/src/main/java/cn/axzo/msg/center/{perf => message}/mapper/MessageBaseTemplateMapper.java (70%) rename msg-center-new/src/main/java/cn/axzo/msg/center/{perf => message}/mapper/MessageGroupNodeMapper.java (70%) rename msg-center-new/src/main/java/cn/axzo/msg/center/{perf => message}/mapper/MessageTemplateGroupMapper.java (70%) rename msg-center-new/src/main/java/cn/axzo/msg/center/{perf => message}/mapper/MessageTemplateRouterMapper.java (70%) rename msg-center-new/src/main/java/cn/axzo/msg/center/{perf => message}/mapper/PendingMessageRecordMapper.java (70%) rename msg-center-new/src/main/java/cn/axzo/msg/center/{perf => message}/service/MessageGroupService.java (77%) create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/message/service/PendingMessageService.java delete mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/perf/service/PendingMessageService.java diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/IdentityDTO.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/IdentityDTO.java index b4f8d634..15550ede 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/IdentityDTO.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/IdentityDTO.java @@ -2,7 +2,10 @@ package cn.axzo.msg.center.service.dto; import cn.axzo.msg.center.service.enums.IdentityTypeEnum; import com.alibaba.fastjson.JSON; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; import java.io.Serializable; @@ -16,6 +19,9 @@ import java.io.Serializable; */ @Setter @Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor public class IdentityDTO implements Serializable { private static final long serialVersionUID = 7176145314439312573L; diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/PersonDTO.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/PersonDTO.java index 0282cfe1..c1e54381 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/PersonDTO.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/PersonDTO.java @@ -1,7 +1,10 @@ package cn.axzo.msg.center.service.dto; import com.alibaba.fastjson.JSON; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; import java.io.Serializable; @@ -15,6 +18,9 @@ import java.io.Serializable; */ @Setter @Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor public class PersonDTO implements Serializable { private static final long serialVersionUID = 1231840051925115741L; diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/MessageGroupNodeStatisticRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/MessageGroupNodeStatisticRequest.java index 1675adce..8cfb6c3c 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/MessageGroupNodeStatisticRequest.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/MessageGroupNodeStatisticRequest.java @@ -7,9 +7,10 @@ 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.Collection; /** * @description @@ -29,11 +30,6 @@ public class MessageGroupNodeStatisticRequest implements Serializable { */ @NotNull(message = "personId is required") private Long personId; - /** - * 消息的分类结点编码 - */ - @NotBlank(message = "groupNodeCode is required") - private String groupNodeCode; /** * 当前登录账户的身份id(前端不care) */ @@ -42,6 +38,11 @@ public class MessageGroupNodeStatisticRequest implements Serializable { * 当前登录账户的身份类型(前端不care) */ private IdentityTypeEnum identityType; + /** + * 消息的分类结点编码集合 + */ + @NotEmpty(message = "groupNodeCodes is required") + private Collection groupNodeCodes; /** * 业务方是否只关注特定身份的消息 * true: 是 diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/MessageGroupNodeResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/MessageGroupNodeResponse.java index d4e4f7ce..fe55fd6e 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/MessageGroupNodeResponse.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/MessageGroupNodeResponse.java @@ -45,7 +45,7 @@ public class MessageGroupNodeResponse implements IBaseTree nodeChildren; /** diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/service/IMService.java b/msg-center-new/src/main/java/cn/axzo/msg/center/im/service/IMService.java new file mode 100644 index 00000000..c8044f7c --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/im/service/IMService.java @@ -0,0 +1,11 @@ +package cn.axzo.msg.center.im.service; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/27 + * @version 1.0 + */ +public interface IMService { +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageGroupNodeDTO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageGroupNodeDTO.java new file mode 100644 index 00000000..56f6d18c --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageGroupNodeDTO.java @@ -0,0 +1,61 @@ +package cn.axzo.msg.center.message.domain.dto; + +import cn.axzo.core.utils.converter.BeanConverter; +import cn.axzo.msg.center.service.enums.MessageGroupNodeCategoryEnum; +import cn.axzo.msg.center.service.pending.response.MessageGroupNodeResponse; +import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + * @description + * 消息分类结点DTO + * + * @author cold_blade + * @date 2023/9/26 + * @version 1.0 + */ +@Setter +@Getter +public class MessageGroupNodeDTO implements Serializable { + + private static final long serialVersionUID = 5171436359992401120L; + + /** + * 结点类型 + * 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 Integer pendingCount; + + public MessageGroupNodeResponse toResponse() { + return BeanConverter.convert(this, MessageGroupNodeResponse.class); + } + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java new file mode 100644 index 00000000..2c1474c0 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java @@ -0,0 +1,74 @@ +package cn.axzo.msg.center.message.domain.dto; + +import cn.axzo.msg.center.service.dto.MessageRouterDTO; +import cn.axzo.msg.center.service.dto.PersonDTO; +import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @description + * 代办消息记录DTO + * @author cold_blade + * @date 2023/9/23 + * @version 1.0 + */ +@Setter +@Getter +public class PendingMessageDTO implements Serializable { + + private static final long serialVersionUID = 2207968284043321033L; + + /** + * 消息的唯一标识 + */ + private String identityCode; + /** + * 消息标题 + */ + private String title; + /** + * 消息内容 + */ + private String content; + /** + * 代办发起者信息 + */ + private PersonDTO promoter; + /** + * 代办执行者信息 + */ + private PersonDTO executor; + /** + * 业务编码 + */ + private String bizCode; + /** + * 子业务编码 + */ + private String subBizCode; + /** + * 业务状态描述 + */ + private String bizDesc; + /** + * 申请时间戳 + */ + private LocalDateTime createTime; + /** + * 处理时间戳 + */ + private LocalDateTime updateTime; + /** + * 路由信息,可为空 + */ + private MessageRouterDTO router; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/param/MessageGroupNodeStatisticParam.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/param/MessageGroupNodeStatisticParam.java new file mode 100644 index 00000000..7a18d79b --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/param/MessageGroupNodeStatisticParam.java @@ -0,0 +1,86 @@ +package cn.axzo.msg.center.message.domain.param; + +import cn.axzo.core.utils.converter.BeanConverter; +import cn.axzo.msg.center.service.dto.IdentityDTO; +import cn.axzo.msg.center.service.dto.PersonDTO; +import cn.axzo.msg.center.service.enums.PendingMessageRoleCategoryEnum; +import cn.axzo.msg.center.service.enums.PendingMessageStateEnum; +import cn.axzo.msg.center.service.pending.request.MessageGroupNodeStatisticRequest; +import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Collection; +import java.util.Optional; + +/** + * @description + * 消息分类统计功能的入参Param + * @author cold_blade + * @date 2023/9/26 + * @version 1.0 + */ +@Setter +@Getter +public class MessageGroupNodeStatisticParam implements Serializable { + + private static final long serialVersionUID = 2301361555618643235L; + + /** + * 当前登录账户的自然id(前端不care) + */ + private PersonDTO operator; + /** + * 业务方是否只关注特定身份的消息 + * true: 是 + * false: 否 + */ + private Boolean withIdentify; + /** + * 消息的分类结点编码集合 + */ + private Collection groupNodeCodes; + /** + * 代办角色 + * PROMOTER: 发起者 + * CREATOR: 创建者 + * EXECUTOR: 执行者 + */ + private PendingMessageRoleCategoryEnum roleCategory; + /** + * 代办消息状态 + * UNSENT: 未发送 + * HAS_BEEN_SENT: 已发送 + * COMPLETED: 已办 + * RETRACT: 已撤回 + * DELETED: 已删除 + */ + private PendingMessageStateEnum msgState; + /** + * 消息标题 + */ + private String title; + + public static Optional from(MessageGroupNodeStatisticRequest request) { + return Optional.ofNullable(request) + .map(v -> { + MessageGroupNodeStatisticParam param = BeanConverter.convert(v, MessageGroupNodeStatisticParam.class); + IdentityDTO identity = IdentityDTO.builder() + .id(request.getIdentityId()) + .type(request.getIdentityType()) + .build(); + PersonDTO person = PersonDTO.builder() + .id(request.getPersonId()) + .identity(identity) + .build(); + param.setOperator(person); + return param; + }); + } + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/GeneralMessageRecordPO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/GeneralMessageRecordPO.java similarity index 97% rename from msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/GeneralMessageRecordPO.java rename to msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/GeneralMessageRecordPO.java index df2cf2c7..ce70dc36 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/GeneralMessageRecordPO.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/GeneralMessageRecordPO.java @@ -1,4 +1,4 @@ -package cn.axzo.msg.center.perf.domain.po; +package cn.axzo.msg.center.message.domain.po; import cn.axzo.core.persistence.BaseEntity; import cn.axzo.msg.center.service.enums.GeneralMessageStateEnum; diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageBaseTemplatePO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageBaseTemplatePO.java similarity index 96% rename from msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageBaseTemplatePO.java rename to msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageBaseTemplatePO.java index 12845102..1456107b 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageBaseTemplatePO.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageBaseTemplatePO.java @@ -1,4 +1,4 @@ -package cn.axzo.msg.center.perf.domain.po; +package cn.axzo.msg.center.message.domain.po; import cn.axzo.core.persistence.BaseEntity; import cn.axzo.msg.center.service.enums.MessageCategoryEnum; diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageGroupNodePO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageGroupNodePO.java similarity index 96% rename from msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageGroupNodePO.java rename to msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageGroupNodePO.java index a990aa9a..7545cc20 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageGroupNodePO.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageGroupNodePO.java @@ -1,4 +1,4 @@ -package cn.axzo.msg.center.perf.domain.po; +package cn.axzo.msg.center.message.domain.po; import cn.axzo.core.persistence.BaseEntity; import cn.axzo.msg.center.service.enums.MessageGroupNodeCategoryEnum; diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageTemplateGroupPO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageTemplateGroupPO.java similarity index 94% rename from msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageTemplateGroupPO.java rename to msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageTemplateGroupPO.java index 14336dee..6d5bcf90 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageTemplateGroupPO.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageTemplateGroupPO.java @@ -1,4 +1,4 @@ -package cn.axzo.msg.center.perf.domain.po; +package cn.axzo.msg.center.message.domain.po; import cn.axzo.core.persistence.BaseEntity; import com.alibaba.fastjson.JSON; diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageTemplateRouterPO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageTemplateRouterPO.java similarity index 96% rename from msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageTemplateRouterPO.java rename to msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageTemplateRouterPO.java index 3769c0c4..746e4d14 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/MessageTemplateRouterPO.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageTemplateRouterPO.java @@ -1,4 +1,4 @@ -package cn.axzo.msg.center.perf.domain.po; +package cn.axzo.msg.center.message.domain.po; import cn.axzo.core.persistence.BaseEntity; import cn.axzo.msg.center.service.enums.RouterCategoryEnum; diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/PendingMessageRecordPO.java similarity index 98% rename from msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java rename to msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/PendingMessageRecordPO.java index 19f19028..e8a1bb69 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/domain/po/PendingMessageRecordPO.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/PendingMessageRecordPO.java @@ -1,4 +1,4 @@ -package cn.axzo.msg.center.perf.domain.po; +package cn.axzo.msg.center.message.domain.po; import cn.axzo.core.persistence.BaseEntity; import cn.axzo.msg.center.service.enums.BizCategoryEnum; diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/GeneralMessageRecordMapper.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/GeneralMessageRecordMapper.java similarity index 70% rename from msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/GeneralMessageRecordMapper.java rename to msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/GeneralMessageRecordMapper.java index f087e0ac..b9b94663 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/GeneralMessageRecordMapper.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/GeneralMessageRecordMapper.java @@ -1,6 +1,6 @@ -package cn.axzo.msg.center.perf.mapper; +package cn.axzo.msg.center.message.mapper; -import cn.axzo.msg.center.perf.domain.po.GeneralMessageRecordPO; +import cn.axzo.msg.center.message.domain.po.GeneralMessageRecordPO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageBaseTemplateMapper.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageBaseTemplateMapper.java similarity index 70% rename from msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageBaseTemplateMapper.java rename to msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageBaseTemplateMapper.java index 5a2acc74..54f31b37 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageBaseTemplateMapper.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageBaseTemplateMapper.java @@ -1,6 +1,6 @@ -package cn.axzo.msg.center.perf.mapper; +package cn.axzo.msg.center.message.mapper; -import cn.axzo.msg.center.perf.domain.po.MessageBaseTemplatePO; +import cn.axzo.msg.center.message.domain.po.MessageBaseTemplatePO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageGroupNodeMapper.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageGroupNodeMapper.java similarity index 70% rename from msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageGroupNodeMapper.java rename to msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageGroupNodeMapper.java index 7411fb33..729ceef2 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageGroupNodeMapper.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageGroupNodeMapper.java @@ -1,6 +1,6 @@ -package cn.axzo.msg.center.perf.mapper; +package cn.axzo.msg.center.message.mapper; -import cn.axzo.msg.center.perf.domain.po.MessageGroupNodePO; +import cn.axzo.msg.center.message.domain.po.MessageGroupNodePO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageTemplateGroupMapper.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageTemplateGroupMapper.java similarity index 70% rename from msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageTemplateGroupMapper.java rename to msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageTemplateGroupMapper.java index 195958e5..01e716d3 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageTemplateGroupMapper.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageTemplateGroupMapper.java @@ -1,6 +1,6 @@ -package cn.axzo.msg.center.perf.mapper; +package cn.axzo.msg.center.message.mapper; -import cn.axzo.msg.center.perf.domain.po.MessageTemplateGroupPO; +import cn.axzo.msg.center.message.domain.po.MessageTemplateGroupPO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageTemplateRouterMapper.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageTemplateRouterMapper.java similarity index 70% rename from msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageTemplateRouterMapper.java rename to msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageTemplateRouterMapper.java index e0f43a34..e64b1e25 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/MessageTemplateRouterMapper.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageTemplateRouterMapper.java @@ -1,6 +1,6 @@ -package cn.axzo.msg.center.perf.mapper; +package cn.axzo.msg.center.message.mapper; -import cn.axzo.msg.center.perf.domain.po.MessageTemplateRouterPO; +import cn.axzo.msg.center.message.domain.po.MessageTemplateRouterPO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/PendingMessageRecordMapper.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/PendingMessageRecordMapper.java similarity index 70% rename from msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/PendingMessageRecordMapper.java rename to msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/PendingMessageRecordMapper.java index 3d227f6a..973e60e5 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/mapper/PendingMessageRecordMapper.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/PendingMessageRecordMapper.java @@ -1,6 +1,6 @@ -package cn.axzo.msg.center.perf.mapper; +package cn.axzo.msg.center.message.mapper; -import cn.axzo.msg.center.perf.domain.po.PendingMessageRecordPO; +import cn.axzo.msg.center.message.domain.po.PendingMessageRecordPO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/service/MessageGroupService.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/MessageGroupService.java similarity index 77% rename from msg-center-new/src/main/java/cn/axzo/msg/center/perf/service/MessageGroupService.java rename to msg-center-new/src/main/java/cn/axzo/msg/center/message/service/MessageGroupService.java index fea2748a..c1c7df2a 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/service/MessageGroupService.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/MessageGroupService.java @@ -1,4 +1,4 @@ -package cn.axzo.msg.center.perf.service; +package cn.axzo.msg.center.message.service; /** * @description diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/PendingMessageService.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/PendingMessageService.java new file mode 100644 index 00000000..fcc8911a --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/PendingMessageService.java @@ -0,0 +1,64 @@ +package cn.axzo.msg.center.message.service; + +import cn.axzo.msg.center.message.domain.dto.MessageGroupNodeDTO; +import cn.axzo.msg.center.message.domain.param.MessageGroupNodeStatisticParam; +import cn.axzo.msg.center.service.enums.TerminalTypeEnum; +import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; +import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest; +import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; +import cn.azxo.framework.common.model.Page; + +import java.util.List; + +/** + * @description + * 待办Service + * @author cold_blade + * @date 2023/9/20 + * @version 1.0 + */ +public interface PendingMessageService { + + List groupStatistic(MessageGroupNodeStatisticParam param); + + /** + * 代办列表分页查询 + * + * @param request 分页查询相关参数 + * @return 代办列表 + */ + Page pageQuery(PendingMessagePageRequest request); + + /** + * 查询代办详情 + * + * @param msgIdentityCode 消息的唯一标识 + * @param terminalType APP终端类型 + * @return 代办详情 + */ + PendingMessageResponse detail(String msgIdentityCode, TerminalTypeEnum terminalType); + + /** + * 发送代办 + * + * @param request 代办核心参数 + * @return 代办唯一标识 + */ + String push(PendingMessagePushRequest request); + + /** + * 完成代办 + * + * @param msgIdentityCode 代办唯一标识 + * @return 成功返回 {@code true} 失败返回 {@code false} + */ + Boolean complete(String msgIdentityCode); + + /** + * 撤销代办 + * + * @param msgIdentityCode 代办唯一标识 + * @return 成功返回 {@code true} 失败返回 {@code false} + */ + Boolean revoke(String msgIdentityCode); +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/service/PendingMessageService.java b/msg-center-new/src/main/java/cn/axzo/msg/center/perf/service/PendingMessageService.java deleted file mode 100644 index 44b03258..00000000 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/perf/service/PendingMessageService.java +++ /dev/null @@ -1,12 +0,0 @@ -package cn.axzo.msg.center.perf.service; - -/** - * @description - * 待办Service - * @author cold_blade - * @date 2023/9/20 - * @version 1.0 - */ -public interface PendingMessageService { - -} From e154468e6d8ee3d693ec19c59dd75c94108fbc84 Mon Sep 17 00:00:00 2001 From: luofu Date: Thu, 28 Sep 2023 14:22:31 +0800 Subject: [PATCH 14/34] =?UTF-8?q?feat(REQ-1309):=20=E5=BA=95=E5=B1=82IM?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 底层IM推送实现 影响: 无 --- msg-center-new/pom.xml | 6 + .../center/im/channel/IMChannelHandler.java | 17 +++ .../im/channel/IMChannelHandlerFactory.java | 64 +++++++++ .../im/channel/handler/YouMengHandler.java | 132 ++++++++++++++++++ .../im/domain/dto/IMSendMessageDTO.java | 73 ++++++++++ .../im/domain/enums/AppClientTypeEnum.java | 24 ++++ .../center/im/domain/enums/IMChannelEnum.java | 22 +++ .../domain/enums/IMSendMessageStatusEnum.java | 24 ++++ .../event/IMSendSingleMessageEvent.java | 62 ++++++++ .../param/IMSendSingleMessageParam.java | 61 ++++++++ .../axzo/msg/center/im/service/IMService.java | 9 ++ .../center/im/service/impl/IMServiceImpl.java | 42 ++++++ 12 files changed, 536 insertions(+) create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandler.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandlerFactory.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/handler/YouMengHandler.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/dto/IMSendMessageDTO.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/enums/AppClientTypeEnum.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/enums/IMChannelEnum.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/enums/IMSendMessageStatusEnum.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/event/IMSendSingleMessageEvent.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/param/IMSendSingleMessageParam.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/im/service/impl/IMServiceImpl.java diff --git a/msg-center-new/pom.xml b/msg-center-new/pom.xml index f6eca95d..779825a2 100644 --- a/msg-center-new/pom.xml +++ b/msg-center-new/pom.xml @@ -85,5 +85,11 @@ alibaba-dingtalk-service-sdk 2.0.0 + + cn.axzo.msgcenter + inside-notices + 1.0.0-SNAPSHOT + compile + \ No newline at end of file diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandler.java b/msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandler.java new file mode 100644 index 00000000..05ed604a --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandler.java @@ -0,0 +1,17 @@ +package cn.axzo.msg.center.im.channel; + +import cn.axzo.msg.center.im.domain.enums.IMChannelEnum; +import cn.axzo.msg.center.im.domain.param.IMSendSingleMessageParam; + +/** + * @description + * @author cold_blade + * @date 2023/9/27 + * @version 1.0 + */ +public interface IMChannelHandler { + + void sendSingleMessage(IMSendSingleMessageParam param); + + IMChannelEnum channel(); +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandlerFactory.java b/msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandlerFactory.java new file mode 100644 index 00000000..336c638e --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandlerFactory.java @@ -0,0 +1,64 @@ +package cn.axzo.msg.center.im.channel; + +import cn.axzo.basics.common.exception.ServiceException; +import cn.axzo.msg.center.im.domain.enums.IMSendMessageStatusEnum; +import cn.axzo.msg.center.im.domain.event.IMSendSingleMessageEvent; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.event.EventListener; +import org.springframework.retry.annotation.Backoff; +import org.springframework.retry.annotation.Retryable; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Objects; + +/** + * @description + * 即时通信渠道工厂 + * + * @author cold_blade + * @date 2023/9/27 + * @version 1.0 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class IMChannelHandlerFactory { + + private final List handlers; + + @EventListener(classes = IMSendSingleMessageEvent.class) + public void sendSingleMessage(IMSendSingleMessageEvent event) { + IMChannelHandler handler = handlers.stream() + .filter(e -> Objects.equals(e.channel(), event.getChannel())) + .findFirst() + .orElse(null); + if (Objects.isNull(handler)) { + log.error("[{}] not registered.", event.getChannel()); + return; + } + log.info("start to send single message. event:{}", event); + retrySendSingleMessage(event, handler); + } + + @Retryable(value = ServiceException.class, backoff = @Backoff(delay = 1000L, multiplier = 1)) + public void retrySendSingleMessage(IMSendSingleMessageEvent event, IMChannelHandler handler) { + try { + if (event.getRetryCounter().longValue() > event.getRetryCnt()) { + log.warn("failed to retry send single message. event:{}", event); + event.setStatus(IMSendMessageStatusEnum.FAILED); + } else { + handler.sendSingleMessage(event.getParam()); + event.setStatus(IMSendMessageStatusEnum.SUCCESS); + log.warn("successfully send single message. event:{}", event); + } + // 回调函数处理 + event.getParam().getCallback().accept(event); + } catch (ServiceException e) { + log.error("broke out some exception while sending single message. event:{}", event); + event.getRetryCounter().increment(); + throw e; + } + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/handler/YouMengHandler.java b/msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/handler/YouMengHandler.java new file mode 100644 index 00000000..26bf52e6 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/handler/YouMengHandler.java @@ -0,0 +1,132 @@ +package cn.axzo.msg.center.im.channel.handler; + +import cn.axzo.msg.center.api.enums.ReceiveTypeEnum; +import cn.axzo.msg.center.api.request.MsgBody4Guest; +import cn.axzo.msg.center.common.exception.ServiceException; +import cn.axzo.msg.center.common.model.ProfileIdRepair; +import cn.axzo.msg.center.common.utils.PlaceholderResolver; +import cn.axzo.msg.center.domain.enums.NativeTypeEnum; +import cn.axzo.msg.center.im.channel.IMChannelHandler; +import cn.axzo.msg.center.im.domain.dto.IMSendMessageDTO; +import cn.axzo.msg.center.im.domain.enums.IMChannelEnum; +import cn.axzo.msg.center.im.domain.param.IMSendSingleMessageParam; +import cn.axzo.msg.center.inside.notices.service.IYouMengMessageService; +import cn.axzo.msg.center.service.dto.MessageRouterDTO; +import cn.axzo.msg.center.service.dto.PersonDTO; +import cn.axzo.msg.center.service.enums.IdentityTypeEnum; +import cn.azxo.framework.common.utils.StringUtils; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Collection; +import java.util.Optional; + +/** + * @description + * 友盟即时通信渠道 + * + * @author cold_blade + * @date 2023/9/27 + * @version 1.0 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class YouMengHandler implements IMChannelHandler { + + private final IYouMengMessageService youMengMessageService; + + @Override + public void sendSingleMessage(IMSendSingleMessageParam param) { + youMengMessageService.sendPushMessage(convert(param)); + } + + @Override + public IMChannelEnum channel() { + return IMChannelEnum.YOU_MENG; + } + + private MsgBody4Guest convert(IMSendSingleMessageParam param) { + MsgBody4Guest imMessage = new MsgBody4Guest(); + imMessage.setTy(0); + imMessage.setF("0"); + imMessage.setNickName(param.getMessage().getGroupName()); + imMessage.setAppClient(param.getAppClientType().getCode()); + String toId = buildToId(param.getReceiver(), param.getMessage().getBizCode()); + imMessage.setT(toId); + imMessage.setM(param.getMessage().getMsgContent()); + + JSONObject jsonObject = buildMessageExt2(param.getMessage()); + imMessage.setM2(jsonObject.toJSONString()); + imMessage.setM3(String.valueOf(param.getReceiver().getId())); + return imMessage; + } + + private String buildToId(PersonDTO person, String bizCode) { + Long identityId = person.getIdentity().getId(); + switch (toReceiveType(person.getIdentity().getType())) { + case CM_LEADER: + return ReceiveTypeEnum.CM_LEADER.getMessage() + ProfileIdRepair.workerLeaderNewId2Old(identityId); + case CM_WORKER: + return ReceiveTypeEnum.CM_WORKER.getMessage() + ProfileIdRepair.workerNewId2OldId(identityId); + case CMP_USER: + return ReceiveTypeEnum.CMP_USER.getMessage() + ProfileIdRepair.entUserNew2OldId(identityId); + case NOT_IDENTITY: + return ReceiveTypeEnum.NOT_IDENTITY.getMessage() + person.getId(); + case NORMAL: + return ReceiveTypeEnum.NORMAL.getMessage() + person.getId(); + default: + log.error("消息推送用户类型错误 bizId:[{}]", bizCode); + throw new ServiceException("消息推送失败"); + } + } + + private JSONObject buildMessageExt2(IMSendMessageDTO message) { + final JSONObject extra = new JSONObject(); + Collection messageRouters = message.getRouters(); + if (messageRouters.isEmpty()) { + extra.put("ar", ""); + extra.put("ir", ""); + } else { + // 业务上不会跳转微信小程序 + messageRouters.forEach(item -> { + PlaceholderResolver pr = PlaceholderResolver.getDefaultResolver(); + String url = pr.resolveByMap(item.getUrl(), message.getRouteParam()); + extra.put("rt", NativeTypeEnum.getByCode(item.getTerminalType().getCode()).getMessage()); + switch (item.getTerminalType()) { + case IOS: + extra.put("ir", url); + break; + case ANDROID: + extra.put("ar", url); + break; + case WEB_VIEW: + case MINI_PROGRAM: + // 小程序 + extra.put("ar", url); + extra.put("ir", url); + break; + default: + } + }); + } + extra.put("msgId", message.getMsgId()); + extra.put("p", message.getRouteParam()); + extra.put("t", message.getMsgTitle()); + extra.put("extra", message.getExtInfo().toJSONString()); + // 临时处理发送类型,如果消息type为1时,需要前端清空teamId,并且重新拉取数据 + Integer exType = message.getExtInfo().getInteger("type"); + extra.put("type", exType); + if (StringUtils.isNotBlank(message.getAudioFileName())) { + extra.put("audio", message.getAudioFileName()); + } + return extra; + } + + private ReceiveTypeEnum toReceiveType(IdentityTypeEnum identityType) { + return Optional.ofNullable(ReceiveTypeEnum.valueOf(identityType.getCode())) + .orElse(ReceiveTypeEnum.NOT_IDENTITY); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/dto/IMSendMessageDTO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/dto/IMSendMessageDTO.java new file mode 100644 index 00000000..839cce5b --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/dto/IMSendMessageDTO.java @@ -0,0 +1,73 @@ +package cn.axzo.msg.center.im.domain.dto; + +import cn.axzo.msg.center.im.domain.param.IMSendSingleMessageParam; +import cn.axzo.msg.center.service.dto.MessageRouterDTO; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Collection; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/27 + * @version 1.0 + */ +@Setter +@Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class IMSendMessageDTO implements Serializable { + + private static final long serialVersionUID = -5019078100836274269L; + + /** + * 消息id + */ + private Long msgId; + /** + * 消息标题 + */ + private String msgTitle; + /** + * 消息内容 + */ + private String msgContent; + /** + * 分类名称 + */ + private String groupName; + /** + * 消息路由列表 + */ + private Collection routers; + /** + * 消息参数 key value + */ + private JSONObject routeParam; + /** + * 消息扩展信息 + */ + private JSONObject extInfo; + /** + * 业务编码 + */ + private String bizCode; + /** + * 消息如果有音频信息,则需要给音频文件名称 + */ + private String audioFileName; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/enums/AppClientTypeEnum.java b/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/enums/AppClientTypeEnum.java new file mode 100644 index 00000000..9bd3f186 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/enums/AppClientTypeEnum.java @@ -0,0 +1,24 @@ +package cn.axzo.msg.center.im.domain.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/27 + * @version 1.0 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum AppClientTypeEnum { + + CM("cm", "工人端"), + CMP("cmp", "管理端"), + ; + + private final String code; + private final String desc; +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/enums/IMChannelEnum.java b/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/enums/IMChannelEnum.java new file mode 100644 index 00000000..fb6aa0ed --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/enums/IMChannelEnum.java @@ -0,0 +1,22 @@ +package cn.axzo.msg.center.im.domain.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/27 + * @version 1.0 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum IMChannelEnum { + + YOU_MENG("友盟"), + ; + + private final String desc; +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/enums/IMSendMessageStatusEnum.java b/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/enums/IMSendMessageStatusEnum.java new file mode 100644 index 00000000..df94d9a8 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/enums/IMSendMessageStatusEnum.java @@ -0,0 +1,24 @@ +package cn.axzo.msg.center.im.domain.enums; + +/** + * @description + * @author cold_blade + * @date 2023/9/28 + * @version 1.0 + */ +public enum IMSendMessageStatusEnum { + + /** + * 发送中 + */ + SENDING, + /** + * 发送成功 + */ + SUCCESS, + /** + * 发送失败 + */ + FAILED, + ; +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/event/IMSendSingleMessageEvent.java b/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/event/IMSendSingleMessageEvent.java new file mode 100644 index 00000000..c242d758 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/event/IMSendSingleMessageEvent.java @@ -0,0 +1,62 @@ +package cn.axzo.msg.center.im.domain.event; + +import cn.axzo.msg.center.im.domain.enums.AppClientTypeEnum; +import cn.axzo.msg.center.im.domain.enums.IMSendMessageStatusEnum; +import cn.axzo.msg.center.im.domain.param.IMSendSingleMessageParam; +import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.concurrent.atomic.LongAdder; + +/** + * @description + * 即时通信发送消息事件 + * + * @author cold_blade + * @date 2023/9/27 + * @version 1.0 + */ +@Setter +@Getter +public class IMSendSingleMessageEvent implements Serializable { + + private static final long serialVersionUID = 4652087357183307179L; + + /** + * 待发送的消息 + */ + private IMSendSingleMessageParam param; + /** + * 应用客户端类型 + */ + private AppClientTypeEnum appClientType; + /** + * 充实次数,默认重试3次,必须为非负数 + */ + private long retryCnt = 3L; + /** + * 充实次数计数器 + */ + private final LongAdder retryCounter = new LongAdder(); + /** + * 消息发送状态 + */ + private IMSendMessageStatusEnum status = IMSendMessageStatusEnum.SENDING; + /** + * 发送失败时的错误信息 + */ + private String errInfo; + + public static IMSendSingleMessageEvent build(IMSendSingleMessageParam param) { + IMSendSingleMessageEvent event = new IMSendSingleMessageEvent(); + event.setParam(param); + return event; + } + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/param/IMSendSingleMessageParam.java b/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/param/IMSendSingleMessageParam.java new file mode 100644 index 00000000..f4782d2f --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/param/IMSendSingleMessageParam.java @@ -0,0 +1,61 @@ +package cn.axzo.msg.center.im.domain.param; + +import cn.axzo.msg.center.im.domain.dto.IMSendMessageDTO; +import cn.axzo.msg.center.im.domain.enums.AppClientTypeEnum; +import cn.axzo.msg.center.im.domain.enums.IMChannelEnum; +import cn.axzo.msg.center.im.domain.event.IMSendSingleMessageEvent; +import cn.axzo.msg.center.service.dto.PersonDTO; +import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.function.Consumer; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/27 + * @version 1.0 + */ +@Setter +@Getter +public class IMSendSingleMessageParam implements Serializable { + + private static final long serialVersionUID = 235976408457947264L; + + /** + * 消息 + */ + private IMSendMessageDTO message; + /** + * 消息发送者信息 + */ + private PersonDTO sender; + /** + * 消息接收者信息 + */ + private PersonDTO receiver; + /** + * 应用客户端类型 + */ + private AppClientTypeEnum appClientType; + /** + * 底层渠道发送消息后的回调 + */ + private Consumer callback; + /** + * 指定推送渠道 + */ + private IMChannelEnum channel; + /** + * APP的版本号 + */ + private Integer appVersionCode; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/service/IMService.java b/msg-center-new/src/main/java/cn/axzo/msg/center/im/service/IMService.java index c8044f7c..89b5527a 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/im/service/IMService.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/im/service/IMService.java @@ -1,5 +1,7 @@ package cn.axzo.msg.center.im.service; +import cn.axzo.msg.center.im.domain.param.IMSendSingleMessageParam; + /** * @description * @@ -8,4 +10,11 @@ package cn.axzo.msg.center.im.service; * @version 1.0 */ public interface IMService { + + /** + * 异步发送消息 + * + * @param param 消息内容 + */ + void asyncSendSingleMessage(IMSendSingleMessageParam param); } diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/service/impl/IMServiceImpl.java b/msg-center-new/src/main/java/cn/axzo/msg/center/im/service/impl/IMServiceImpl.java new file mode 100644 index 00000000..e76ba047 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/im/service/impl/IMServiceImpl.java @@ -0,0 +1,42 @@ +package cn.axzo.msg.center.im.service.impl; + +import cn.axzo.msg.center.common.utils.SpringUtils; +import cn.axzo.msg.center.im.domain.enums.AppClientTypeEnum; +import cn.axzo.msg.center.im.domain.event.IMSendSingleMessageEvent; +import cn.axzo.msg.center.im.domain.param.IMSendSingleMessageParam; +import cn.axzo.msg.center.im.service.IMService; +import cn.axzo.msg.center.service.enums.IdentityTypeEnum; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +/** + * @description + * 即时通信功能模块 + * + * @author cold_blade + * @date 2023/9/27 + * @version 1.0 + */ +@Slf4j +@Service +public class IMServiceImpl implements IMService { + + @Override + public void asyncSendSingleMessage(IMSendSingleMessageParam param) { + // 发送推送消息事件 + SpringUtils.publishEvent(buildEvent(param)); + } + + private IMSendSingleMessageEvent buildEvent(IMSendSingleMessageParam param) { + IMSendSingleMessageEvent event = IMSendSingleMessageEvent.build(param); + Integer appVersionCode = param.getAppVersionCode(); + if (Objects.nonNull(appVersionCode) && appVersionCode >= 330 + && IdentityTypeEnum.WORKER_LEADER.equals(param.getReceiver().getIdentity().getType())) { + log.info("班组长转到cmp,发给用户:{}, versionCode:[{}]", param.getReceiver(), appVersionCode); + event.setAppClientType(AppClientTypeEnum.CMP); + } + return event; + } +} From 83c806baf787cbc194b085bf4372e479954d3cbd Mon Sep 17 00:00:00 2001 From: luofu Date: Thu, 28 Sep 2023 14:26:48 +0800 Subject: [PATCH 15/34] =?UTF-8?q?feat(REQ-1309):=20=E5=BA=95=E5=B1=82IM?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 底层IM推送实现 影响: 无 --- .../msg/center/im/channel/IMChannelHandlerFactory.java | 4 ++-- .../center/im/domain/event/IMSendSingleMessageEvent.java | 5 ----- .../cn/axzo/msg/center/im/service/impl/IMServiceImpl.java | 7 +++++-- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandlerFactory.java b/msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandlerFactory.java index 336c638e..743684cf 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandlerFactory.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandlerFactory.java @@ -31,11 +31,11 @@ public class IMChannelHandlerFactory { @EventListener(classes = IMSendSingleMessageEvent.class) public void sendSingleMessage(IMSendSingleMessageEvent event) { IMChannelHandler handler = handlers.stream() - .filter(e -> Objects.equals(e.channel(), event.getChannel())) + .filter(e -> Objects.equals(e.channel(), event.getParam().getChannel())) .findFirst() .orElse(null); if (Objects.isNull(handler)) { - log.error("[{}] not registered.", event.getChannel()); + log.error("[{}] not registered.", event.getParam().getChannel()); return; } log.info("start to send single message. event:{}", event); diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/event/IMSendSingleMessageEvent.java b/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/event/IMSendSingleMessageEvent.java index c242d758..91b48097 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/event/IMSendSingleMessageEvent.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/event/IMSendSingleMessageEvent.java @@ -1,6 +1,5 @@ package cn.axzo.msg.center.im.domain.event; -import cn.axzo.msg.center.im.domain.enums.AppClientTypeEnum; import cn.axzo.msg.center.im.domain.enums.IMSendMessageStatusEnum; import cn.axzo.msg.center.im.domain.param.IMSendSingleMessageParam; import com.alibaba.fastjson.JSON; @@ -28,10 +27,6 @@ public class IMSendSingleMessageEvent implements Serializable { * 待发送的消息 */ private IMSendSingleMessageParam param; - /** - * 应用客户端类型 - */ - private AppClientTypeEnum appClientType; /** * 充实次数,默认重试3次,必须为非负数 */ diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/service/impl/IMServiceImpl.java b/msg-center-new/src/main/java/cn/axzo/msg/center/im/service/impl/IMServiceImpl.java index e76ba047..6216a999 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/im/service/impl/IMServiceImpl.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/im/service/impl/IMServiceImpl.java @@ -1,5 +1,6 @@ package cn.axzo.msg.center.im.service.impl; +import cn.axzo.core.utils.converter.BeanConverter; import cn.axzo.msg.center.common.utils.SpringUtils; import cn.axzo.msg.center.im.domain.enums.AppClientTypeEnum; import cn.axzo.msg.center.im.domain.event.IMSendSingleMessageEvent; @@ -25,8 +26,10 @@ public class IMServiceImpl implements IMService { @Override public void asyncSendSingleMessage(IMSendSingleMessageParam param) { + // 深拷贝一个外界的参数 + IMSendSingleMessageParam copyParam = BeanConverter.convert(param, IMSendSingleMessageParam.class); // 发送推送消息事件 - SpringUtils.publishEvent(buildEvent(param)); + SpringUtils.publishEvent(buildEvent(copyParam)); } private IMSendSingleMessageEvent buildEvent(IMSendSingleMessageParam param) { @@ -35,7 +38,7 @@ public class IMServiceImpl implements IMService { if (Objects.nonNull(appVersionCode) && appVersionCode >= 330 && IdentityTypeEnum.WORKER_LEADER.equals(param.getReceiver().getIdentity().getType())) { log.info("班组长转到cmp,发给用户:{}, versionCode:[{}]", param.getReceiver(), appVersionCode); - event.setAppClientType(AppClientTypeEnum.CMP); + param.setAppClientType(AppClientTypeEnum.CMP); } return event; } From 690e7c30a58f0c6221211a941fb4e974f6d078f9 Mon Sep 17 00:00:00 2001 From: luofu Date: Thu, 28 Sep 2023 18:32:54 +0800 Subject: [PATCH 16/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E8=AF=A6=E6=83=85&=E5=AE=8C=E6=88=90&=E6=92=A4=E5=9B=9E?= =?UTF-8?q?=E7=AD=89=E5=8A=9F=E8=83=BD=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 代办详情&完成&撤回等功能的实现 影响: 无 --- .../center/service/dto/MessageRouterDTO.java | 6 + .../common/enums/LogicDeleteFlagEnum.java | 23 ++++ .../center/common/utils/DateFormatUtil.java | 25 ++++ .../common/utils/MessageRouterUtil.java | 110 ++++++++++++++++ .../message/dao/MessageTemplateRouterDAO.java | 24 ++++ .../message/dao/PendingMessageRecordDAO.java | 23 ++++ .../impl/MessageTemplateRouterDAOImpl.java | 36 ++++++ .../dao/impl/PendingMessageRecordDAOImpl.java | 36 ++++++ .../message/domain/dto/PendingMessageDTO.java | 40 ++++++ .../domain/dto/RawMessageRouterDTO.java | 74 +++++++++++ .../service/MessageTemplateRouterService.java | 24 ++++ .../service/PendingMessageService.java | 4 +- .../MessageTemplateRouterServiceImpl.java | 39 ++++++ .../impl/PendingMessageServiceImpl.java | 119 ++++++++++++++++++ 14 files changed, 582 insertions(+), 1 deletion(-) create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/common/enums/LogicDeleteFlagEnum.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/common/utils/DateFormatUtil.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/common/utils/MessageRouterUtil.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/MessageTemplateRouterDAO.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/PendingMessageRecordDAO.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/impl/MessageTemplateRouterDAOImpl.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/impl/PendingMessageRecordDAOImpl.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/RawMessageRouterDTO.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateRouterService.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateRouterServiceImpl.java create mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageServiceImpl.java 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 ec95e032..21026857 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 @@ -3,7 +3,10 @@ package cn.axzo.msg.center.service.dto; import cn.axzo.msg.center.service.enums.RouterCategoryEnum; 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; @@ -17,6 +20,9 @@ import java.io.Serializable; */ @Setter @Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor public class MessageRouterDTO implements Serializable { private static final long serialVersionUID = 1326971022827041566L; diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/common/enums/LogicDeleteFlagEnum.java b/msg-center-new/src/main/java/cn/axzo/msg/center/common/enums/LogicDeleteFlagEnum.java new file mode 100644 index 00000000..acb2fa66 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/common/enums/LogicDeleteFlagEnum.java @@ -0,0 +1,23 @@ +package cn.axzo.msg.center.common.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/28 + * @version 1.0 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum LogicDeleteFlagEnum { + + NORMAL(0), + DELETED(1), + ; + + private final Integer flag; +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/common/utils/DateFormatUtil.java b/msg-center-new/src/main/java/cn/axzo/msg/center/common/utils/DateFormatUtil.java new file mode 100644 index 00000000..4755a41d --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/common/utils/DateFormatUtil.java @@ -0,0 +1,25 @@ +package cn.axzo.msg.center.common.utils; + +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Date; + +/** + * @description + * 日期格式转换工具类 + * + * @author cold_blade + * @date 2023/9/28 + * @version 1.0 + */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public final class DateFormatUtil { + + public static LocalDateTime toLocalDateTime(Date date) { + ZoneId zoneId = ZoneId.systemDefault(); + return date.toInstant().atZone(zoneId).toLocalDateTime(); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/common/utils/MessageRouterUtil.java b/msg-center-new/src/main/java/cn/axzo/msg/center/common/utils/MessageRouterUtil.java new file mode 100644 index 00000000..43ef3d53 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/common/utils/MessageRouterUtil.java @@ -0,0 +1,110 @@ +package cn.axzo.msg.center.common.utils; + +import cn.axzo.msg.center.message.domain.dto.RawMessageRouterDTO; +import cn.axzo.msg.center.service.dto.MessageRouterDTO; +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; +import org.apache.commons.lang3.StringUtils; + +import java.util.List; +import java.util.Objects; +import java.util.Optional; + +/** + * @description + * 消息路由工具方法 + * + * @author cold_blade + * @date 2023/9/28 + * @version 1.0 + */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) +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 合适的路由 + */ + public static Optional selectRouter(List messageRouters, + TerminalTypeEnum terminalType) { + if (CollectionUtils.isEmpty(messageRouters)) { + return Optional.empty(); + } + Optional op = messageRouters.stream() + .filter(e -> Objects.equals(e.getTerminalType(), terminalType)) + .findFirst(); + if (op.isPresent()) { + // 优先选取与目标类型匹配的路由 + return op; + } + // 配置的路由中没有与目标类型匹配的,则根据优先级来选取 + return messageRouters.stream().min(MessageRouterUtil::compare); + } + + /** + * 判断路由参数的合法性 + * + * @param routerParam 路由参数 + * @return 合法返回 {@code true} 否则返回 {@code false} + */ + public static boolean isRouterParamValid(String routerParam) { + return StringUtils.isNotEmpty(routerParam) + && !INVALID_ROUTER_PARAM.equals(routerParam); + } + + /** + * 解析模板上配置的路由地址,并将发送消息时的参数替换上去 + * + * @param router 路由信息 + * @param routerParam 路由参数 + */ + public static void parseRouteUrl(MessageRouterDTO router, String routerParam) { + // 路由参数有效且是直接调整页面地址的路由类型 + if (isRouterParamValid(routerParam) + && RouterCategoryEnum.JUMP.equals(router.getCategory())) { + // 替换原始URL中的参数变量 + String routerUrl = PlaceholderResolver + .getDefaultResolver().resolve(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-new/src/main/java/cn/axzo/msg/center/message/dao/MessageTemplateRouterDAO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/MessageTemplateRouterDAO.java new file mode 100644 index 00000000..9509d7f9 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/MessageTemplateRouterDAO.java @@ -0,0 +1,24 @@ +package cn.axzo.msg.center.message.dao; + +import cn.axzo.msg.center.message.domain.po.MessageTemplateRouterPO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/28 + * @version 1.0 + */ +public interface MessageTemplateRouterDAO extends IService { + + /** + * 通过模板编码获取对应的路由列表 + * + * @param templateCode 模板编码 + * @return 路由列表 + */ + List listByTemplateCode(String templateCode); +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/PendingMessageRecordDAO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/PendingMessageRecordDAO.java new file mode 100644 index 00000000..df907d9d --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/PendingMessageRecordDAO.java @@ -0,0 +1,23 @@ +package cn.axzo.msg.center.message.dao; + +import cn.axzo.msg.center.message.domain.po.PendingMessageRecordPO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Optional; + +/** + * @description + * @author cold_blade + * @date 2023/9/28 + * @version 1.0 + */ +public interface PendingMessageRecordDAO extends IService { + + /** + * 通过消息唯一标识查询对应的消息记录 + * + * @param msgIdentityCode 消息唯一标识 + * @return 消息记录 + */ + Optional queryByIdentityCode(String msgIdentityCode); +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/impl/MessageTemplateRouterDAOImpl.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/impl/MessageTemplateRouterDAOImpl.java new file mode 100644 index 00000000..d651855d --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/impl/MessageTemplateRouterDAOImpl.java @@ -0,0 +1,36 @@ +package cn.axzo.msg.center.message.dao.impl; + +import cn.axzo.basics.common.util.AssertUtil; +import cn.axzo.msg.center.common.enums.LogicDeleteFlagEnum; +import cn.axzo.msg.center.message.dao.MessageTemplateRouterDAO; +import cn.axzo.msg.center.message.domain.po.MessageTemplateRouterPO; +import cn.axzo.msg.center.message.mapper.MessageTemplateRouterMapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/28 + * @version 1.0 + */ +@Slf4j +@Component +public class MessageTemplateRouterDAOImpl extends ServiceImpl + implements MessageTemplateRouterDAO { + + @Override + public List listByTemplateCode(String templateCode) { + // 参数校验 + AssertUtil.notEmpty(templateCode, "templateCode is required"); + + return lambdaQuery() + .eq(MessageTemplateRouterPO::getTemplateCode, templateCode) + .eq(MessageTemplateRouterPO::getIsDelete, LogicDeleteFlagEnum.NORMAL.getFlag()) + .list(); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/impl/PendingMessageRecordDAOImpl.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/impl/PendingMessageRecordDAOImpl.java new file mode 100644 index 00000000..7ad0c55b --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/impl/PendingMessageRecordDAOImpl.java @@ -0,0 +1,36 @@ +package cn.axzo.msg.center.message.dao.impl; + +import cn.axzo.basics.common.util.AssertUtil; +import cn.axzo.msg.center.common.enums.LogicDeleteFlagEnum; +import cn.axzo.msg.center.message.dao.PendingMessageRecordDAO; +import cn.axzo.msg.center.message.domain.po.PendingMessageRecordPO; +import cn.axzo.msg.center.message.mapper.PendingMessageRecordMapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Optional; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/28 + * @version 1.0 + */ +@Slf4j +@Component +public class PendingMessageRecordDAOImpl extends ServiceImpl + implements PendingMessageRecordDAO { + + @Override + public Optional queryByIdentityCode(String msgIdentityCode) { + // 参数检测 + AssertUtil.notEmpty(msgIdentityCode, "msgIdentityCode is required."); + + return lambdaQuery() + .eq(PendingMessageRecordPO::getIdentityCode, msgIdentityCode) + .eq(PendingMessageRecordPO::getIsDelete, LogicDeleteFlagEnum.NORMAL.getFlag()) + .oneOpt(); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java index 2c1474c0..c23f1621 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java @@ -1,9 +1,15 @@ package cn.axzo.msg.center.message.domain.dto; +import cn.axzo.msg.center.common.utils.DateFormatUtil; +import cn.axzo.msg.center.message.domain.po.PendingMessageRecordPO; +import cn.axzo.msg.center.service.dto.IdentityDTO; import cn.axzo.msg.center.service.dto.MessageRouterDTO; import cn.axzo.msg.center.service.dto.PersonDTO; import com.alibaba.fastjson.JSON; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; import java.io.Serializable; @@ -18,6 +24,9 @@ import java.time.LocalDateTime; */ @Setter @Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor public class PendingMessageDTO implements Serializable { private static final long serialVersionUID = 2207968284043321033L; @@ -67,6 +76,37 @@ public class PendingMessageDTO implements Serializable { */ private MessageRouterDTO router; + public static PendingMessageDTO from(PendingMessageRecordPO pendingMessageRecord) { + // 代办发起者信息 + PersonDTO promoter = PersonDTO.builder() + .id(pendingMessageRecord.getPromoterPersonId()) + .identity(IdentityDTO.builder() + .id(pendingMessageRecord.getPromoterId()) + .type(pendingMessageRecord.getPromoterType()) + .build()) + .build(); + // 代办执行者信息 + PersonDTO executor = PersonDTO.builder() + .id(pendingMessageRecord.getExecutorPersonId()) + .identity(IdentityDTO.builder() + .id(pendingMessageRecord.getExecutorId()) + .type(pendingMessageRecord.getExecutorType()) + .build()) + .build(); + return PendingMessageDTO.builder() + .identityCode(pendingMessageRecord.getIdentityCode()) + .title(pendingMessageRecord.getTitle()) + .content(pendingMessageRecord.getContent()) + .promoter(promoter) + .executor(executor) + .bizCode(pendingMessageRecord.getBizCode()) + .subBizCode(pendingMessageRecord.getSubBizCode()) + .bizDesc(pendingMessageRecord.getBizDesc()) + .createTime(DateFormatUtil.toLocalDateTime(pendingMessageRecord.getCreateAt())) + .updateTime(DateFormatUtil.toLocalDateTime(pendingMessageRecord.getUpdateAt())) + .build(); + } + @Override public String toString() { return JSON.toJSONString(this); diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/RawMessageRouterDTO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/RawMessageRouterDTO.java new file mode 100644 index 00000000..6598c5b3 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/RawMessageRouterDTO.java @@ -0,0 +1,74 @@ +package cn.axzo.msg.center.message.domain.dto; + +import cn.axzo.msg.center.message.domain.po.MessageTemplateRouterPO; +import cn.axzo.msg.center.service.enums.RouterCategoryEnum; +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; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/28 + * @version 1.0 + */ +@Setter +@Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class RawMessageRouterDTO implements Serializable { + + private static final long serialVersionUID = -3751613307785030747L; + + /** + * 路由描述 + */ + private String desc; + /** + * 路由分类 + * JUMP: 直接跳转 + * ACTION: 接口调用 + */ + 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 String templateCode; + + public static RawMessageRouterDTO from(MessageTemplateRouterPO msgTemplateRouter) { + return RawMessageRouterDTO.builder() + .desc(msgTemplateRouter.getName()) + .url(msgTemplateRouter.getUrl()) + .category(msgTemplateRouter.getCategory()) + .terminalType(msgTemplateRouter.getTerminalType()) + .templateCode(msgTemplateRouter.getTemplateCode()) + .build(); + } + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateRouterService.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateRouterService.java new file mode 100644 index 00000000..f3b11f75 --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateRouterService.java @@ -0,0 +1,24 @@ +package cn.axzo.msg.center.message.service; + +import cn.axzo.msg.center.message.domain.dto.RawMessageRouterDTO; + +import java.util.List; + +/** + * @description + * 消息模板路由管理 + * + * @author cold_blade + * @date 2023/9/28 + * @version 1.0 + */ +public interface MessageTemplateRouterService { + + /** + * 根据消息模板编码查询配置的路由列表 + * + * @param templateCode 消息模板编码 + * @return 路由列表 + */ + List queryByTemplateCode(String templateCode); +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/PendingMessageService.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/PendingMessageService.java index fcc8911a..3b5816ab 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/PendingMessageService.java +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/PendingMessageService.java @@ -1,6 +1,7 @@ package cn.axzo.msg.center.message.service; import cn.axzo.msg.center.message.domain.dto.MessageGroupNodeDTO; +import cn.axzo.msg.center.message.domain.dto.PendingMessageDTO; import cn.axzo.msg.center.message.domain.param.MessageGroupNodeStatisticParam; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; @@ -9,6 +10,7 @@ import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; import cn.azxo.framework.common.model.Page; import java.util.List; +import java.util.Optional; /** * @description @@ -36,7 +38,7 @@ public interface PendingMessageService { * @param terminalType APP终端类型 * @return 代办详情 */ - PendingMessageResponse detail(String msgIdentityCode, TerminalTypeEnum terminalType); + Optional detail(String msgIdentityCode, TerminalTypeEnum terminalType); /** * 发送代办 diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateRouterServiceImpl.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateRouterServiceImpl.java new file mode 100644 index 00000000..a1b7094c --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateRouterServiceImpl.java @@ -0,0 +1,39 @@ +package cn.axzo.msg.center.message.service.impl; + +import cn.axzo.msg.center.message.dao.MessageTemplateRouterDAO; +import cn.axzo.msg.center.message.domain.dto.RawMessageRouterDTO; +import cn.axzo.msg.center.message.service.MessageTemplateRouterService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/28 + * @version 1.0 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterService { + + private final MessageTemplateRouterDAO messageTemplateRouterDAO; + + @Override + public List queryByTemplateCode(String templateCode) { + if (StringUtils.isBlank(templateCode)) { + log.warn("the template code is blank."); + return Collections.emptyList(); + } + return messageTemplateRouterDAO.listByTemplateCode(templateCode).stream() + .map(RawMessageRouterDTO::from) + .collect(Collectors.toList()); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageServiceImpl.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageServiceImpl.java new file mode 100644 index 00000000..f2b683ec --- /dev/null +++ b/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageServiceImpl.java @@ -0,0 +1,119 @@ +package cn.axzo.msg.center.message.service.impl; + +import cn.axzo.core.utils.converter.BeanConverter; +import cn.axzo.msg.center.common.enums.LogicDeleteFlagEnum; +import cn.axzo.msg.center.common.utils.MessageRouterUtil; +import cn.axzo.msg.center.message.dao.MessageTemplateRouterDAO; +import cn.axzo.msg.center.message.dao.PendingMessageRecordDAO; +import cn.axzo.msg.center.message.domain.dto.MessageGroupNodeDTO; +import cn.axzo.msg.center.message.domain.dto.PendingMessageDTO; +import cn.axzo.msg.center.message.domain.dto.RawMessageRouterDTO; +import cn.axzo.msg.center.message.domain.param.MessageGroupNodeStatisticParam; +import cn.axzo.msg.center.message.domain.po.PendingMessageRecordPO; +import cn.axzo.msg.center.message.service.PendingMessageService; +import cn.axzo.msg.center.service.dto.MessageRouterDTO; +import cn.axzo.msg.center.service.enums.PendingMessageStateEnum; +import cn.axzo.msg.center.service.enums.TerminalTypeEnum; +import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; +import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest; +import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; +import cn.azxo.framework.common.model.Page; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/28 + * @version 1.0 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class PendingMessageServiceImpl implements PendingMessageService { + + private final PendingMessageRecordDAO pendingMessageRecordDAO; + private final MessageTemplateRouterDAO messageTemplateRouterDAO; + + @Override + public List groupStatistic(MessageGroupNodeStatisticParam param) { + // TODO: [cold_blade] 消息分类统计 + return null; + } + + @Override + public Page pageQuery(PendingMessagePageRequest request) { + // TODO: [cold_blade] 消息分页查询 + return null; + } + + @Override + public Optional detail(String msgIdentityCode, TerminalTypeEnum terminalType) { + if (StringUtils.isBlank(msgIdentityCode)) { + log.info("the param of identityCode is blank."); + return Optional.empty(); + } + return pendingMessageRecordDAO.queryByIdentityCode(msgIdentityCode).map(v -> convert(v, terminalType)); + } + + @Override + public String push(PendingMessagePushRequest request) { + // TODO: [cold_blade] 消息推送 + return null; + } + + @Override + public Boolean complete(String msgIdentityCode) { + if (StringUtils.isBlank(msgIdentityCode)) { + log.warn("the message identity code is blank."); + return false; + } + log.info("the [{}] record is updated complete.", msgIdentityCode); + return pendingMessageRecordDAO.lambdaUpdate() + .set(PendingMessageRecordPO::getState, PendingMessageStateEnum.COMPLETED) + .eq(PendingMessageRecordPO::getIdentityCode, msgIdentityCode) + .eq(PendingMessageRecordPO::getState, PendingMessageStateEnum.HAS_BEEN_SENT) + .eq(PendingMessageRecordPO::getIsDelete, LogicDeleteFlagEnum.NORMAL.getFlag()) + .update(); + } + + @Override + public Boolean revoke(String msgIdentityCode) { + if (StringUtils.isBlank(msgIdentityCode)) { + log.warn("the message identity code is blank."); + return false; + } + log.info("the [{}] record is updated retract.", msgIdentityCode); + return pendingMessageRecordDAO.lambdaUpdate() + .set(PendingMessageRecordPO::getState, PendingMessageStateEnum.RETRACT) + .eq(PendingMessageRecordPO::getIdentityCode, msgIdentityCode) + .eq(PendingMessageRecordPO::getState, PendingMessageStateEnum.HAS_BEEN_SENT) + .eq(PendingMessageRecordPO::getIsDelete, LogicDeleteFlagEnum.NORMAL.getFlag()) + .update(); + } + + private PendingMessageDTO convert(PendingMessageRecordPO pendingMessageRecord, TerminalTypeEnum terminalType) { + PendingMessageDTO pendingMessage = PendingMessageDTO.from(pendingMessageRecord); + // 从存储层获取对应模板的路由列表 + List rawRouters = messageTemplateRouterDAO + .listByTemplateCode(pendingMessageRecord.getTemplateCode()).stream() + .map(RawMessageRouterDTO::from) + .collect(Collectors.toList()); + RawMessageRouterDTO rawRouter = MessageRouterUtil.selectRouter(rawRouters, terminalType).orElse(null); + if (Objects.nonNull(rawRouter)) { + MessageRouterDTO router = BeanConverter.convert(rawRouter, MessageRouterDTO.class); + // 视情况替换原始URL中的参数变量 + MessageRouterUtil.parseRouteUrl(router, pendingMessageRecord.getRouterParams()); + pendingMessage.setRouter(router); + } + return pendingMessage; + } +} From 206f56570682b954828b093c48ed16a9e071fd48 Mon Sep 17 00:00:00 2001 From: luofu Date: Thu, 5 Oct 2023 16:30:20 +0800 Subject: [PATCH 17/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E8=AF=A6=E6=83=85&=E5=AE=8C=E6=88=90&=E6=92=A4=E5=9B=9E?= =?UTF-8?q?=E7=AD=89=E5=8A=9F=E8=83=BD=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 代办详情&完成&撤回等功能的实现 影响: 无 --- .../center/im/channel/IMChannelHandler.java | 0 .../im/channel/IMChannelHandlerFactory.java | 0 .../im/channel/handler/YouMengHandler.java | 0 .../im/domain/dto/IMSendMessageDTO.java | 1 - .../im/domain/enums/AppClientTypeEnum.java | 0 .../center/im/domain/enums/IMChannelEnum.java | 0 .../domain/enums/IMSendMessageStatusEnum.java | 0 .../event/IMSendSingleMessageEvent.java | 0 .../param/IMSendSingleMessageParam.java | 0 .../axzo/msg/center/im/service/IMService.java | 0 .../center/im/service/impl/IMServiceImpl.java | 0 .../controller/MessageTemplateController.java | 37 ++++++++ .../domain/dto/MessageGroupNodeDTO.java | 0 .../message/domain/dto/PendingMessageDTO.java | 6 +- .../domain/dto/RawMessageRouterDTO.java | 25 ++++- .../param/MessageGroupNodeStatisticParam.java | 0 .../param/MessageTemplateCreateParam.java | 90 ++++++++++++++++++ .../message/service/MessageGroupService.java | 0 .../service/MessageTemplateNewService.java | 20 ++++ .../service/MessageTemplateRouterService.java | 7 ++ .../service/PendingMessageNewService.java | 2 +- .../impl/MessageTemplateNewServiceImpl.java | 44 +++++++++ .../MessageTemplateRouterServiceImpl.java | 17 +++- .../impl/PendingMessageNewServiceImpl.java | 36 +++---- .../msg/center}/utils/DateFormatUtil.java | 2 +- .../msg/center}/utils/MessageRouterUtil.java | 3 +- .../cn/axzo/msg/center/utils/UUIDUtil.java | 31 ++++++ .../enums/PendingMessageStateEnum.java | 2 +- .../center/dal/MessageBaseTemplateDao.java | 18 ++++ .../center/dal/MessageTemplateRouterDao.java | 33 +++++++ .../center/dal/PendingMessageRecordDao.java | 31 ++++++ .../mapper/GeneralMessageRecordMapper.java | 6 +- .../mapper/MessageBaseTemplateMapper.java | 8 +- .../dal}/mapper/MessageGroupNodeMapper.java | 6 +- .../mapper/MessageTemplateGroupMapper.java | 6 +- .../mapper/MessageTemplateRouterMapper.java | 6 +- .../mapper/PendingMessageRecordMapper.java | 6 +- .../domain/entity/GeneralMessageRecord.java | 4 +- .../domain/entity/MessageBaseTemplate.java | 4 +- .../domain/entity/MessageGroupNode.java | 6 +- .../domain/entity/MessageTemplateGroup.java | 4 +- .../domain/entity/MessageTemplateRouter.java | 4 +- .../domain/entity/PendingMessageRecord.java | 9 +- msg-center-new/pom.xml | 95 ------------------- .../common/enums/LogicDeleteFlagEnum.java | 23 ----- .../message/dao/MessageTemplateRouterDAO.java | 24 ----- .../message/dao/PendingMessageRecordDAO.java | 23 ----- .../impl/MessageTemplateRouterDAOImpl.java | 36 ------- .../dao/impl/PendingMessageRecordDAOImpl.java | 36 ------- pom.xml | 1 - .../axzo/msg/center/MsgCenterApplication.java | 2 +- 51 files changed, 409 insertions(+), 305 deletions(-) rename {msg-center-new => inside-notices}/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandler.java (100%) rename {msg-center-new => inside-notices}/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandlerFactory.java (100%) rename {msg-center-new => inside-notices}/src/main/java/cn/axzo/msg/center/im/channel/handler/YouMengHandler.java (100%) rename {msg-center-new => inside-notices}/src/main/java/cn/axzo/msg/center/im/domain/dto/IMSendMessageDTO.java (95%) rename {msg-center-new => inside-notices}/src/main/java/cn/axzo/msg/center/im/domain/enums/AppClientTypeEnum.java (100%) rename {msg-center-new => inside-notices}/src/main/java/cn/axzo/msg/center/im/domain/enums/IMChannelEnum.java (100%) rename {msg-center-new => inside-notices}/src/main/java/cn/axzo/msg/center/im/domain/enums/IMSendMessageStatusEnum.java (100%) rename {msg-center-new => inside-notices}/src/main/java/cn/axzo/msg/center/im/domain/event/IMSendSingleMessageEvent.java (100%) rename {msg-center-new => inside-notices}/src/main/java/cn/axzo/msg/center/im/domain/param/IMSendSingleMessageParam.java (100%) rename {msg-center-new => inside-notices}/src/main/java/cn/axzo/msg/center/im/service/IMService.java (100%) rename {msg-center-new => inside-notices}/src/main/java/cn/axzo/msg/center/im/service/impl/IMServiceImpl.java (100%) create mode 100644 inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageTemplateController.java rename {msg-center-new => inside-notices}/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageGroupNodeDTO.java (100%) rename {msg-center-new => inside-notices}/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java (93%) rename {msg-center-new => inside-notices}/src/main/java/cn/axzo/msg/center/message/domain/dto/RawMessageRouterDTO.java (67%) rename {msg-center-new => inside-notices}/src/main/java/cn/axzo/msg/center/message/domain/param/MessageGroupNodeStatisticParam.java (100%) create mode 100644 inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/MessageTemplateCreateParam.java rename {msg-center-new => inside-notices}/src/main/java/cn/axzo/msg/center/message/service/MessageGroupService.java (100%) create mode 100644 inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java rename {msg-center-new => inside-notices}/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateRouterService.java (77%) rename msg-center-new/src/main/java/cn/axzo/msg/center/message/service/PendingMessageService.java => inside-notices/src/main/java/cn/axzo/msg/center/message/service/PendingMessageNewService.java (97%) create mode 100644 inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java rename {msg-center-new => inside-notices}/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateRouterServiceImpl.java (62%) rename msg-center-new/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageServiceImpl.java => inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java (72%) rename {msg-center-new/src/main/java/cn/axzo/msg/center/common => inside-notices/src/main/java/cn/axzo/msg/center}/utils/DateFormatUtil.java (92%) rename {msg-center-new/src/main/java/cn/axzo/msg/center/common => inside-notices/src/main/java/cn/axzo/msg/center}/utils/MessageRouterUtil.java (97%) create mode 100644 inside-notices/src/main/java/cn/axzo/msg/center/utils/UUIDUtil.java create mode 100644 msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageBaseTemplateDao.java create mode 100644 msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageTemplateRouterDao.java create mode 100644 msg-center-dal/src/main/java/cn/axzo/msg/center/dal/PendingMessageRecordDao.java rename {msg-center-new/src/main/java/cn/axzo/msg/center/message => msg-center-dal/src/main/java/cn/axzo/msg/center/dal}/mapper/GeneralMessageRecordMapper.java (63%) rename {msg-center-new/src/main/java/cn/axzo/msg/center/message => msg-center-dal/src/main/java/cn/axzo/msg/center/dal}/mapper/MessageBaseTemplateMapper.java (57%) rename {msg-center-new/src/main/java/cn/axzo/msg/center/message => msg-center-dal/src/main/java/cn/axzo/msg/center/dal}/mapper/MessageGroupNodeMapper.java (65%) rename {msg-center-new/src/main/java/cn/axzo/msg/center/message => msg-center-dal/src/main/java/cn/axzo/msg/center/dal}/mapper/MessageTemplateGroupMapper.java (63%) rename {msg-center-new/src/main/java/cn/axzo/msg/center/message => msg-center-dal/src/main/java/cn/axzo/msg/center/dal}/mapper/MessageTemplateRouterMapper.java (62%) rename {msg-center-new/src/main/java/cn/axzo/msg/center/message => msg-center-dal/src/main/java/cn/axzo/msg/center/dal}/mapper/PendingMessageRecordMapper.java (63%) rename msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/GeneralMessageRecordPO.java => msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/GeneralMessageRecord.java (92%) rename msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageBaseTemplatePO.java => msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageBaseTemplate.java (89%) rename msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageGroupNodePO.java => msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageGroupNode.java (86%) rename msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageTemplateGroupPO.java => msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateGroup.java (82%) rename msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageTemplateRouterPO.java => msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateRouter.java (87%) rename msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/PendingMessageRecordPO.java => msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/PendingMessageRecord.java (90%) delete mode 100644 msg-center-new/pom.xml delete mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/common/enums/LogicDeleteFlagEnum.java delete mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/MessageTemplateRouterDAO.java delete mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/PendingMessageRecordDAO.java delete mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/impl/MessageTemplateRouterDAOImpl.java delete mode 100644 msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/impl/PendingMessageRecordDAOImpl.java diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandler.java b/inside-notices/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandler.java similarity index 100% rename from msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandler.java rename to inside-notices/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandler.java diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandlerFactory.java b/inside-notices/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandlerFactory.java similarity index 100% rename from msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandlerFactory.java rename to inside-notices/src/main/java/cn/axzo/msg/center/im/channel/IMChannelHandlerFactory.java diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/handler/YouMengHandler.java b/inside-notices/src/main/java/cn/axzo/msg/center/im/channel/handler/YouMengHandler.java similarity index 100% rename from msg-center-new/src/main/java/cn/axzo/msg/center/im/channel/handler/YouMengHandler.java rename to inside-notices/src/main/java/cn/axzo/msg/center/im/channel/handler/YouMengHandler.java diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/dto/IMSendMessageDTO.java b/inside-notices/src/main/java/cn/axzo/msg/center/im/domain/dto/IMSendMessageDTO.java similarity index 95% rename from msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/dto/IMSendMessageDTO.java rename to inside-notices/src/main/java/cn/axzo/msg/center/im/domain/dto/IMSendMessageDTO.java index 839cce5b..c9ed0216 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/dto/IMSendMessageDTO.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/im/domain/dto/IMSendMessageDTO.java @@ -1,6 +1,5 @@ package cn.axzo.msg.center.im.domain.dto; -import cn.axzo.msg.center.im.domain.param.IMSendSingleMessageParam; import cn.axzo.msg.center.service.dto.MessageRouterDTO; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/enums/AppClientTypeEnum.java b/inside-notices/src/main/java/cn/axzo/msg/center/im/domain/enums/AppClientTypeEnum.java similarity index 100% rename from msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/enums/AppClientTypeEnum.java rename to inside-notices/src/main/java/cn/axzo/msg/center/im/domain/enums/AppClientTypeEnum.java diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/enums/IMChannelEnum.java b/inside-notices/src/main/java/cn/axzo/msg/center/im/domain/enums/IMChannelEnum.java similarity index 100% rename from msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/enums/IMChannelEnum.java rename to inside-notices/src/main/java/cn/axzo/msg/center/im/domain/enums/IMChannelEnum.java diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/enums/IMSendMessageStatusEnum.java b/inside-notices/src/main/java/cn/axzo/msg/center/im/domain/enums/IMSendMessageStatusEnum.java similarity index 100% rename from msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/enums/IMSendMessageStatusEnum.java rename to inside-notices/src/main/java/cn/axzo/msg/center/im/domain/enums/IMSendMessageStatusEnum.java diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/event/IMSendSingleMessageEvent.java b/inside-notices/src/main/java/cn/axzo/msg/center/im/domain/event/IMSendSingleMessageEvent.java similarity index 100% rename from msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/event/IMSendSingleMessageEvent.java rename to inside-notices/src/main/java/cn/axzo/msg/center/im/domain/event/IMSendSingleMessageEvent.java diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/param/IMSendSingleMessageParam.java b/inside-notices/src/main/java/cn/axzo/msg/center/im/domain/param/IMSendSingleMessageParam.java similarity index 100% rename from msg-center-new/src/main/java/cn/axzo/msg/center/im/domain/param/IMSendSingleMessageParam.java rename to inside-notices/src/main/java/cn/axzo/msg/center/im/domain/param/IMSendSingleMessageParam.java diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/service/IMService.java b/inside-notices/src/main/java/cn/axzo/msg/center/im/service/IMService.java similarity index 100% rename from msg-center-new/src/main/java/cn/axzo/msg/center/im/service/IMService.java rename to inside-notices/src/main/java/cn/axzo/msg/center/im/service/IMService.java diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/im/service/impl/IMServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/im/service/impl/IMServiceImpl.java similarity index 100% rename from msg-center-new/src/main/java/cn/axzo/msg/center/im/service/impl/IMServiceImpl.java rename to inside-notices/src/main/java/cn/axzo/msg/center/im/service/impl/IMServiceImpl.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 new file mode 100644 index 00000000..05b7c8e8 --- /dev/null +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageTemplateController.java @@ -0,0 +1,37 @@ +package cn.axzo.msg.center.message.controller; + +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.azxo.framework.common.model.CommonResponse; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.RestController; + +/** + * 消息模板管理 + * + * @author cold_blade + * @date 2023/10/5 + * @version 1.0 + */ +@RestController +@RequiredArgsConstructor +public class MessageTemplateController implements MessageTemplateClient { + + private final MessageTemplateNewService messageTemplateNewService; + + @Override + public CommonResponse addTemplate(MessageTemplateCreateRequest request) { + MessageTemplateCreateParam param = MessageTemplateCreateParam.from(request); + messageTemplateNewService.createTemplate(param); + return CommonResponse.success(param.getTemplateCode()); + } + + @Override + public CommonResponse batchMove(MessageTemplateMoveToRequest request) { + // TODO:[cold_blade] + return null; + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageGroupNodeDTO.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageGroupNodeDTO.java similarity index 100% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageGroupNodeDTO.java rename to inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageGroupNodeDTO.java diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java similarity index 93% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java rename to inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java index c23f1621..fba5faea 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java @@ -1,10 +1,10 @@ package cn.axzo.msg.center.message.domain.dto; -import cn.axzo.msg.center.common.utils.DateFormatUtil; -import cn.axzo.msg.center.message.domain.po.PendingMessageRecordPO; +import cn.axzo.msg.center.domain.entity.PendingMessageRecord; import cn.axzo.msg.center.service.dto.IdentityDTO; import cn.axzo.msg.center.service.dto.MessageRouterDTO; import cn.axzo.msg.center.service.dto.PersonDTO; +import cn.axzo.msg.center.utils.DateFormatUtil; import com.alibaba.fastjson.JSON; import lombok.AllArgsConstructor; import lombok.Builder; @@ -76,7 +76,7 @@ public class PendingMessageDTO implements Serializable { */ private MessageRouterDTO router; - public static PendingMessageDTO from(PendingMessageRecordPO pendingMessageRecord) { + public static PendingMessageDTO from(PendingMessageRecord pendingMessageRecord) { // 代办发起者信息 PersonDTO promoter = PersonDTO.builder() .id(pendingMessageRecord.getPromoterPersonId()) diff --git a/msg-center-new/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 similarity index 67% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/dto/RawMessageRouterDTO.java rename to inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/RawMessageRouterDTO.java index 6598c5b3..1c8ea27a 100644 --- a/msg-center-new/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,6 +1,7 @@ package cn.axzo.msg.center.message.domain.dto; -import cn.axzo.msg.center.message.domain.po.MessageTemplateRouterPO; +import cn.axzo.msg.center.domain.entity.MessageTemplateRouter; +import cn.axzo.msg.center.service.dto.MessageRouterDTO; import cn.axzo.msg.center.service.enums.RouterCategoryEnum; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import com.alibaba.fastjson.JSON; @@ -57,7 +58,7 @@ public class RawMessageRouterDTO implements Serializable { */ private String templateCode; - public static RawMessageRouterDTO from(MessageTemplateRouterPO msgTemplateRouter) { + public static RawMessageRouterDTO from(MessageTemplateRouter msgTemplateRouter) { return RawMessageRouterDTO.builder() .desc(msgTemplateRouter.getName()) .url(msgTemplateRouter.getUrl()) @@ -67,6 +68,26 @@ public class RawMessageRouterDTO implements Serializable { .build(); } + public static RawMessageRouterDTO from(MessageRouterDTO router, String templateCode) { + return RawMessageRouterDTO.builder() + .desc(router.getDesc()) + .url(router.getUrl()) + .category(router.getCategory()) + .terminalType(router.getTerminalType()) + .templateCode(templateCode) + .build(); + } + + public MessageTemplateRouter toMessageTemplateRouter() { + MessageTemplateRouter router = new MessageTemplateRouter(); + router.setName(this.desc); + router.setUrl(this.url); + router.setCategory(this.category); + router.setTerminalType(this.terminalType); + router.setTemplateCode(this.templateCode); + return router; + } + @Override public String toString() { return JSON.toJSONString(this); diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/param/MessageGroupNodeStatisticParam.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/MessageGroupNodeStatisticParam.java similarity index 100% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/param/MessageGroupNodeStatisticParam.java rename to inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/MessageGroupNodeStatisticParam.java 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 new file mode 100644 index 00000000..f99c1cbe --- /dev/null +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/MessageTemplateCreateParam.java @@ -0,0 +1,90 @@ +package cn.axzo.msg.center.message.domain.param; + +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; +import cn.axzo.msg.center.utils.UUIDUtil; +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/10/5 + * @version 1.0 + */ +@Setter +@Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MessageTemplateCreateParam implements Serializable { + + private static final long serialVersionUID = 6657624182580261353L; + + /** + * 模板名称 + */ + private String templateName; + /** + * 系统自动生成的模板code + */ + private String templateCode; + /** + * 所属消息类型 + * GENERAL_MESSAGE: 普通消息 + * PENDING_MESSAGE: 待办消息 + */ + private MessageCategoryEnum msgCategory; + /** + * 模板标题 + */ + private String title; + /** + * 模板类容 + */ + private String content; + /** + * 卡片信息,json字串 + */ + private String cardContent; + /** + * 模板icon + */ + private String icon; + /** + * 操作者自然人id + */ + private Long operatorId; + /** + * 路由列表 + */ + private List routers; + + public static MessageTemplateCreateParam from(MessageTemplateCreateRequest request) { + return MessageTemplateCreateParam.builder() + .templateName(request.getTemplateName()) + .templateCode(UUIDUtil.uuidString()) + .msgCategory(request.getCategory()) + .title(request.getMsgTitle()) + .content(request.getMsgContent()) + .cardContent(request.getMsgCardInfo()) + .icon(request.getMsgIcon()) + .operatorId(request.getOperatorId()) + .routers(request.getRouters()) + .build(); + } + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/MessageGroupService.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageGroupService.java similarity index 100% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/service/MessageGroupService.java rename to inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageGroupService.java diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java new file mode 100644 index 00000000..c791237e --- /dev/null +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java @@ -0,0 +1,20 @@ +package cn.axzo.msg.center.message.service; + +import cn.axzo.msg.center.message.domain.param.MessageTemplateCreateParam; + +/** + * @description + * 消息模板管理 + * @author cold_blade + * @date 2023/10/5 + * @version 1.0 + */ +public interface MessageTemplateNewService { + + /** + * 创建模板 + * + * @param param 模板内容参数 + */ + void createTemplate(MessageTemplateCreateParam param); +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateRouterService.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateRouterService.java similarity index 77% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateRouterService.java rename to inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateRouterService.java index f3b11f75..7a265278 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateRouterService.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateRouterService.java @@ -21,4 +21,11 @@ public interface MessageTemplateRouterService { * @return 路由列表 */ List queryByTemplateCode(String templateCode); + + /** + * 批量插入模板路由 + * + * @param routers 路由列表 + */ + void batchInsert(List routers); } diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/PendingMessageService.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/PendingMessageNewService.java similarity index 97% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/service/PendingMessageService.java rename to inside-notices/src/main/java/cn/axzo/msg/center/message/service/PendingMessageNewService.java index 3b5816ab..f0ad1152 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/PendingMessageService.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/PendingMessageNewService.java @@ -19,7 +19,7 @@ import java.util.Optional; * @date 2023/9/20 * @version 1.0 */ -public interface PendingMessageService { +public interface PendingMessageNewService { List groupStatistic(MessageGroupNodeStatisticParam param); diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java new file mode 100644 index 00000000..46191763 --- /dev/null +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java @@ -0,0 +1,44 @@ +package cn.axzo.msg.center.message.service.impl; + +import cn.axzo.core.utils.converter.BeanConverter; +import cn.axzo.msg.center.dal.MessageBaseTemplateDao; +import cn.axzo.msg.center.domain.entity.MessageBaseTemplate; +import cn.axzo.msg.center.message.domain.dto.RawMessageRouterDTO; +import cn.axzo.msg.center.message.domain.param.MessageTemplateCreateParam; +import cn.axzo.msg.center.message.service.MessageTemplateNewService; +import cn.axzo.msg.center.message.service.MessageTemplateRouterService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @description + * + * @author cold_blade + * @date 2023/10/5 + * @version 1.0 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class MessageTemplateNewServiceImpl implements MessageTemplateNewService { + + private final MessageBaseTemplateDao messageBaseTemplateDao; + private final MessageTemplateRouterService messageTemplateRouterService; + + @Override + public void createTemplate(MessageTemplateCreateParam param) { + MessageBaseTemplate template = BeanConverter.convert(param, MessageBaseTemplate.class); + messageBaseTemplateDao.save(template); + if (CollectionUtils.isNotEmpty(param.getRouters())) { + List routers = param.getRouters().stream() + .map(e -> RawMessageRouterDTO.from(e, param.getTemplateCode())) + .collect(Collectors.toList()); + messageTemplateRouterService.batchInsert(routers); + } + } +} diff --git a/msg-center-new/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 similarity index 62% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateRouterServiceImpl.java rename to inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateRouterServiceImpl.java index a1b7094c..666ed1b2 100644 --- a/msg-center-new/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 @@ -1,10 +1,12 @@ package cn.axzo.msg.center.message.service.impl; -import cn.axzo.msg.center.message.dao.MessageTemplateRouterDAO; +import cn.axzo.msg.center.dal.MessageTemplateRouterDao; +import cn.axzo.msg.center.domain.entity.MessageTemplateRouter; import cn.axzo.msg.center.message.domain.dto.RawMessageRouterDTO; import cn.axzo.msg.center.message.service.MessageTemplateRouterService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -24,7 +26,7 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterService { - private final MessageTemplateRouterDAO messageTemplateRouterDAO; + private final MessageTemplateRouterDao messageTemplateRouterDAO; @Override public List queryByTemplateCode(String templateCode) { @@ -36,4 +38,15 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe .map(RawMessageRouterDTO::from) .collect(Collectors.toList()); } + + @Override + public void batchInsert(List routers) { + if (CollectionUtils.isEmpty(routers)) { + return; + } + List messageTemplateRouters = routers.stream() + .map(RawMessageRouterDTO::toMessageTemplateRouter) + .collect(Collectors.toList()); + messageTemplateRouterDAO.saveBatch(messageTemplateRouters); + } } diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java similarity index 72% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageServiceImpl.java rename to inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java index f2b683ec..a296d4a6 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageServiceImpl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java @@ -1,22 +1,22 @@ package cn.axzo.msg.center.message.service.impl; import cn.axzo.core.utils.converter.BeanConverter; -import cn.axzo.msg.center.common.enums.LogicDeleteFlagEnum; -import cn.axzo.msg.center.common.utils.MessageRouterUtil; -import cn.axzo.msg.center.message.dao.MessageTemplateRouterDAO; -import cn.axzo.msg.center.message.dao.PendingMessageRecordDAO; +import cn.axzo.msg.center.common.enums.TableIsDeleteEnum; +import cn.axzo.msg.center.dal.MessageTemplateRouterDao; +import cn.axzo.msg.center.dal.PendingMessageRecordDao; +import cn.axzo.msg.center.domain.entity.PendingMessageRecord; import cn.axzo.msg.center.message.domain.dto.MessageGroupNodeDTO; import cn.axzo.msg.center.message.domain.dto.PendingMessageDTO; import cn.axzo.msg.center.message.domain.dto.RawMessageRouterDTO; import cn.axzo.msg.center.message.domain.param.MessageGroupNodeStatisticParam; -import cn.axzo.msg.center.message.domain.po.PendingMessageRecordPO; -import cn.axzo.msg.center.message.service.PendingMessageService; +import cn.axzo.msg.center.message.service.PendingMessageNewService; import cn.axzo.msg.center.service.dto.MessageRouterDTO; import cn.axzo.msg.center.service.enums.PendingMessageStateEnum; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest; import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; +import cn.axzo.msg.center.utils.MessageRouterUtil; import cn.azxo.framework.common.model.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -38,10 +38,10 @@ import java.util.stream.Collectors; @Slf4j @Service @RequiredArgsConstructor -public class PendingMessageServiceImpl implements PendingMessageService { +public class PendingMessageNewServiceImpl implements PendingMessageNewService { - private final PendingMessageRecordDAO pendingMessageRecordDAO; - private final MessageTemplateRouterDAO messageTemplateRouterDAO; + private final PendingMessageRecordDao pendingMessageRecordDAO; + private final MessageTemplateRouterDao messageTemplateRouterDAO; @Override public List groupStatistic(MessageGroupNodeStatisticParam param) { @@ -78,10 +78,10 @@ public class PendingMessageServiceImpl implements PendingMessageService { } log.info("the [{}] record is updated complete.", msgIdentityCode); return pendingMessageRecordDAO.lambdaUpdate() - .set(PendingMessageRecordPO::getState, PendingMessageStateEnum.COMPLETED) - .eq(PendingMessageRecordPO::getIdentityCode, msgIdentityCode) - .eq(PendingMessageRecordPO::getState, PendingMessageStateEnum.HAS_BEEN_SENT) - .eq(PendingMessageRecordPO::getIsDelete, LogicDeleteFlagEnum.NORMAL.getFlag()) + .set(PendingMessageRecord::getState, PendingMessageStateEnum.COMPLETED) + .eq(PendingMessageRecord::getIdentityCode, msgIdentityCode) + .eq(PendingMessageRecord::getState, PendingMessageStateEnum.HAS_BEEN_SENT) + .eq(PendingMessageRecord::getIsDelete, TableIsDeleteEnum.NORMAL.value) .update(); } @@ -93,14 +93,14 @@ public class PendingMessageServiceImpl implements PendingMessageService { } log.info("the [{}] record is updated retract.", msgIdentityCode); return pendingMessageRecordDAO.lambdaUpdate() - .set(PendingMessageRecordPO::getState, PendingMessageStateEnum.RETRACT) - .eq(PendingMessageRecordPO::getIdentityCode, msgIdentityCode) - .eq(PendingMessageRecordPO::getState, PendingMessageStateEnum.HAS_BEEN_SENT) - .eq(PendingMessageRecordPO::getIsDelete, LogicDeleteFlagEnum.NORMAL.getFlag()) + .set(PendingMessageRecord::getState, PendingMessageStateEnum.RETRACT) + .eq(PendingMessageRecord::getIdentityCode, msgIdentityCode) + .eq(PendingMessageRecord::getState, PendingMessageStateEnum.HAS_BEEN_SENT) + .eq(PendingMessageRecord::getIsDelete, TableIsDeleteEnum.NORMAL.value) .update(); } - private PendingMessageDTO convert(PendingMessageRecordPO pendingMessageRecord, TerminalTypeEnum terminalType) { + private PendingMessageDTO convert(PendingMessageRecord pendingMessageRecord, TerminalTypeEnum terminalType) { PendingMessageDTO pendingMessage = PendingMessageDTO.from(pendingMessageRecord); // 从存储层获取对应模板的路由列表 List rawRouters = messageTemplateRouterDAO diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/common/utils/DateFormatUtil.java b/inside-notices/src/main/java/cn/axzo/msg/center/utils/DateFormatUtil.java similarity index 92% rename from msg-center-new/src/main/java/cn/axzo/msg/center/common/utils/DateFormatUtil.java rename to inside-notices/src/main/java/cn/axzo/msg/center/utils/DateFormatUtil.java index 4755a41d..c8b44723 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/common/utils/DateFormatUtil.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/utils/DateFormatUtil.java @@ -1,4 +1,4 @@ -package cn.axzo.msg.center.common.utils; +package cn.axzo.msg.center.utils; import lombok.AccessLevel; import lombok.NoArgsConstructor; diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/common/utils/MessageRouterUtil.java b/inside-notices/src/main/java/cn/axzo/msg/center/utils/MessageRouterUtil.java similarity index 97% rename from msg-center-new/src/main/java/cn/axzo/msg/center/common/utils/MessageRouterUtil.java rename to inside-notices/src/main/java/cn/axzo/msg/center/utils/MessageRouterUtil.java index 43ef3d53..3843d8f1 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/common/utils/MessageRouterUtil.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/utils/MessageRouterUtil.java @@ -1,5 +1,6 @@ -package cn.axzo.msg.center.common.utils; +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.enums.RouterCategoryEnum; diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/utils/UUIDUtil.java b/inside-notices/src/main/java/cn/axzo/msg/center/utils/UUIDUtil.java new file mode 100644 index 00000000..8c35d249 --- /dev/null +++ b/inside-notices/src/main/java/cn/axzo/msg/center/utils/UUIDUtil.java @@ -0,0 +1,31 @@ +package cn.axzo.msg.center.utils; + +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +import java.util.UUID; + +/** + * UUID生成器 + * + * @author cold_blade + * @date 2023/10/5 + * @version 1.0 + */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public final class UUIDUtil { + + public static String uuidString() { + String str = UUID.randomUUID().toString(); + return str.replaceAll("-", ""); + } + + public static String uuidRawString() { + return UUID.randomUUID().toString(); + } + + public static void main(String[] arv) { + //TODO:[cold_blade] + System.out.println(uuidString()); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PendingMessageStateEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PendingMessageStateEnum.java index b6d63cce..ec90f79d 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PendingMessageStateEnum.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PendingMessageStateEnum.java @@ -16,7 +16,7 @@ import lombok.Getter; public enum PendingMessageStateEnum { UNSENT(1, "未发送"), - HAS_BEEN_SENT(2, "已发送"), + HAS_BEEN_SENT(2, "代办"), COMPLETED(5, "已办"), RETRACT(6, "已撤回"), DELETED(7, "已删除"), diff --git a/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageBaseTemplateDao.java b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageBaseTemplateDao.java new file mode 100644 index 00000000..dc21f689 --- /dev/null +++ b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageBaseTemplateDao.java @@ -0,0 +1,18 @@ +package cn.axzo.msg.center.dal; + +import cn.axzo.msg.center.dal.mapper.MessageBaseTemplateMapper; +import cn.axzo.msg.center.domain.entity.MessageBaseTemplate; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @description + * @author cold_blade + * @date 2023/10/5 + * @version 1.0 + */ +@Slf4j +@Component +public class MessageBaseTemplateDao extends ServiceImpl { +} diff --git a/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageTemplateRouterDao.java b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageTemplateRouterDao.java new file mode 100644 index 00000000..1d5f4a2c --- /dev/null +++ b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageTemplateRouterDao.java @@ -0,0 +1,33 @@ +package cn.axzo.msg.center.dal; + +import cn.axzo.msg.center.dal.mapper.MessageTemplateRouterMapper; +import cn.axzo.msg.center.domain.entity.MessageTemplateRouter; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Collections; +import java.util.List; + +/** + * @description + * + * @author cold_blade + * @date 2023/9/28 + * @version 1.0 + */ +@Slf4j +@Component +public class MessageTemplateRouterDao extends ServiceImpl { + + /** + * 通过模板编码获取对应的路由列表 + * + * @param templateCode 模板编码 + * @return 路由列表 + */ + public List listByTemplateCode(String templateCode) { + // TODO: [cold_blade] + return Collections.emptyList(); + } +} diff --git a/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/PendingMessageRecordDao.java b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/PendingMessageRecordDao.java new file mode 100644 index 00000000..f8c84f15 --- /dev/null +++ b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/PendingMessageRecordDao.java @@ -0,0 +1,31 @@ +package cn.axzo.msg.center.dal; + +import cn.axzo.msg.center.dal.mapper.PendingMessageRecordMapper; +import cn.axzo.msg.center.domain.entity.PendingMessageRecord; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Optional; + +/** + * @description + * @author cold_blade + * @date 2023/9/28 + * @version 1.0 + */ +@Slf4j +@Component +public class PendingMessageRecordDao extends ServiceImpl { + + /** + * 通过消息唯一标识查询对应的消息记录 + * + * @param msgIdentityCode 消息唯一标识 + * @return 消息记录 + */ + public Optional queryByIdentityCode(String msgIdentityCode) { + // TODO: [cold_blade] + return Optional.empty(); + } +} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/GeneralMessageRecordMapper.java b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/GeneralMessageRecordMapper.java similarity index 63% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/GeneralMessageRecordMapper.java rename to msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/GeneralMessageRecordMapper.java index b9b94663..0fa04068 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/GeneralMessageRecordMapper.java +++ b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/GeneralMessageRecordMapper.java @@ -1,6 +1,6 @@ -package cn.axzo.msg.center.message.mapper; +package cn.axzo.msg.center.dal.mapper; -import cn.axzo.msg.center.message.domain.po.GeneralMessageRecordPO; +import cn.axzo.msg.center.domain.entity.GeneralMessageRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** @@ -10,5 +10,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @date 2023/9/20 * @version 1.0 */ -public interface GeneralMessageRecordMapper extends BaseMapper { +public interface GeneralMessageRecordMapper extends BaseMapper { } diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageBaseTemplateMapper.java b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/MessageBaseTemplateMapper.java similarity index 57% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageBaseTemplateMapper.java rename to msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/MessageBaseTemplateMapper.java index 54f31b37..5937e5bb 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageBaseTemplateMapper.java +++ b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/MessageBaseTemplateMapper.java @@ -1,7 +1,8 @@ -package cn.axzo.msg.center.message.mapper; +package cn.axzo.msg.center.dal.mapper; -import cn.axzo.msg.center.message.domain.po.MessageBaseTemplatePO; +import cn.axzo.msg.center.domain.entity.MessageBaseTemplate; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; /** * @description @@ -10,5 +11,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @date 2023/9/20 * @version 1.0 */ -public interface MessageBaseTemplateMapper extends BaseMapper { +@Mapper +public interface MessageBaseTemplateMapper extends BaseMapper { } diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageGroupNodeMapper.java b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/MessageGroupNodeMapper.java similarity index 65% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageGroupNodeMapper.java rename to msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/MessageGroupNodeMapper.java index 729ceef2..c02a23d7 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageGroupNodeMapper.java +++ b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/MessageGroupNodeMapper.java @@ -1,6 +1,6 @@ -package cn.axzo.msg.center.message.mapper; +package cn.axzo.msg.center.dal.mapper; -import cn.axzo.msg.center.message.domain.po.MessageGroupNodePO; +import cn.axzo.msg.center.domain.entity.MessageGroupNode; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** @@ -10,5 +10,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @date 2023/9/20 * @version 1.0 */ -public interface MessageGroupNodeMapper extends BaseMapper { +public interface MessageGroupNodeMapper extends BaseMapper { } diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageTemplateGroupMapper.java b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/MessageTemplateGroupMapper.java similarity index 63% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageTemplateGroupMapper.java rename to msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/MessageTemplateGroupMapper.java index 01e716d3..b01ef351 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageTemplateGroupMapper.java +++ b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/MessageTemplateGroupMapper.java @@ -1,6 +1,6 @@ -package cn.axzo.msg.center.message.mapper; +package cn.axzo.msg.center.dal.mapper; -import cn.axzo.msg.center.message.domain.po.MessageTemplateGroupPO; +import cn.axzo.msg.center.domain.entity.MessageTemplateGroup; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** @@ -10,5 +10,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @date 2023/9/20 * @version 1.0 */ -public interface MessageTemplateGroupMapper extends BaseMapper { +public interface MessageTemplateGroupMapper extends BaseMapper { } diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageTemplateRouterMapper.java b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/MessageTemplateRouterMapper.java similarity index 62% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageTemplateRouterMapper.java rename to msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/MessageTemplateRouterMapper.java index e64b1e25..da05d77d 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/MessageTemplateRouterMapper.java +++ b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/MessageTemplateRouterMapper.java @@ -1,6 +1,6 @@ -package cn.axzo.msg.center.message.mapper; +package cn.axzo.msg.center.dal.mapper; -import cn.axzo.msg.center.message.domain.po.MessageTemplateRouterPO; +import cn.axzo.msg.center.domain.entity.MessageTemplateRouter; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** @@ -10,5 +10,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @date 2023/9/20 * @version 1.0 */ -public interface MessageTemplateRouterMapper extends BaseMapper { +public interface MessageTemplateRouterMapper extends BaseMapper { } diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/PendingMessageRecordMapper.java b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/PendingMessageRecordMapper.java similarity index 63% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/PendingMessageRecordMapper.java rename to msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/PendingMessageRecordMapper.java index 973e60e5..54d10b5c 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/mapper/PendingMessageRecordMapper.java +++ b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/PendingMessageRecordMapper.java @@ -1,6 +1,6 @@ -package cn.axzo.msg.center.message.mapper; +package cn.axzo.msg.center.dal.mapper; -import cn.axzo.msg.center.message.domain.po.PendingMessageRecordPO; +import cn.axzo.msg.center.domain.entity.PendingMessageRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** @@ -10,5 +10,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @date 2023/9/20 * @version 1.0 */ -public interface PendingMessageRecordMapper extends BaseMapper { +public interface PendingMessageRecordMapper extends BaseMapper { } diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/GeneralMessageRecordPO.java b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/GeneralMessageRecord.java similarity index 92% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/GeneralMessageRecordPO.java rename to msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/GeneralMessageRecord.java index ce70dc36..b61b1195 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/GeneralMessageRecordPO.java +++ b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/GeneralMessageRecord.java @@ -1,4 +1,4 @@ -package cn.axzo.msg.center.message.domain.po; +package cn.axzo.msg.center.domain.entity; import cn.axzo.core.persistence.BaseEntity; import cn.axzo.msg.center.service.enums.GeneralMessageStateEnum; @@ -21,7 +21,7 @@ import java.io.Serializable; @Setter @Getter @TableName("general_message_record") -public class GeneralMessageRecordPO extends BaseEntity implements Serializable { +public class GeneralMessageRecord extends BaseEntity implements Serializable { private static final long serialVersionUID = -1271402884501451185L; diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageBaseTemplatePO.java b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageBaseTemplate.java similarity index 89% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageBaseTemplatePO.java rename to msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageBaseTemplate.java index 1456107b..9b282f8e 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageBaseTemplatePO.java +++ b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageBaseTemplate.java @@ -1,4 +1,4 @@ -package cn.axzo.msg.center.message.domain.po; +package cn.axzo.msg.center.domain.entity; import cn.axzo.core.persistence.BaseEntity; import cn.axzo.msg.center.service.enums.MessageCategoryEnum; @@ -19,7 +19,7 @@ import java.io.Serializable; @Setter @Getter @TableName("message_base_template") -public class MessageBaseTemplatePO extends BaseEntity implements Serializable { +public class MessageBaseTemplate extends BaseEntity implements Serializable { private static final long serialVersionUID = -880409106378455813L; diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageGroupNodePO.java b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageGroupNode.java similarity index 86% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageGroupNodePO.java rename to msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageGroupNode.java index 7545cc20..f535c45c 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageGroupNodePO.java +++ b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageGroupNode.java @@ -1,4 +1,4 @@ -package cn.axzo.msg.center.message.domain.po; +package cn.axzo.msg.center.domain.entity; import cn.axzo.core.persistence.BaseEntity; import cn.axzo.msg.center.service.enums.MessageGroupNodeCategoryEnum; @@ -18,7 +18,7 @@ import java.io.Serializable; */ @Setter @Getter -public class MessageGroupNodePO extends BaseEntity implements Serializable { +public class MessageGroupNode extends BaseEntity implements Serializable { private static final long serialVersionUID = -4536503805143925884L; @@ -27,7 +27,7 @@ public class MessageGroupNodePO extends BaseEntity implement */ private String name; /** - * 模板分组结点名称code + * 模板分组结点code */ private String code; /** diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageTemplateGroupPO.java b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateGroup.java similarity index 82% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageTemplateGroupPO.java rename to msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateGroup.java index 6d5bcf90..f3b27c47 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageTemplateGroupPO.java +++ b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateGroup.java @@ -1,4 +1,4 @@ -package cn.axzo.msg.center.message.domain.po; +package cn.axzo.msg.center.domain.entity; import cn.axzo.core.persistence.BaseEntity; import com.alibaba.fastjson.JSON; @@ -19,7 +19,7 @@ import java.io.Serializable; @Setter @Getter @TableName("message_template_group") -public class MessageTemplateGroupPO extends BaseEntity implements Serializable { +public class MessageTemplateGroup extends BaseEntity implements Serializable { private static final long serialVersionUID = 3902204750978588588L; diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageTemplateRouterPO.java b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateRouter.java similarity index 87% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageTemplateRouterPO.java rename to msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateRouter.java index 746e4d14..b4ea388b 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/MessageTemplateRouterPO.java +++ b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateRouter.java @@ -1,4 +1,4 @@ -package cn.axzo.msg.center.message.domain.po; +package cn.axzo.msg.center.domain.entity; import cn.axzo.core.persistence.BaseEntity; import cn.axzo.msg.center.service.enums.RouterCategoryEnum; @@ -20,7 +20,7 @@ import java.io.Serializable; @Setter @Getter @TableName("message_template_router") -public class MessageTemplateRouterPO extends BaseEntity implements Serializable { +public class MessageTemplateRouter extends BaseEntity implements Serializable { private static final long serialVersionUID = 6549664208396593182L; diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/PendingMessageRecordPO.java b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/PendingMessageRecord.java similarity index 90% rename from msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/PendingMessageRecordPO.java rename to msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/PendingMessageRecord.java index e8a1bb69..8441c6a8 100644 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/domain/po/PendingMessageRecordPO.java +++ b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/PendingMessageRecord.java @@ -1,4 +1,4 @@ -package cn.axzo.msg.center.message.domain.po; +package cn.axzo.msg.center.domain.entity; import cn.axzo.core.persistence.BaseEntity; import cn.axzo.msg.center.service.enums.BizCategoryEnum; @@ -11,7 +11,6 @@ import lombok.Getter; import lombok.Setter; import java.io.Serializable; -import java.util.Date; /** * @description @@ -23,7 +22,7 @@ import java.util.Date; @Setter @Getter @TableName("pending_message_record") -public class PendingMessageRecordPO extends BaseEntity implements Serializable { +public class PendingMessageRecord extends BaseEntity implements Serializable { private static final long serialVersionUID = 2184329278851311992L; @@ -55,10 +54,6 @@ public class PendingMessageRecordPO extends BaseEntity i * 执行者身份 */ private IdentityTypeEnum executorType; - /** - * 代办完成时间 - */ - private Date executeTime; /** * 模板编码 */ diff --git a/msg-center-new/pom.xml b/msg-center-new/pom.xml deleted file mode 100644 index 779825a2..00000000 --- a/msg-center-new/pom.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - msg-center - cn.axzo.msgcenter - ${revision} - ../pom.xml - - 4.0.0 - - msg-center-new - - - 8 - 8 - UTF-8 - - - - com.baomidou - lock4j-redisson-spring-boot-starter - - - - cn.hutool - hutool-all - - - - cn.axzo.msgcenter - msg-center-api - 1.0.0-SNAPSHOT - - - org.aspectj - aspectjweaver - - - org.springframework.boot - spring-boot-starter-aop - - - com.baomidou - mybatis-plus-boot-starter - - - org.mybatis.spring.boot - mybatis-spring-boot-starter - RELEASE - - - com.baomidou - mybatis-plus-extension - - - mysql - mysql-connector-java - runtime - - - org.mapstruct - mapstruct - - - com.zaxxer - HikariCP - - - org.springframework.boot - spring-boot-starter-jdbc - - - com.baomidou - mybatis-plus-generator - - - org.springframework.retry - spring-retry - 1.3.3 - - - com.aliyun - alibaba-dingtalk-service-sdk - 2.0.0 - - - cn.axzo.msgcenter - inside-notices - 1.0.0-SNAPSHOT - compile - - - \ No newline at end of file diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/common/enums/LogicDeleteFlagEnum.java b/msg-center-new/src/main/java/cn/axzo/msg/center/common/enums/LogicDeleteFlagEnum.java deleted file mode 100644 index acb2fa66..00000000 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/common/enums/LogicDeleteFlagEnum.java +++ /dev/null @@ -1,23 +0,0 @@ -package cn.axzo.msg.center.common.enums; - -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * @description - * - * @author cold_blade - * @date 2023/9/28 - * @version 1.0 - */ -@Getter -@AllArgsConstructor(access = AccessLevel.PRIVATE) -public enum LogicDeleteFlagEnum { - - NORMAL(0), - DELETED(1), - ; - - private final Integer flag; -} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/MessageTemplateRouterDAO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/MessageTemplateRouterDAO.java deleted file mode 100644 index 9509d7f9..00000000 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/MessageTemplateRouterDAO.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.axzo.msg.center.message.dao; - -import cn.axzo.msg.center.message.domain.po.MessageTemplateRouterPO; -import com.baomidou.mybatisplus.extension.service.IService; - -import java.util.List; - -/** - * @description - * - * @author cold_blade - * @date 2023/9/28 - * @version 1.0 - */ -public interface MessageTemplateRouterDAO extends IService { - - /** - * 通过模板编码获取对应的路由列表 - * - * @param templateCode 模板编码 - * @return 路由列表 - */ - List listByTemplateCode(String templateCode); -} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/PendingMessageRecordDAO.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/PendingMessageRecordDAO.java deleted file mode 100644 index df907d9d..00000000 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/PendingMessageRecordDAO.java +++ /dev/null @@ -1,23 +0,0 @@ -package cn.axzo.msg.center.message.dao; - -import cn.axzo.msg.center.message.domain.po.PendingMessageRecordPO; -import com.baomidou.mybatisplus.extension.service.IService; - -import java.util.Optional; - -/** - * @description - * @author cold_blade - * @date 2023/9/28 - * @version 1.0 - */ -public interface PendingMessageRecordDAO extends IService { - - /** - * 通过消息唯一标识查询对应的消息记录 - * - * @param msgIdentityCode 消息唯一标识 - * @return 消息记录 - */ - Optional queryByIdentityCode(String msgIdentityCode); -} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/impl/MessageTemplateRouterDAOImpl.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/impl/MessageTemplateRouterDAOImpl.java deleted file mode 100644 index d651855d..00000000 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/impl/MessageTemplateRouterDAOImpl.java +++ /dev/null @@ -1,36 +0,0 @@ -package cn.axzo.msg.center.message.dao.impl; - -import cn.axzo.basics.common.util.AssertUtil; -import cn.axzo.msg.center.common.enums.LogicDeleteFlagEnum; -import cn.axzo.msg.center.message.dao.MessageTemplateRouterDAO; -import cn.axzo.msg.center.message.domain.po.MessageTemplateRouterPO; -import cn.axzo.msg.center.message.mapper.MessageTemplateRouterMapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.List; - -/** - * @description - * - * @author cold_blade - * @date 2023/9/28 - * @version 1.0 - */ -@Slf4j -@Component -public class MessageTemplateRouterDAOImpl extends ServiceImpl - implements MessageTemplateRouterDAO { - - @Override - public List listByTemplateCode(String templateCode) { - // 参数校验 - AssertUtil.notEmpty(templateCode, "templateCode is required"); - - return lambdaQuery() - .eq(MessageTemplateRouterPO::getTemplateCode, templateCode) - .eq(MessageTemplateRouterPO::getIsDelete, LogicDeleteFlagEnum.NORMAL.getFlag()) - .list(); - } -} diff --git a/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/impl/PendingMessageRecordDAOImpl.java b/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/impl/PendingMessageRecordDAOImpl.java deleted file mode 100644 index 7ad0c55b..00000000 --- a/msg-center-new/src/main/java/cn/axzo/msg/center/message/dao/impl/PendingMessageRecordDAOImpl.java +++ /dev/null @@ -1,36 +0,0 @@ -package cn.axzo.msg.center.message.dao.impl; - -import cn.axzo.basics.common.util.AssertUtil; -import cn.axzo.msg.center.common.enums.LogicDeleteFlagEnum; -import cn.axzo.msg.center.message.dao.PendingMessageRecordDAO; -import cn.axzo.msg.center.message.domain.po.PendingMessageRecordPO; -import cn.axzo.msg.center.message.mapper.PendingMessageRecordMapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.Optional; - -/** - * @description - * - * @author cold_blade - * @date 2023/9/28 - * @version 1.0 - */ -@Slf4j -@Component -public class PendingMessageRecordDAOImpl extends ServiceImpl - implements PendingMessageRecordDAO { - - @Override - public Optional queryByIdentityCode(String msgIdentityCode) { - // 参数检测 - AssertUtil.notEmpty(msgIdentityCode, "msgIdentityCode is required."); - - return lambdaQuery() - .eq(PendingMessageRecordPO::getIdentityCode, msgIdentityCode) - .eq(PendingMessageRecordPO::getIsDelete, LogicDeleteFlagEnum.NORMAL.getFlag()) - .oneOpt(); - } -} diff --git a/pom.xml b/pom.xml index 90e0c69d..d7ec1313 100644 --- a/pom.xml +++ b/pom.xml @@ -24,7 +24,6 @@ start msg-center-dal msg-center-domain - msg-center-new diff --git a/start/src/main/java/cn/axzo/msg/center/MsgCenterApplication.java b/start/src/main/java/cn/axzo/msg/center/MsgCenterApplication.java index cb570813..c738a49d 100644 --- a/start/src/main/java/cn/axzo/msg/center/MsgCenterApplication.java +++ b/start/src/main/java/cn/axzo/msg/center/MsgCenterApplication.java @@ -17,7 +17,7 @@ import org.springframework.scheduling.annotation.EnableAsync; * @date 2023/5/30 11:01 */ @Slf4j -@MapperScan(value = {"cn.axzo.msg.center.dal", "cn.axzo.msg.center.perf.mapper"}) +@MapperScan(value = {"cn.axzo.msg.center.dal"}) @SpringBootApplication(scanBasePackages = {"cn.axzo.msg"}) @EnableFeignClients(basePackages = "cn.axzo.log") /*@EnableAsync*/ From d30031477ab5d024f3bc0ebe7db28ad7eede4569 Mon Sep 17 00:00:00 2001 From: luofu Date: Thu, 5 Oct 2023 18:24:20 +0800 Subject: [PATCH 18/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E8=AF=A6=E6=83=85&=E5=AE=8C=E6=88=90&=E6=92=A4=E5=9B=9E?= =?UTF-8?q?=E7=AD=89=E5=8A=9F=E8=83=BD=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 代办详情&完成&撤回等功能的实现 影响: 无 --- .../PendingMessageNewController.java | 60 +++++++++++++++++++ .../message/domain/dto/PendingMessageDTO.java | 18 ++++++ .../impl/MessageTemplateNewServiceImpl.java | 18 +++++- .../impl/PendingMessageNewServiceImpl.java | 46 +++++++++++--- 4 files changed, 133 insertions(+), 9 deletions(-) create mode 100644 inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PendingMessageNewController.java diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PendingMessageNewController.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PendingMessageNewController.java new file mode 100644 index 00000000..ca04a16b --- /dev/null +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PendingMessageNewController.java @@ -0,0 +1,60 @@ +package cn.axzo.msg.center.message.controller; + +import cn.axzo.msg.center.message.service.PendingMessageNewService; +import cn.axzo.msg.center.service.enums.TerminalTypeEnum; +import cn.axzo.msg.center.service.pending.client.PendingMessageClient; +import cn.axzo.msg.center.service.pending.request.MessageGroupNodeStatisticRequest; +import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; +import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest; +import cn.axzo.msg.center.service.pending.response.MessageGroupNodeResponse; +import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; +import cn.azxo.framework.common.model.CommonResponse; +import cn.azxo.framework.common.model.Page; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @description + * + * @author cold_blade + * @date 2023/10/5 + * @version 1.0 + */ +@RestController +@RequiredArgsConstructor +public class PendingMessageNewController implements PendingMessageClient { + + private final PendingMessageNewService pendingMessageNewService; + + @Override + public CommonResponse> groupStatistic(MessageGroupNodeStatisticRequest request) { + return null; + } + + @Override + public CommonResponse> pageQuery(PendingMessagePageRequest request) { + return null; + } + + @Override + public CommonResponse detail(String msgIdentityCode, TerminalTypeEnum terminalType) { + return null; + } + + @Override + public CommonResponse push(PendingMessagePushRequest request) { + return CommonResponse.success(pendingMessageNewService.push(request)); + } + + @Override + public CommonResponse complete(String msgIdentityCode) { + return null; + } + + @Override + public CommonResponse revoke(String msgIdentityCode) { + return null; + } +} diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java index fba5faea..6205bf1f 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java @@ -4,7 +4,9 @@ import cn.axzo.msg.center.domain.entity.PendingMessageRecord; import cn.axzo.msg.center.service.dto.IdentityDTO; import cn.axzo.msg.center.service.dto.MessageRouterDTO; import cn.axzo.msg.center.service.dto.PersonDTO; +import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest; import cn.axzo.msg.center.utils.DateFormatUtil; +import cn.axzo.msg.center.utils.UUIDUtil; import com.alibaba.fastjson.JSON; import lombok.AllArgsConstructor; import lombok.Builder; @@ -76,6 +78,22 @@ public class PendingMessageDTO implements Serializable { */ private MessageRouterDTO router; + public static PendingMessageDTO from(PendingMessagePushRequest request) { + // TODO: [cold_blade] + return PendingMessageDTO.builder() + .identityCode(UUIDUtil.uuidString()) + .title("权限点发布申请") + .content("${creator}提交了${businessTypeName},请尽快处理。") + .promoter(request.getPromoter()) + .executor(request.getExecutor()) + .bizCode(request.getBizCode()) + .subBizCode(request.getSubBizCode()) + .bizDesc(request.getBizDesc()) + .createTime(LocalDateTime.now()) + .updateTime(LocalDateTime.now()) + .build(); + } + public static PendingMessageDTO from(PendingMessageRecord pendingMessageRecord) { // 代办发起者信息 PersonDTO promoter = PersonDTO.builder() diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java index 46191763..579962cf 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java @@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -32,8 +33,8 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService @Override public void createTemplate(MessageTemplateCreateParam param) { - MessageBaseTemplate template = BeanConverter.convert(param, MessageBaseTemplate.class); - messageBaseTemplateDao.save(template); + // TODO: [cold_blade] 模板与分类的关系 + messageBaseTemplateDao.save(convert(param)); if (CollectionUtils.isNotEmpty(param.getRouters())) { List routers = param.getRouters().stream() .map(e -> RawMessageRouterDTO.from(e, param.getTemplateCode())) @@ -41,4 +42,17 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService messageTemplateRouterService.batchInsert(routers); } } + + private MessageBaseTemplate convert(MessageTemplateCreateParam param) { + MessageBaseTemplate template = BeanConverter.convert(param, MessageBaseTemplate.class); + template.setName(param.getTemplateName()); + template.setCode(param.getTemplateCode()); + template.setCreatorId(param.getOperatorId()); + template.setUpdaterId(param.getOperatorId()); + Date now = new Date(); + template.setCreateAt(now); + template.setUpdateAt(now); + template.setIsDelete(0); + return template; + } } 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 a296d4a6..6c2e2a16 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 @@ -17,12 +17,14 @@ import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest; import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; import cn.axzo.msg.center.utils.MessageRouterUtil; +import cn.axzo.msg.center.utils.UUIDUtil; import cn.azxo.framework.common.model.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -40,8 +42,8 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class PendingMessageNewServiceImpl implements PendingMessageNewService { - private final PendingMessageRecordDao pendingMessageRecordDAO; - private final MessageTemplateRouterDao messageTemplateRouterDAO; + private final PendingMessageRecordDao pendingMessageRecordDao; + private final MessageTemplateRouterDao messageTemplateRouterDao; @Override public List groupStatistic(MessageGroupNodeStatisticParam param) { @@ -61,13 +63,15 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { log.info("the param of identityCode is blank."); return Optional.empty(); } - return pendingMessageRecordDAO.queryByIdentityCode(msgIdentityCode).map(v -> convert(v, terminalType)); + return pendingMessageRecordDao.queryByIdentityCode(msgIdentityCode).map(v -> convert(v, terminalType)); } @Override public String push(PendingMessagePushRequest request) { // TODO: [cold_blade] 消息推送 - return null; + PendingMessageRecord record = convert(request); + pendingMessageRecordDao.save(record); + return record.getIdentityCode(); } @Override @@ -77,7 +81,7 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { return false; } log.info("the [{}] record is updated complete.", msgIdentityCode); - return pendingMessageRecordDAO.lambdaUpdate() + return pendingMessageRecordDao.lambdaUpdate() .set(PendingMessageRecord::getState, PendingMessageStateEnum.COMPLETED) .eq(PendingMessageRecord::getIdentityCode, msgIdentityCode) .eq(PendingMessageRecord::getState, PendingMessageStateEnum.HAS_BEEN_SENT) @@ -92,7 +96,7 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { return false; } log.info("the [{}] record is updated retract.", msgIdentityCode); - return pendingMessageRecordDAO.lambdaUpdate() + return pendingMessageRecordDao.lambdaUpdate() .set(PendingMessageRecord::getState, PendingMessageStateEnum.RETRACT) .eq(PendingMessageRecord::getIdentityCode, msgIdentityCode) .eq(PendingMessageRecord::getState, PendingMessageStateEnum.HAS_BEEN_SENT) @@ -103,7 +107,7 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { private PendingMessageDTO convert(PendingMessageRecord pendingMessageRecord, TerminalTypeEnum terminalType) { PendingMessageDTO pendingMessage = PendingMessageDTO.from(pendingMessageRecord); // 从存储层获取对应模板的路由列表 - List rawRouters = messageTemplateRouterDAO + List rawRouters = messageTemplateRouterDao .listByTemplateCode(pendingMessageRecord.getTemplateCode()).stream() .map(RawMessageRouterDTO::from) .collect(Collectors.toList()); @@ -116,4 +120,32 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { } return pendingMessage; } + + private PendingMessageRecord convert(PendingMessagePushRequest request) { + PendingMessageRecord record = new PendingMessageRecord(); + record.setIdentityCode(UUIDUtil.uuidString()); + record.setPromoterId(request.getPromoter().getIdentity().getId()); + record.setPromoterType(request.getPromoter().getIdentity().getType()); + record.setPromoterPersonId(request.getPromoter().getId()); + record.setExecutorId(request.getExecutor().getIdentity().getId()); + record.setExecutorType(request.getExecutor().getIdentity().getType()); + record.setExecutorPersonId(request.getExecutor().getId()); + record.setTemplateCode(request.getTemplateCode()); + record.setTitle("权限点发布申请"); + record.setContent("${creator}提交了${businessTypeName},请尽快处理。"); + record.setOrgType(request.getOrgType()); + record.setOrgId(request.getOrgId()); + record.setOrgName(request.getOrgName()); + record.setState(PendingMessageStateEnum.HAS_BEEN_SENT); + record.setBizCategory(request.getBizCategory()); + record.setBizCode(request.getBizCode()); + record.setSubBizCode(request.getSubBizCode()); + record.setBizDesc(request.getBizDesc()); + record.setRouterParams(request.getRouterParams()); + Date now = new Date(); + record.setCreateAt(now); + record.setUpdateAt(now); + record.setIsDelete(0); + return record; + } } From 47d369b7678e6f63a9d102848518b8f4c7688b0b Mon Sep 17 00:00:00 2001 From: luofu Date: Thu, 5 Oct 2023 20:24:32 +0800 Subject: [PATCH 19/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E8=AF=A6=E6=83=85&=E5=AE=8C=E6=88=90&=E6=92=A4=E5=9B=9E?= =?UTF-8?q?=E7=AD=89=E5=8A=9F=E8=83=BD=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 代办详情&完成&撤回等功能的实现 影响: 无 --- .../PendingMessageNewController.java | 28 +++-- .../domain/dto/MessageTemplateDTO.java | 81 ++++++++++++++ .../message/domain/dto/PendingMessageDTO.java | 36 +++---- .../param/MessageGroupNodeStatisticParam.java | 28 +++-- .../domain/param/PendingMessagePushParam.java | 85 +++++++++++++++ .../service/MessageTemplateGroupService.java | 21 ++++ .../service/MessageTemplateNewService.java | 11 ++ .../service/PendingMessageNewService.java | 5 +- .../impl/MessageTemplateGroupServiceImpl.java | 40 +++++++ .../impl/MessageTemplateNewServiceImpl.java | 24 ++++- .../MessageTemplateRouterServiceImpl.java | 6 +- .../impl/PendingMessageNewServiceImpl.java | 102 +++++++++++++----- .../axzo/msg/center/utils/DateFormatUtil.java | 8 ++ .../enums/PendingMessageRoleCategoryEnum.java | 2 +- .../request/PendingMessagePageRequest.java | 3 +- .../response/PendingMessageResponse.java | 6 ++ .../center/dal/MessageTemplateGroupDao.java | 17 +++ .../domain/entity/MessageTemplateGroup.java | 4 +- 18 files changed, 433 insertions(+), 74 deletions(-) create mode 100644 inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageTemplateDTO.java create mode 100644 inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/PendingMessagePushParam.java create mode 100644 inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateGroupService.java create mode 100644 inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateGroupServiceImpl.java create mode 100644 msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageTemplateGroupDao.java diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PendingMessageNewController.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PendingMessageNewController.java index ca04a16b..90d07020 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PendingMessageNewController.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PendingMessageNewController.java @@ -1,5 +1,9 @@ package cn.axzo.msg.center.message.controller; +import cn.axzo.msg.center.message.domain.dto.MessageGroupNodeDTO; +import cn.axzo.msg.center.message.domain.dto.PendingMessageDTO; +import cn.axzo.msg.center.message.domain.param.MessageGroupNodeStatisticParam; +import cn.axzo.msg.center.message.domain.param.PendingMessagePushParam; import cn.axzo.msg.center.message.service.PendingMessageNewService; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import cn.axzo.msg.center.service.pending.client.PendingMessageClient; @@ -14,6 +18,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.RestController; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** * @description @@ -30,31 +36,41 @@ public class PendingMessageNewController implements PendingMessageClient { @Override public CommonResponse> groupStatistic(MessageGroupNodeStatisticRequest request) { - return null; + List groupNodes = pendingMessageNewService + .groupStatistic(MessageGroupNodeStatisticParam.from(request)); + return CommonResponse.success(groupNodes.stream() + .map(MessageGroupNodeDTO::toResponse) + .collect(Collectors.toList()) + ); } @Override public CommonResponse> pageQuery(PendingMessagePageRequest request) { - return null; + return CommonResponse.success(pendingMessageNewService.pageQuery(request)); } @Override public CommonResponse detail(String msgIdentityCode, TerminalTypeEnum terminalType) { - return null; + PendingMessageDTO pendingMessage = pendingMessageNewService.detail(msgIdentityCode, terminalType) + .orElse(null); + if (Objects.isNull(pendingMessage)) { + return CommonResponse.success(); + } + return CommonResponse.success(pendingMessage.toResponse()); } @Override public CommonResponse push(PendingMessagePushRequest request) { - return CommonResponse.success(pendingMessageNewService.push(request)); + return CommonResponse.success(pendingMessageNewService.push(PendingMessagePushParam.from(request))); } @Override public CommonResponse complete(String msgIdentityCode) { - return null; + return CommonResponse.success(pendingMessageNewService.complete(msgIdentityCode)); } @Override public CommonResponse revoke(String msgIdentityCode) { - return null; + return CommonResponse.success(pendingMessageNewService.revoke(msgIdentityCode)); } } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageTemplateDTO.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageTemplateDTO.java new file mode 100644 index 00000000..88fafc90 --- /dev/null +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageTemplateDTO.java @@ -0,0 +1,81 @@ +package cn.axzo.msg.center.message.domain.dto; + +import cn.axzo.msg.center.domain.entity.MessageBaseTemplate; +import cn.axzo.msg.center.service.enums.MessageCategoryEnum; +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/10/5 + * @version 1.0 + */ +@Setter +@Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MessageTemplateDTO implements Serializable { + + private static final long serialVersionUID = -2658385672181452557L; + + /** + * 模板名称 + */ + private String name; + /** + * 系统自动生成的模板code + */ + private String code; + /** + * 模板标题 + */ + private String title; + /** + * 模板类容 + */ + private String content; + /** + * 卡片信息,json字串 + */ + private String cardContent; + /** + * 所属消息类型 + */ + private MessageCategoryEnum msgCategory; + /** + * 模板icon + */ + private String icon; + /** + * 模板路由信息 + */ + private List routers; + + public static MessageTemplateDTO from(MessageBaseTemplate baseTemplate, List routers) { + return MessageTemplateDTO.builder() + .name(baseTemplate.getName()) + .code(baseTemplate.getCode()) + .title(baseTemplate.getTitle()) + .content(baseTemplate.getContent()) + .cardContent(baseTemplate.getCardContent()) + .msgCategory(baseTemplate.getMsgCategory()) + .icon(baseTemplate.getIcon()) + .routers(routers) + .build(); + } + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java index 6205bf1f..3e2e3bd3 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java @@ -4,9 +4,8 @@ import cn.axzo.msg.center.domain.entity.PendingMessageRecord; import cn.axzo.msg.center.service.dto.IdentityDTO; import cn.axzo.msg.center.service.dto.MessageRouterDTO; import cn.axzo.msg.center.service.dto.PersonDTO; -import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest; +import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; import cn.axzo.msg.center.utils.DateFormatUtil; -import cn.axzo.msg.center.utils.UUIDUtil; import com.alibaba.fastjson.JSON; import lombok.AllArgsConstructor; import lombok.Builder; @@ -16,6 +15,7 @@ import lombok.Setter; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Optional; /** * @description @@ -78,22 +78,6 @@ public class PendingMessageDTO implements Serializable { */ private MessageRouterDTO router; - public static PendingMessageDTO from(PendingMessagePushRequest request) { - // TODO: [cold_blade] - return PendingMessageDTO.builder() - .identityCode(UUIDUtil.uuidString()) - .title("权限点发布申请") - .content("${creator}提交了${businessTypeName},请尽快处理。") - .promoter(request.getPromoter()) - .executor(request.getExecutor()) - .bizCode(request.getBizCode()) - .subBizCode(request.getSubBizCode()) - .bizDesc(request.getBizDesc()) - .createTime(LocalDateTime.now()) - .updateTime(LocalDateTime.now()) - .build(); - } - public static PendingMessageDTO from(PendingMessageRecord pendingMessageRecord) { // 代办发起者信息 PersonDTO promoter = PersonDTO.builder() @@ -125,6 +109,22 @@ public class PendingMessageDTO implements Serializable { .build(); } + public PendingMessageResponse toResponse() { + return PendingMessageResponse.builder() + .identityCode(this.identityCode) + .title(this.title) + .content(this.content) + .promoter(Optional.ofNullable(this.promoter).map(PersonDTO::getIdentity).orElse(null)) + .executor(Optional.ofNullable(this.executor).map(PersonDTO::getIdentity).orElse(null)) + .bizCode(this.bizCode) + .subBizCode(this.subBizCode) + .bizDesc(this.bizDesc) + .createTimestamp(DateFormatUtil.toTimestamp(this.createTime)) + .updateTimestamp(DateFormatUtil.toTimestamp(this.updateTime)) + .router(this.router) + .build(); + } + @Override public String toString() { return JSON.toJSONString(this); diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/MessageGroupNodeStatisticParam.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/MessageGroupNodeStatisticParam.java index 7a18d79b..3a80391f 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/MessageGroupNodeStatisticParam.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/MessageGroupNodeStatisticParam.java @@ -12,7 +12,6 @@ import lombok.Setter; import java.io.Serializable; import java.util.Collection; -import java.util.Optional; /** * @description @@ -62,21 +61,18 @@ public class MessageGroupNodeStatisticParam implements Serializable { */ private String title; - public static Optional from(MessageGroupNodeStatisticRequest request) { - return Optional.ofNullable(request) - .map(v -> { - MessageGroupNodeStatisticParam param = BeanConverter.convert(v, MessageGroupNodeStatisticParam.class); - IdentityDTO identity = IdentityDTO.builder() - .id(request.getIdentityId()) - .type(request.getIdentityType()) - .build(); - PersonDTO person = PersonDTO.builder() - .id(request.getPersonId()) - .identity(identity) - .build(); - param.setOperator(person); - return param; - }); + public static MessageGroupNodeStatisticParam from(MessageGroupNodeStatisticRequest request) { + MessageGroupNodeStatisticParam param = BeanConverter.convert(request, MessageGroupNodeStatisticParam.class); + IdentityDTO identity = IdentityDTO.builder() + .id(request.getIdentityId()) + .type(request.getIdentityType()) + .build(); + PersonDTO person = PersonDTO.builder() + .id(request.getPersonId()) + .identity(identity) + .build(); + param.setOperator(person); + return param; } @Override diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/PendingMessagePushParam.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/PendingMessagePushParam.java new file mode 100644 index 00000000..429b0a31 --- /dev/null +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/PendingMessagePushParam.java @@ -0,0 +1,85 @@ +package cn.axzo.msg.center.message.domain.param; + +import cn.axzo.core.utils.converter.BeanConverter; +import cn.axzo.msg.center.service.dto.PersonDTO; +import cn.axzo.msg.center.service.enums.BizCategoryEnum; +import cn.axzo.msg.center.service.enums.OrganizationTypeEnum; +import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest; +import com.alibaba.fastjson.JSON; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.io.Serializable; + +/** + * @description + * @author cold_blade + * @date 2023/10/5 + * @version 1.0 + */ +@Setter +@Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PendingMessagePushParam implements Serializable { + + private static final long serialVersionUID = 6308469943450138452L; + + /** + * 发起者 + */ + private PersonDTO promoter; + /** + * 执行者 + */ + private PersonDTO executor; + /** + * 模板编码 + */ + private String templateCode; + /** + * 消息所属组织类型 + */ + private OrganizationTypeEnum orgType; + /** + * 消息所属组织Id + */ + private Long orgId; + /** + * 消息所属组织名称 + */ + private String orgName; + /** + * 业务类型 + */ + private BizCategoryEnum bizCategory; + /** + * 关联业务主键 + */ + private String bizCode; + /** + * 流程类代办的流程结点编码 + */ + private String subBizCode; + /** + * 业务描述eg:流程结点描述 + */ + private String bizDesc; + /** + * 路由参数(json string) + */ + private String routerParams; + + public static PendingMessagePushParam from(PendingMessagePushRequest request) { + return BeanConverter.convert(request, PendingMessagePushParam.class); + } + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateGroupService.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateGroupService.java new file mode 100644 index 00000000..f830e062 --- /dev/null +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateGroupService.java @@ -0,0 +1,21 @@ +package cn.axzo.msg.center.message.service; + +import java.util.List; + +/** + * 消息模板分类管理 + * + * @author cold_blade + * @date 2023/10/5 + * @version 1.0 + */ +public interface MessageTemplateGroupService { + + /** + * 通过分组结点编码查询关联的模板编码列表 + * + * @param groupNodeCode 分组结点编码 + * @return 模板编码列表 + */ + List listMessageTemplateCodes(String groupNodeCode); +} diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java index c791237e..551c6511 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java @@ -1,7 +1,10 @@ package cn.axzo.msg.center.message.service; +import cn.axzo.msg.center.message.domain.dto.MessageTemplateDTO; import cn.axzo.msg.center.message.domain.param.MessageTemplateCreateParam; +import java.util.Optional; + /** * @description * 消息模板管理 @@ -17,4 +20,12 @@ public interface MessageTemplateNewService { * @param param 模板内容参数 */ void createTemplate(MessageTemplateCreateParam param); + + /** + * 通过模板编码查询模板信息 + * + * @param msgTemplateCode 模板编码 + * @return 模板信息 + */ + Optional queryByTemplateCode(String msgTemplateCode); } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/PendingMessageNewService.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/PendingMessageNewService.java index f0ad1152..df132a34 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/PendingMessageNewService.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/PendingMessageNewService.java @@ -3,6 +3,7 @@ package cn.axzo.msg.center.message.service; import cn.axzo.msg.center.message.domain.dto.MessageGroupNodeDTO; import cn.axzo.msg.center.message.domain.dto.PendingMessageDTO; import cn.axzo.msg.center.message.domain.param.MessageGroupNodeStatisticParam; +import cn.axzo.msg.center.message.domain.param.PendingMessagePushParam; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest; @@ -43,10 +44,10 @@ public interface PendingMessageNewService { /** * 发送代办 * - * @param request 代办核心参数 + * @param param 代办核心参数 * @return 代办唯一标识 */ - String push(PendingMessagePushRequest request); + String push(PendingMessagePushParam param); /** * 完成代办 diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateGroupServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateGroupServiceImpl.java new file mode 100644 index 00000000..cfcd1b34 --- /dev/null +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateGroupServiceImpl.java @@ -0,0 +1,40 @@ +package cn.axzo.msg.center.message.service.impl; + +import cn.axzo.msg.center.dal.MessageTemplateGroupDao; +import cn.axzo.msg.center.domain.entity.MessageTemplateGroup; +import cn.axzo.msg.center.message.service.MessageTemplateGroupService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author cold_blade + * @date 2023/10/5 + * @version 1.0 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class MessageTemplateGroupServiceImpl implements MessageTemplateGroupService { + + private final MessageTemplateGroupDao messageTemplateGroupDao; + + @Override + public List listMessageTemplateCodes(String groupNodeCode) { + if (StringUtils.isBlank(groupNodeCode)) { + log.info("groupNodeCode is blank."); + return Collections.emptyList(); + } + return messageTemplateGroupDao.lambdaQuery() + .like(MessageTemplateGroup::getPath, groupNodeCode) + .eq(MessageTemplateGroup::getIsDelete, 0) + .list().stream() + .map(MessageTemplateGroup::getTemplateCode) + .collect(Collectors.toList()); + } +} diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java index 579962cf..b3388116 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java @@ -3,6 +3,7 @@ package cn.axzo.msg.center.message.service.impl; import cn.axzo.core.utils.converter.BeanConverter; import cn.axzo.msg.center.dal.MessageBaseTemplateDao; import cn.axzo.msg.center.domain.entity.MessageBaseTemplate; +import cn.axzo.msg.center.message.domain.dto.MessageTemplateDTO; import cn.axzo.msg.center.message.domain.dto.RawMessageRouterDTO; import cn.axzo.msg.center.message.domain.param.MessageTemplateCreateParam; import cn.axzo.msg.center.message.service.MessageTemplateNewService; @@ -10,10 +11,13 @@ import cn.axzo.msg.center.message.service.MessageTemplateRouterService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; +import java.util.Objects; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -33,7 +37,7 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService @Override public void createTemplate(MessageTemplateCreateParam param) { - // TODO: [cold_blade] 模板与分类的关系 + // TODO: [cold_blade] [P2] 模板与分类的关系 messageBaseTemplateDao.save(convert(param)); if (CollectionUtils.isNotEmpty(param.getRouters())) { List routers = param.getRouters().stream() @@ -43,6 +47,24 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService } } + @Override + public Optional queryByTemplateCode(String msgTemplateCode) { + if (StringUtils.isBlank(msgTemplateCode)) { + log.info("msgTemplateCode is blank."); + return Optional.empty(); + } + MessageBaseTemplate msgBaseTemplate = messageBaseTemplateDao.lambdaQuery() + .eq(MessageBaseTemplate::getCode, msgTemplateCode) + .eq(MessageBaseTemplate::getIsDelete, 0) + .one(); + if (Objects.isNull(msgBaseTemplate)) { + log.info("not find the [{}] template.", msgTemplateCode); + return Optional.empty(); + } + List routers = messageTemplateRouterService.queryByTemplateCode(msgTemplateCode); + return Optional.of(MessageTemplateDTO.from(msgBaseTemplate, routers)); + } + private MessageBaseTemplate convert(MessageTemplateCreateParam param) { MessageBaseTemplate template = BeanConverter.convert(param, MessageBaseTemplate.class); template.setName(param.getTemplateName()); 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 666ed1b2..9b7ab8e7 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 @@ -26,7 +26,7 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterService { - private final MessageTemplateRouterDao messageTemplateRouterDAO; + private final MessageTemplateRouterDao messageTemplateRouterDao; @Override public List queryByTemplateCode(String templateCode) { @@ -34,7 +34,7 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe log.warn("the template code is blank."); return Collections.emptyList(); } - return messageTemplateRouterDAO.listByTemplateCode(templateCode).stream() + return messageTemplateRouterDao.listByTemplateCode(templateCode).stream() .map(RawMessageRouterDTO::from) .collect(Collectors.toList()); } @@ -47,6 +47,6 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe List messageTemplateRouters = routers.stream() .map(RawMessageRouterDTO::toMessageTemplateRouter) .collect(Collectors.toList()); - messageTemplateRouterDAO.saveBatch(messageTemplateRouters); + messageTemplateRouterDao.saveBatch(messageTemplateRouters); } } 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 6c2e2a16..471eda24 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 @@ -2,25 +2,34 @@ 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.dal.MessageTemplateRouterDao; import cn.axzo.msg.center.dal.PendingMessageRecordDao; import cn.axzo.msg.center.domain.entity.PendingMessageRecord; import cn.axzo.msg.center.message.domain.dto.MessageGroupNodeDTO; +import cn.axzo.msg.center.message.domain.dto.MessageTemplateDTO; import cn.axzo.msg.center.message.domain.dto.PendingMessageDTO; import cn.axzo.msg.center.message.domain.dto.RawMessageRouterDTO; import cn.axzo.msg.center.message.domain.param.MessageGroupNodeStatisticParam; +import cn.axzo.msg.center.message.domain.param.PendingMessagePushParam; +import cn.axzo.msg.center.message.service.MessageTemplateGroupService; +import cn.axzo.msg.center.message.service.MessageTemplateNewService; import cn.axzo.msg.center.message.service.PendingMessageNewService; import cn.axzo.msg.center.service.dto.MessageRouterDTO; +import cn.axzo.msg.center.service.dto.QueryOrderByDTO; +import cn.axzo.msg.center.service.enums.PendingMessageRoleCategoryEnum; import cn.axzo.msg.center.service.enums.PendingMessageStateEnum; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; -import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest; import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; import cn.axzo.msg.center.utils.MessageRouterUtil; import cn.axzo.msg.center.utils.UUIDUtil; import cn.azxo.framework.common.model.Page; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -44,6 +53,8 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { private final PendingMessageRecordDao pendingMessageRecordDao; private final MessageTemplateRouterDao messageTemplateRouterDao; + private final MessageTemplateNewService messageTemplateNewService; + private final MessageTemplateGroupService messageTemplateGroupService; @Override public List groupStatistic(MessageGroupNodeStatisticParam param) { @@ -53,8 +64,47 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { @Override public Page pageQuery(PendingMessagePageRequest request) { - // TODO: [cold_blade] 消息分页查询 - return null; + LambdaQueryChainWrapper query = pendingMessageRecordDao.lambdaQuery(); + if (Objects.equals(request.getRoleCategory(), PendingMessageRoleCategoryEnum.PROMOTER)) { + // 客户端指定查询代办发起者的代办消息 + query.eq(PendingMessageRecord::getPromoterPersonId, request.getPersonId()); + if (Objects.equals(request.getWithIdentify(), true)) { + // 客户端查询消息时需要隔离身份 + query.eq(Objects.nonNull(request.getIdentityId()), PendingMessageRecord::getPromoterId, + request.getIdentityId()); + query.eq(Objects.nonNull(request.getIdentityType()), PendingMessageRecord::getPromoterType, + request.getIdentityType()); + } + } else { + // 客户端未指定代办角色,默认查询代办执行者的代办消息 + query.eq(PendingMessageRecord::getExecutorPersonId, request.getPersonId()); + if (Objects.equals(request.getWithIdentify(), true)) { + // 客户端查询消息时需要隔离身份 + query.eq(Objects.nonNull(request.getIdentityId()), PendingMessageRecord::getExecutorId, + request.getIdentityId()); + query.eq(Objects.nonNull(request.getIdentityType()), PendingMessageRecord::getExecutorType, + request.getIdentityType()); + } + } + query.eq(Objects.nonNull(request.getMsgState()), PendingMessageRecord::getState, request.getMsgState()); + // 模板的分类,对代办进行分组过滤 + if (StringUtils.isNotBlank(request.getGroupNodeCode())) { + List templateCodes = messageTemplateGroupService + .listMessageTemplateCodes(request.getGroupNodeCode()); + query.in(CollectionUtils.isNotEmpty(templateCodes), PendingMessageRecord::getTemplateCode, templateCodes); + } + query.like(StringUtils.isNotBlank(request.getTitle()), PendingMessageRecord::getTitle, request.getTitle()); + if (CollectionUtils.isNotEmpty(request.getOrderFields())) { + for (QueryOrderByDTO orderBy : request.getOrderFields()) { + // TODO:[cold_blade] [P2] 排序优化 + } + } + IPage page = request.toPage(); + IPage result = pendingMessageRecordDao.page(page, query); + List responseRecords = result.getRecords().stream() + .map(e -> convert(e, request.getTerminalType()).toResponse()) + .collect(Collectors.toList()); + return Page.toPage(request.getPage(), request.getPageSize(), result.getTotal(), responseRecords); } @Override @@ -67,9 +117,11 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { } @Override - public String push(PendingMessagePushRequest request) { - // TODO: [cold_blade] 消息推送 - PendingMessageRecord record = convert(request); + public String push(PendingMessagePushParam param) { + MessageTemplateDTO msgTemplate = messageTemplateNewService + .queryByTemplateCode(param.getTemplateCode()) + .orElseThrow(() -> new ServiceException("not found message template.")); + PendingMessageRecord record = convert(param, msgTemplate); pendingMessageRecordDao.save(record); return record.getIdentityCode(); } @@ -118,30 +170,32 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { MessageRouterUtil.parseRouteUrl(router, pendingMessageRecord.getRouterParams()); pendingMessage.setRouter(router); } + // TODO: [cold_blade] [P1] 卡片信息的补充 return pendingMessage; } - private PendingMessageRecord convert(PendingMessagePushRequest request) { + private PendingMessageRecord convert(PendingMessagePushParam param, MessageTemplateDTO msgTemplate) { + // TODO: [cold_blade] [P2] 待优化 PendingMessageRecord record = new PendingMessageRecord(); record.setIdentityCode(UUIDUtil.uuidString()); - record.setPromoterId(request.getPromoter().getIdentity().getId()); - record.setPromoterType(request.getPromoter().getIdentity().getType()); - record.setPromoterPersonId(request.getPromoter().getId()); - record.setExecutorId(request.getExecutor().getIdentity().getId()); - record.setExecutorType(request.getExecutor().getIdentity().getType()); - record.setExecutorPersonId(request.getExecutor().getId()); - record.setTemplateCode(request.getTemplateCode()); - record.setTitle("权限点发布申请"); - record.setContent("${creator}提交了${businessTypeName},请尽快处理。"); - record.setOrgType(request.getOrgType()); - record.setOrgId(request.getOrgId()); - record.setOrgName(request.getOrgName()); + record.setPromoterId(param.getPromoter().getIdentity().getId()); + record.setPromoterType(param.getPromoter().getIdentity().getType()); + record.setPromoterPersonId(param.getPromoter().getId()); + record.setExecutorId(param.getExecutor().getIdentity().getId()); + record.setExecutorType(param.getExecutor().getIdentity().getType()); + record.setExecutorPersonId(param.getExecutor().getId()); + record.setTemplateCode(param.getTemplateCode()); + record.setTitle(msgTemplate.getTitle()); + record.setContent(msgTemplate.getContent()); + record.setOrgType(param.getOrgType()); + record.setOrgId(param.getOrgId()); + record.setOrgName(param.getOrgName()); record.setState(PendingMessageStateEnum.HAS_BEEN_SENT); - record.setBizCategory(request.getBizCategory()); - record.setBizCode(request.getBizCode()); - record.setSubBizCode(request.getSubBizCode()); - record.setBizDesc(request.getBizDesc()); - record.setRouterParams(request.getRouterParams()); + record.setBizCategory(param.getBizCategory()); + record.setBizCode(param.getBizCode()); + record.setSubBizCode(param.getSubBizCode()); + record.setBizDesc(param.getBizDesc()); + record.setRouterParams(param.getRouterParams()); Date now = new Date(); record.setCreateAt(now); record.setUpdateAt(now); diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/utils/DateFormatUtil.java b/inside-notices/src/main/java/cn/axzo/msg/center/utils/DateFormatUtil.java index c8b44723..1bbe4886 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/utils/DateFormatUtil.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/utils/DateFormatUtil.java @@ -5,7 +5,9 @@ import lombok.NoArgsConstructor; import java.time.LocalDateTime; import java.time.ZoneId; +import java.time.ZoneOffset; import java.util.Date; +import java.util.Optional; /** * @description @@ -22,4 +24,10 @@ public final class DateFormatUtil { ZoneId zoneId = ZoneId.systemDefault(); return date.toInstant().atZone(zoneId).toLocalDateTime(); } + + public static long toTimestamp(LocalDateTime dateTime) { + return Optional.ofNullable(dateTime) + .map(v -> v.atZone(ZoneOffset.systemDefault()).toInstant().toEpochMilli()) + .orElse(0L); + } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PendingMessageRoleCategoryEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PendingMessageRoleCategoryEnum.java index f762b655..1e56a261 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PendingMessageRoleCategoryEnum.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/PendingMessageRoleCategoryEnum.java @@ -15,7 +15,7 @@ import lombok.Getter; @AllArgsConstructor(access = AccessLevel.PRIVATE) public enum PendingMessageRoleCategoryEnum { - PROMOTER("发起者"), CREATOR("创建者"), EXECUTOR("执行者"), + PROMOTER("发起者"), EXECUTOR("执行者"), ; private final String desc; diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java index ef31b6a4..55132a8f 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java @@ -59,7 +59,6 @@ public class PendingMessagePageRequest extends PageRequest implements Serializab /** * 代办角色 * PROMOTER: 发起者 - * CREATOR: 创建者 * EXECUTOR: 执行者 */ private PendingMessageRoleCategoryEnum roleCategory; @@ -85,6 +84,8 @@ public class PendingMessagePageRequest extends PageRequest implements Serializab */ private Collection orderFields; + + @Override public String toString() { return JSON.toJSONString(this); diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java index 9817cdb0..a51f9fdd 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java @@ -3,7 +3,10 @@ package cn.axzo.msg.center.service.pending.response; import cn.axzo.msg.center.service.dto.IdentityDTO; import cn.axzo.msg.center.service.dto.MessageRouterDTO; import com.alibaba.fastjson.JSON; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; import java.io.Serializable; @@ -17,6 +20,9 @@ import java.io.Serializable; */ @Setter @Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor public class PendingMessageResponse implements Serializable { private static final long serialVersionUID = -4133864010679470398L; diff --git a/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageTemplateGroupDao.java b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageTemplateGroupDao.java new file mode 100644 index 00000000..fa93940f --- /dev/null +++ b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageTemplateGroupDao.java @@ -0,0 +1,17 @@ +package cn.axzo.msg.center.dal; + +import cn.axzo.msg.center.dal.mapper.MessageTemplateGroupMapper; +import cn.axzo.msg.center.domain.entity.MessageTemplateGroup; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author cold_blade + * @date 2023/10/5 + * @version 1.0 + */ +@Slf4j +@Component +public class MessageTemplateGroupDao extends ServiceImpl { +} diff --git a/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateGroup.java b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateGroup.java index f3b27c47..52cdbbb9 100644 --- a/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateGroup.java +++ b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateGroup.java @@ -28,9 +28,9 @@ public class MessageTemplateGroup extends BaseEntity imple */ private String templateCode; /** - * 分组code + * 分类路径 */ - private String groupCode; + private String path; @Override public String toString() { From ad551c4611df6e30b95e1d61dfc0c6bb53ca6b86 Mon Sep 17 00:00:00 2001 From: luofu Date: Fri, 6 Oct 2023 10:55:51 +0800 Subject: [PATCH 20/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E8=AF=A6=E6=83=85&=E5=AE=8C=E6=88=90&=E6=92=A4=E5=9B=9E?= =?UTF-8?q?=E7=AD=89=E5=8A=9F=E8=83=BD=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 代办详情&完成&撤回等功能的实现 影响: 无 --- .../domain/dto/MessageGroupNodeDTO.java | 21 ++++++++ .../message/service/MessageGroupService.java | 24 ++++++++- .../service/impl/MessageGroupServiceImpl.java | 49 +++++++++++++++++++ .../impl/PendingMessageNewServiceImpl.java | 42 +++++++++++++++- .../msg/center/dal/MessageGroupNodeDao.java | 17 +++++++ 5 files changed, 149 insertions(+), 4 deletions(-) create mode 100644 inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupServiceImpl.java create mode 100644 msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageGroupNodeDao.java diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageGroupNodeDTO.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageGroupNodeDTO.java index 56f6d18c..f52014c7 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageGroupNodeDTO.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageGroupNodeDTO.java @@ -1,13 +1,18 @@ package cn.axzo.msg.center.message.domain.dto; import cn.axzo.core.utils.converter.BeanConverter; +import cn.axzo.msg.center.domain.entity.MessageGroupNode; import cn.axzo.msg.center.service.enums.MessageGroupNodeCategoryEnum; import cn.axzo.msg.center.service.pending.response.MessageGroupNodeResponse; 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 @@ -19,6 +24,9 @@ import java.io.Serializable; */ @Setter @Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor public class MessageGroupNodeDTO implements Serializable { private static final long serialVersionUID = 5171436359992401120L; @@ -49,6 +57,19 @@ public class MessageGroupNodeDTO implements Serializable { * 结点对应的代办数量 */ private Integer pendingCount; + /** + * 子节点列表 + */ + private List children; + + public static MessageGroupNodeDTO from(MessageGroupNode groupNode) { + return MessageGroupNodeDTO.builder() + .category(groupNode.getCategory()) + .nodeName(groupNode.getName()) + .nodeCode(groupNode.getCode()) + .parentNodeCode(groupNode.getParentCode()) + .build(); + } public MessageGroupNodeResponse toResponse() { return BeanConverter.convert(this, MessageGroupNodeResponse.class); diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageGroupService.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageGroupService.java index c1c7df2a..c620f24f 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageGroupService.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageGroupService.java @@ -1,12 +1,32 @@ package cn.axzo.msg.center.message.service; +import cn.axzo.msg.center.message.domain.dto.MessageGroupNodeDTO; + +import java.util.List; +import java.util.Optional; + /** - * @description - * 消息分类Service + * 消息分类管理 + * * @author cold_blade * @date 2023/9/20 * @version 1.0 */ public interface MessageGroupService { + /** + * 通过结点编码查询结点信息 + * + * @param nodeCode 结点编码 + * @return 结点信息 + */ + Optional queryByNodeCode(String nodeCode); + + /** + * 查询指定结点的字节的信息 + * + * @param nodeCode 指定结点编码 + * @return 子节点列表信息 + */ + List listChildren(String nodeCode); } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupServiceImpl.java new file mode 100644 index 00000000..85ce2449 --- /dev/null +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupServiceImpl.java @@ -0,0 +1,49 @@ +package cn.axzo.msg.center.message.service.impl; + +import cn.axzo.msg.center.dal.MessageGroupNodeDao; +import cn.axzo.msg.center.domain.entity.MessageGroupNode; +import cn.axzo.msg.center.message.domain.dto.MessageGroupNodeDTO; +import cn.axzo.msg.center.message.service.MessageGroupService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + * @author cold_blade + * @date 2023/10/6 + * @version 1.0 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class MessageGroupServiceImpl implements MessageGroupService { + + private final MessageGroupNodeDao messageGroupNodeDao; + + @Override + public Optional queryByNodeCode(String nodeCode) { + if (StringUtils.isBlank(nodeCode)) { + return Optional.empty(); + } + MessageGroupNode groupNode = messageGroupNodeDao.lambdaQuery() + .eq(MessageGroupNode::getCode, nodeCode) + .eq(MessageGroupNode::getIsDelete, 0) + .one(); + return Optional.ofNullable(groupNode).map(MessageGroupNodeDTO::from); + } + + @Override + public List listChildren(String nodeCode) { + return messageGroupNodeDao.lambdaQuery() + .eq(MessageGroupNode::getParentCode, nodeCode) + .eq(MessageGroupNode::getIsDelete, 0) + .list().stream() + .map(MessageGroupNodeDTO::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 471eda24..acc7ff95 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 @@ -12,10 +12,12 @@ import cn.axzo.msg.center.message.domain.dto.PendingMessageDTO; import cn.axzo.msg.center.message.domain.dto.RawMessageRouterDTO; import cn.axzo.msg.center.message.domain.param.MessageGroupNodeStatisticParam; import cn.axzo.msg.center.message.domain.param.PendingMessagePushParam; +import cn.axzo.msg.center.message.service.MessageGroupService; import cn.axzo.msg.center.message.service.MessageTemplateGroupService; import cn.axzo.msg.center.message.service.MessageTemplateNewService; import cn.axzo.msg.center.message.service.PendingMessageNewService; import cn.axzo.msg.center.service.dto.MessageRouterDTO; +import cn.axzo.msg.center.service.dto.PersonDTO; import cn.axzo.msg.center.service.dto.QueryOrderByDTO; import cn.axzo.msg.center.service.enums.PendingMessageRoleCategoryEnum; import cn.axzo.msg.center.service.enums.PendingMessageStateEnum; @@ -37,6 +39,7 @@ import java.util.Date; import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.Stack; import java.util.stream.Collectors; /** @@ -51,6 +54,7 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class PendingMessageNewServiceImpl implements PendingMessageNewService { + private final MessageGroupService messageGroupService; private final PendingMessageRecordDao pendingMessageRecordDao; private final MessageTemplateRouterDao messageTemplateRouterDao; private final MessageTemplateNewService messageTemplateNewService; @@ -58,8 +62,10 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { @Override public List groupStatistic(MessageGroupNodeStatisticParam param) { - // TODO: [cold_blade] 消息分类统计 - return null; + // TODO: [cold_blade] 消息分类统计这里只统计代办执行人的 + return param.getGroupNodeCodes().stream() + .map(e -> statistic(e, param.getOperator())) + .collect(Collectors.toList()); } @Override @@ -202,4 +208,36 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { record.setIsDelete(0); return record; } + + private MessageGroupNodeDTO statistic(String groupNodeCode, PersonDTO operator) { + MessageGroupNodeDTO groupNode = messageGroupService.queryByNodeCode(groupNodeCode) + .orElseThrow(() -> new ServiceException("groupNodeCode is invalid.")); + MessageGroupNodeDTO root = groupNode; + Stack stack = new Stack<>(); + stack.push(groupNode); + List children; + while (!stack.isEmpty()) { + groupNode = stack.pop(); + statistic(groupNode, operator); + children = messageGroupService.listChildren(groupNode.getNodeCode()); + groupNode.setChildren(children); + children.forEach(stack::push); + } + return root; + } + + private void statistic(MessageGroupNodeDTO groupNode, PersonDTO operator) { + List templateCodes = messageTemplateGroupService.listMessageTemplateCodes(groupNode.getNodeCode()); + if (CollectionUtils.isEmpty(templateCodes)) { + groupNode.setPendingCount(0); + return; + } + int cnt = pendingMessageRecordDao.lambdaQuery() + .in(PendingMessageRecord::getTemplateCode, templateCodes) + .eq(PendingMessageRecord::getExecutorPersonId, operator.getId()) + .eq(PendingMessageRecord::getState, PendingMessageStateEnum.HAS_BEEN_SENT) + .eq(PendingMessageRecord::getIsDelete, 0) + .count(); + groupNode.setPendingCount(cnt); + } } diff --git a/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageGroupNodeDao.java b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageGroupNodeDao.java new file mode 100644 index 00000000..cfced37a --- /dev/null +++ b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageGroupNodeDao.java @@ -0,0 +1,17 @@ +package cn.axzo.msg.center.dal; + +import cn.axzo.msg.center.dal.mapper.MessageGroupNodeMapper; +import cn.axzo.msg.center.domain.entity.MessageGroupNode; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author cold_blade + * @date 2023/10/6 + * @version 1.0 + */ +@Slf4j +@Component +public class MessageGroupNodeDao extends ServiceImpl { +} From 8efaf79afd0b7c7c2e2a19d985e16c69b923967a Mon Sep 17 00:00:00 2001 From: luofu Date: Fri, 6 Oct 2023 11:13:10 +0800 Subject: [PATCH 21/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E8=AF=A6=E6=83=85&=E5=AE=8C=E6=88=90&=E6=92=A4=E5=9B=9E?= =?UTF-8?q?=E7=AD=89=E5=8A=9F=E8=83=BD=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 代办详情&完成&撤回等功能的实现 影响: 无 --- .../msg/center/message/domain/dto/MessageGroupNodeDTO.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageGroupNodeDTO.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageGroupNodeDTO.java index f52014c7..37bd6303 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageGroupNodeDTO.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageGroupNodeDTO.java @@ -13,6 +13,7 @@ import lombok.Setter; import java.io.Serializable; import java.util.List; +import java.util.stream.Collectors; /** * @description @@ -72,7 +73,11 @@ public class MessageGroupNodeDTO implements Serializable { } public MessageGroupNodeResponse toResponse() { - return BeanConverter.convert(this, MessageGroupNodeResponse.class); + MessageGroupNodeResponse response = BeanConverter.convert(this, MessageGroupNodeResponse.class); + List children = this.children.stream() + .map(MessageGroupNodeDTO::toResponse).collect(Collectors.toList()); + response.setNodeChildren(children); + return response; } @Override From 455fd526174eb4b8f9e6f7fc08b46aefba0f1a61 Mon Sep 17 00:00:00 2001 From: luofu Date: Fri, 6 Oct 2023 11:27:21 +0800 Subject: [PATCH 22/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E8=AF=A6=E6=83=85&=E5=AE=8C=E6=88=90&=E6=92=A4=E5=9B=9E?= =?UTF-8?q?=E7=AD=89=E5=8A=9F=E8=83=BD=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 代办详情&完成&撤回等功能的实现 影响: 无 --- .../center/service/enums/TerminalTypeEnum.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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 0f4c1eac..1394e4fc 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 @@ -24,4 +24,20 @@ public enum TerminalTypeEnum { private final Integer code; private final String desc; + + public static TerminalTypeEnum descOf(String systemType) { + if (IOS.desc.equals(systemType)) { + return IOS; + } + if (ANDROID.desc.equals(systemType)) { + return ANDROID; + } + if (WECHAT_MINI_PROGRAM.desc.equals(systemType)) { + return WECHAT_MINI_PROGRAM; + } + if (MINI_PROGRAM.desc.equals(systemType)) { + return MINI_PROGRAM; + } + return WEB; + } } From 66b0bf1cdc07e86aa081e4d573484e46e6184121 Mon Sep 17 00:00:00 2001 From: luofu Date: Fri, 6 Oct 2023 15:35:33 +0800 Subject: [PATCH 23/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E8=AF=A6=E6=83=85&=E5=AE=8C=E6=88=90&=E6=92=A4=E5=9B=9E?= =?UTF-8?q?=E7=AD=89=E5=8A=9F=E8=83=BD=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 代办详情&完成&撤回等功能的实现 影响: 无 --- .../message/domain/dto/PendingMessageDTO.java | 9 ++- .../service/MessageTemplateNewService.java | 9 +++ .../service/MessageTemplateRouterService.java | 9 +++ .../impl/MessageTemplateNewServiceImpl.java | 23 ++++++ .../MessageTemplateRouterServiceImpl.java | 14 +++- .../impl/PendingMessageNewServiceImpl.java | 72 +++++++++++++------ .../msg/center/utils/MessageRouterUtil.java | 19 ++--- .../response/PendingMessageResponse.java | 3 +- .../center/dal/MessageTemplateRouterDao.java | 14 ++-- .../center/dal/PendingMessageRecordDao.java | 11 ++- 10 files changed, 138 insertions(+), 45 deletions(-) diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java index 3e2e3bd3..beb999c3 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java @@ -15,6 +15,7 @@ import lombok.Setter; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.List; import java.util.Optional; /** @@ -45,6 +46,10 @@ public class PendingMessageDTO implements Serializable { * 消息内容 */ private String content; + /** + * 卡片信息的JSON字符串 + */ + private String cardContent; /** * 代办发起者信息 */ @@ -76,7 +81,7 @@ public class PendingMessageDTO implements Serializable { /** * 路由信息,可为空 */ - private MessageRouterDTO router; + private List routers; public static PendingMessageDTO from(PendingMessageRecord pendingMessageRecord) { // 代办发起者信息 @@ -121,7 +126,7 @@ public class PendingMessageDTO implements Serializable { .bizDesc(this.bizDesc) .createTimestamp(DateFormatUtil.toTimestamp(this.createTime)) .updateTimestamp(DateFormatUtil.toTimestamp(this.updateTime)) - .router(this.router) + .routers(this.routers) .build(); } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java index 551c6511..6836bb14 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java @@ -3,6 +3,7 @@ package cn.axzo.msg.center.message.service; import cn.axzo.msg.center.message.domain.dto.MessageTemplateDTO; import cn.axzo.msg.center.message.domain.param.MessageTemplateCreateParam; +import java.util.List; import java.util.Optional; /** @@ -28,4 +29,12 @@ public interface MessageTemplateNewService { * @return 模板信息 */ Optional queryByTemplateCode(String msgTemplateCode); + + /** + * 通过模板编码查询模板信息 + * + * @param msgTemplateCodes 模板编码列表 + * @return 模板信息 + */ + List listByTemplateCodes(List msgTemplateCodes); } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateRouterService.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateRouterService.java index 7a265278..915b43c1 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateRouterService.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateRouterService.java @@ -3,6 +3,7 @@ package cn.axzo.msg.center.message.service; import cn.axzo.msg.center.message.domain.dto.RawMessageRouterDTO; import java.util.List; +import java.util.Map; /** * @description @@ -28,4 +29,12 @@ public interface MessageTemplateRouterService { * @param routers 路由列表 */ void batchInsert(List routers); + + /** + * 根据消息模板编码查询配置的路由列表 + * + * @param templateCodes 消息模板编码列表 + * @return 路由列表 + */ + Map> groupByTemplateCode(List templateCodes); } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java index b3388116..bcd72b7c 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java @@ -14,8 +14,10 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; @@ -65,6 +67,27 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService return Optional.of(MessageTemplateDTO.from(msgBaseTemplate, routers)); } + @Override + public List listByTemplateCodes(List msgTemplateCodes) { + if (CollectionUtils.isEmpty(msgTemplateCodes)) { + log.info("msgTemplateCodes is empty."); + return Collections.emptyList(); + } + List msgBaseTemplates = messageBaseTemplateDao.lambdaQuery() + .in(MessageBaseTemplate::getCode, msgTemplateCodes) + .eq(MessageBaseTemplate::getIsDelete, 0) + .list(); + if (Objects.isNull(msgBaseTemplates)) { + log.info("not find the [{}] templates.", msgTemplateCodes); + return Collections.emptyList(); + } + Map> templateRouterMap = messageTemplateRouterService + .groupByTemplateCode(msgTemplateCodes); + return msgBaseTemplates.stream() + .map(e -> MessageTemplateDTO.from(e, templateRouterMap.getOrDefault(e.getCode(), Collections.emptyList()))) + .collect(Collectors.toList()); + } + private MessageBaseTemplate convert(MessageTemplateCreateParam param) { MessageBaseTemplate template = BeanConverter.convert(param, MessageBaseTemplate.class); template.setName(param.getTemplateName()); 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 9b7ab8e7..8a0ca09d 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 @@ -4,6 +4,7 @@ import cn.axzo.msg.center.dal.MessageTemplateRouterDao; import cn.axzo.msg.center.domain.entity.MessageTemplateRouter; import cn.axzo.msg.center.message.domain.dto.RawMessageRouterDTO; import cn.axzo.msg.center.message.service.MessageTemplateRouterService; +import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; @@ -12,6 +13,7 @@ import org.springframework.stereotype.Service; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -34,7 +36,7 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe log.warn("the template code is blank."); return Collections.emptyList(); } - return messageTemplateRouterDao.listByTemplateCode(templateCode).stream() + return messageTemplateRouterDao.listByTemplateCode(Lists.newArrayList(templateCode)).stream() .map(RawMessageRouterDTO::from) .collect(Collectors.toList()); } @@ -49,4 +51,14 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe .collect(Collectors.toList()); messageTemplateRouterDao.saveBatch(messageTemplateRouters); } + + @Override + public Map> groupByTemplateCode(List templateCodes) { + if (CollectionUtils.isEmpty(templateCodes)) { + return Collections.emptyMap(); + } + return messageTemplateRouterDao.listByTemplateCode(templateCodes).stream() + .map(RawMessageRouterDTO::from) + .collect(Collectors.groupingBy(RawMessageRouterDTO::getTemplateCode)); + } } 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 acc7ff95..ee8ab609 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 @@ -3,6 +3,7 @@ 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; import cn.axzo.msg.center.dal.MessageTemplateRouterDao; import cn.axzo.msg.center.dal.PendingMessageRecordDao; import cn.axzo.msg.center.domain.entity.PendingMessageRecord; @@ -18,7 +19,7 @@ import cn.axzo.msg.center.message.service.MessageTemplateNewService; import cn.axzo.msg.center.message.service.PendingMessageNewService; import cn.axzo.msg.center.service.dto.MessageRouterDTO; import cn.axzo.msg.center.service.dto.PersonDTO; -import cn.axzo.msg.center.service.dto.QueryOrderByDTO; +import cn.axzo.msg.center.service.enums.OrganizationTypeEnum; import cn.axzo.msg.center.service.enums.PendingMessageRoleCategoryEnum; import cn.axzo.msg.center.service.enums.PendingMessageStateEnum; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; @@ -27,14 +28,17 @@ import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; import cn.axzo.msg.center.utils.MessageRouterUtil; import cn.axzo.msg.center.utils.UUIDUtil; import cn.azxo.framework.common.model.Page; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Objects; @@ -100,15 +104,15 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { query.in(CollectionUtils.isNotEmpty(templateCodes), PendingMessageRecord::getTemplateCode, templateCodes); } query.like(StringUtils.isNotBlank(request.getTitle()), PendingMessageRecord::getTitle, request.getTitle()); - if (CollectionUtils.isNotEmpty(request.getOrderFields())) { - for (QueryOrderByDTO orderBy : request.getOrderFields()) { - // TODO:[cold_blade] [P2] 排序优化 - } - } + // TODO:[cold_blade] [P2] 排序优化 + query.orderByDesc(PendingMessageRecord::getCreateAt); IPage page = request.toPage(); - IPage result = pendingMessageRecordDao.page(page, query); + IPage result = query.page(page); + List templateCodes = result.getRecords().stream().map(PendingMessageRecord::getTemplateCode) + .collect(Collectors.toList()); + List messageTemplates = messageTemplateNewService.listByTemplateCodes(templateCodes); List responseRecords = result.getRecords().stream() - .map(e -> convert(e, request.getTerminalType()).toResponse()) + .map(e -> convert(e, request.getTerminalType(), messageTemplates).toResponse()) .collect(Collectors.toList()); return Page.toPage(request.getPage(), request.getPageSize(), result.getTotal(), responseRecords); } @@ -119,7 +123,15 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { log.info("the param of identityCode is blank."); return Optional.empty(); } - return pendingMessageRecordDao.queryByIdentityCode(msgIdentityCode).map(v -> convert(v, terminalType)); + PendingMessageRecord record = pendingMessageRecordDao.queryByIdentityCode(msgIdentityCode) + .orElse(null); + if (Objects.isNull(record)) { + return Optional.empty(); + } + List messageTemplates = messageTemplateNewService + .listByTemplateCodes(Lists.newArrayList(record.getTemplateCode())); + return pendingMessageRecordDao.queryByIdentityCode(msgIdentityCode) + .map(v -> convert(v, terminalType, messageTemplates)); } @Override @@ -162,26 +174,40 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { .update(); } - private PendingMessageDTO convert(PendingMessageRecord pendingMessageRecord, TerminalTypeEnum terminalType) { + private PendingMessageDTO convert(PendingMessageRecord pendingMessageRecord, TerminalTypeEnum terminalType, + List messageTemplates) { PendingMessageDTO pendingMessage = PendingMessageDTO.from(pendingMessageRecord); - // 从存储层获取对应模板的路由列表 - List rawRouters = messageTemplateRouterDao - .listByTemplateCode(pendingMessageRecord.getTemplateCode()).stream() - .map(RawMessageRouterDTO::from) - .collect(Collectors.toList()); - RawMessageRouterDTO rawRouter = MessageRouterUtil.selectRouter(rawRouters, terminalType).orElse(null); - if (Objects.nonNull(rawRouter)) { - MessageRouterDTO router = BeanConverter.convert(rawRouter, MessageRouterDTO.class); + // 对应模板的路由列表 + List rawRouters = messageTemplates.stream() + .filter(e -> Objects.equals(e.getCode(), pendingMessageRecord.getTemplateCode())) + .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()); - pendingMessage.setRouter(router); - } - // TODO: [cold_blade] [P1] 卡片信息的补充 + return router; + }).collect(Collectors.toList()); + pendingMessage.setRouters(routers); + // 获取模板卡片信息 + String cardContent = messageTemplates.stream() + .filter(e -> Objects.equals(e.getCode(), pendingMessageRecord.getTemplateCode())) + .findFirst() + .map(MessageTemplateDTO::getCardContent) + .orElse(null); + pendingMessage.setCardContent(cardContent); return pendingMessage; } private PendingMessageRecord convert(PendingMessagePushParam param, MessageTemplateDTO msgTemplate) { // TODO: [cold_blade] [P2] 待优化 + String content = msgTemplate.getContent(); + if (StringUtils.isNotBlank(param.getRouterParams())) { + content = PlaceholderResolver + .getDefaultResolver().resolve(content, JSON.parseObject(param.getRouterParams())); + } PendingMessageRecord record = new PendingMessageRecord(); record.setIdentityCode(UUIDUtil.uuidString()); record.setPromoterId(param.getPromoter().getIdentity().getId()); @@ -192,8 +218,8 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { record.setExecutorPersonId(param.getExecutor().getId()); record.setTemplateCode(param.getTemplateCode()); record.setTitle(msgTemplate.getTitle()); - record.setContent(msgTemplate.getContent()); - record.setOrgType(param.getOrgType()); + record.setContent(content); + record.setOrgType(Objects.isNull(param.getOrgType()) ? OrganizationTypeEnum.UNKNOWN : param.getOrgType()); record.setOrgId(param.getOrgId()); record.setOrgName(param.getOrgName()); record.setState(PendingMessageStateEnum.HAS_BEEN_SENT); 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 3843d8f1..c938fb9b 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 @@ -12,9 +12,10 @@ import lombok.NoArgsConstructor; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import java.util.Collections; import java.util.List; import java.util.Objects; -import java.util.Optional; +import java.util.stream.Collectors; /** * @description @@ -47,20 +48,14 @@ public final class MessageRouterUtil { * @param terminalType 指定的终端类型,可为null * @return 合适的路由 */ - public static Optional selectRouter(List messageRouters, - TerminalTypeEnum terminalType) { + public static List selectRouter(List messageRouters, + TerminalTypeEnum terminalType) { if (CollectionUtils.isEmpty(messageRouters)) { - return Optional.empty(); + return Collections.emptyList(); } - Optional op = messageRouters.stream() + return messageRouters.stream() .filter(e -> Objects.equals(e.getTerminalType(), terminalType)) - .findFirst(); - if (op.isPresent()) { - // 优先选取与目标类型匹配的路由 - return op; - } - // 配置的路由中没有与目标类型匹配的,则根据优先级来选取 - return messageRouters.stream().min(MessageRouterUtil::compare); + .collect(Collectors.toList()); } /** diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java index a51f9fdd..a3790536 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java @@ -10,6 +10,7 @@ import lombok.NoArgsConstructor; import lombok.Setter; import java.io.Serializable; +import java.util.List; /** * @description @@ -70,7 +71,7 @@ public class PendingMessageResponse implements Serializable { /** * 路由信息,可为空 */ - private MessageRouterDTO router; + private List routers; @Override public String toString() { diff --git a/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageTemplateRouterDao.java b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageTemplateRouterDao.java index 1d5f4a2c..ac1867f8 100644 --- a/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageTemplateRouterDao.java +++ b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/MessageTemplateRouterDao.java @@ -4,6 +4,7 @@ import cn.axzo.msg.center.dal.mapper.MessageTemplateRouterMapper; import cn.axzo.msg.center.domain.entity.MessageTemplateRouter; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Component; import java.util.Collections; @@ -23,11 +24,16 @@ public class MessageTemplateRouterDao extends ServiceImpl listByTemplateCode(String templateCode) { - // TODO: [cold_blade] - return Collections.emptyList(); + public List listByTemplateCode(List templateCodes) { + if (CollectionUtils.isEmpty(templateCodes)) { + return Collections.emptyList(); + } + return lambdaQuery() + .in(MessageTemplateRouter::getTemplateCode, templateCodes) + .eq(MessageTemplateRouter::getIsDelete, 0) + .list(); } } diff --git a/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/PendingMessageRecordDao.java b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/PendingMessageRecordDao.java index f8c84f15..de4a3053 100644 --- a/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/PendingMessageRecordDao.java +++ b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/PendingMessageRecordDao.java @@ -4,6 +4,7 @@ import cn.axzo.msg.center.dal.mapper.PendingMessageRecordMapper; import cn.axzo.msg.center.domain.entity.PendingMessageRecord; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import java.util.Optional; @@ -25,7 +26,13 @@ public class PendingMessageRecordDao extends ServiceImpl queryByIdentityCode(String msgIdentityCode) { - // TODO: [cold_blade] - return Optional.empty(); + if (StringUtils.isBlank(msgIdentityCode)) { + return Optional.empty(); + } + PendingMessageRecord record = lambdaQuery() + .eq(PendingMessageRecord::getIdentityCode, msgIdentityCode) + .eq(PendingMessageRecord::getIsDelete, 0) + .one(); + return Optional.ofNullable(record); } } From 192d7b241efaf00b6282faeb4bf96433a9c99874 Mon Sep 17 00:00:00 2001 From: luofu Date: Fri, 6 Oct 2023 17:52:10 +0800 Subject: [PATCH 24/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E8=AF=A6=E6=83=85&=E5=AE=8C=E6=88=90&=E6=92=A4=E5=9B=9E?= =?UTF-8?q?=E7=AD=89=E5=8A=9F=E8=83=BD=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 代办详情&完成&撤回等功能的实现 影响: 无 --- .../msg/center/message/domain/dto/PendingMessageDTO.java | 4 ++-- .../service/pending/response/PendingMessageResponse.java | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java index beb999c3..3361449c 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java @@ -119,8 +119,8 @@ public class PendingMessageDTO implements Serializable { .identityCode(this.identityCode) .title(this.title) .content(this.content) - .promoter(Optional.ofNullable(this.promoter).map(PersonDTO::getIdentity).orElse(null)) - .executor(Optional.ofNullable(this.executor).map(PersonDTO::getIdentity).orElse(null)) + .promoterPersonId(Optional.ofNullable(this.promoter).map(PersonDTO::getId).orElse(null)) + .executorPersonId(Optional.ofNullable(this.executor).map(PersonDTO::getId).orElse(null)) .bizCode(this.bizCode) .subBizCode(this.subBizCode) .bizDesc(this.bizDesc) diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java index a3790536..c5d8611e 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java @@ -41,13 +41,13 @@ public class PendingMessageResponse implements Serializable { */ private String content; /** - * 代办发起者信息 + * 代办发起者自然人id */ - private IdentityDTO promoter; + private Long promoterPersonId; /** - * 代办执行者信息 + * 代办执行者自然人id */ - private IdentityDTO executor; + private Long executorPersonId; /** * 业务编码 */ From bff87a2f0cbcb1bc45992cfa91b6a4bef7f31cd1 Mon Sep 17 00:00:00 2001 From: luofu Date: Fri, 6 Oct 2023 19:15:58 +0800 Subject: [PATCH 25/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E8=AF=A6=E6=83=85&=E5=AE=8C=E6=88=90&=E6=92=A4=E5=9B=9E?= =?UTF-8?q?=E7=AD=89=E5=8A=9F=E8=83=BD=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 代办详情&完成&撤回等功能的实现 影响: 无 --- .../msg/center/message/domain/dto/PendingMessageDTO.java | 2 ++ .../service/pending/response/PendingMessageResponse.java | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java index 3361449c..e080751e 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java @@ -120,7 +120,9 @@ public class PendingMessageDTO implements Serializable { .title(this.title) .content(this.content) .promoterPersonId(Optional.ofNullable(this.promoter).map(PersonDTO::getId).orElse(null)) + .promoterIdentity(Optional.ofNullable(this.promoter).map(PersonDTO::getIdentity).orElse(null)) .executorPersonId(Optional.ofNullable(this.executor).map(PersonDTO::getId).orElse(null)) + .executorIdentity(Optional.ofNullable(this.executor).map(PersonDTO::getIdentity).orElse(null)) .bizCode(this.bizCode) .subBizCode(this.subBizCode) .bizDesc(this.bizDesc) diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java index c5d8611e..a55b972f 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java @@ -44,10 +44,18 @@ public class PendingMessageResponse implements Serializable { * 代办发起者自然人id */ private Long promoterPersonId; + /** + * 代办发起者身份 + */ + private IdentityDTO promoterIdentity; /** * 代办执行者自然人id */ private Long executorPersonId; + /** + * 代办执行者身份 + */ + private IdentityDTO executorIdentity; /** * 业务编码 */ From d26c57d5d0f96688a716625b054bba12a5e48210 Mon Sep 17 00:00:00 2001 From: luofu Date: Fri, 6 Oct 2023 20:19:19 +0800 Subject: [PATCH 26/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E8=AF=A6=E6=83=85&=E5=AE=8C=E6=88=90&=E6=92=A4=E5=9B=9E?= =?UTF-8?q?=E7=AD=89=E5=8A=9F=E8=83=BD=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 代办详情&完成&撤回等功能的实现 影响: 无 --- .../axzo/msg/center/message/domain/dto/PendingMessageDTO.java | 1 + .../message/service/impl/PendingMessageNewServiceImpl.java | 4 ++++ .../service/pending/response/PendingMessageResponse.java | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java index e080751e..3554c1e7 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java @@ -119,6 +119,7 @@ public class PendingMessageDTO implements Serializable { .identityCode(this.identityCode) .title(this.title) .content(this.content) + .cardContent(this.cardContent) .promoterPersonId(Optional.ofNullable(this.promoter).map(PersonDTO::getId).orElse(null)) .promoterIdentity(Optional.ofNullable(this.promoter).map(PersonDTO::getIdentity).orElse(null)) .executorPersonId(Optional.ofNullable(this.executor).map(PersonDTO::getId).orElse(null)) 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 ee8ab609..ec4e19b6 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 @@ -197,6 +197,10 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { .findFirst() .map(MessageTemplateDTO::getCardContent) .orElse(null); + if (StringUtils.isNotBlank(cardContent) && StringUtils.isNotBlank(pendingMessageRecord.getRouterParams())) { + cardContent = PlaceholderResolver.getDefaultResolver() + .resolveByMap(cardContent, JSON.parseObject(pendingMessageRecord.getRouterParams())); + } pendingMessage.setCardContent(cardContent); return pendingMessage; } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java index a55b972f..af348140 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java @@ -40,6 +40,10 @@ public class PendingMessageResponse implements Serializable { * 消息内容 */ private String content; + /** + * 卡片信息 + */ + private String cardContent; /** * 代办发起者自然人id */ From 0fed3a717bc5e74ac358a03c4032e535bd22ef1c Mon Sep 17 00:00:00 2001 From: luofu Date: Sat, 7 Oct 2023 10:58:06 +0800 Subject: [PATCH 27/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E5=8A=9F=E8=83=BD=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 代办详情功能的实现 影响: 无 --- .../msg/center/message/domain/dto/PendingMessageDTO.java | 7 +++++++ .../service/pending/response/PendingMessageResponse.java | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java index 3554c1e7..06d3cb8f 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java @@ -4,6 +4,7 @@ import cn.axzo.msg.center.domain.entity.PendingMessageRecord; import cn.axzo.msg.center.service.dto.IdentityDTO; import cn.axzo.msg.center.service.dto.MessageRouterDTO; import cn.axzo.msg.center.service.dto.PersonDTO; +import cn.axzo.msg.center.service.enums.BizCategoryEnum; import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; import cn.axzo.msg.center.utils.DateFormatUtil; import com.alibaba.fastjson.JSON; @@ -70,6 +71,10 @@ public class PendingMessageDTO implements Serializable { * 业务状态描述 */ private String bizDesc; + /** + * 业务类型 + */ + private BizCategoryEnum bizCategory; /** * 申请时间戳 */ @@ -109,6 +114,7 @@ public class PendingMessageDTO implements Serializable { .bizCode(pendingMessageRecord.getBizCode()) .subBizCode(pendingMessageRecord.getSubBizCode()) .bizDesc(pendingMessageRecord.getBizDesc()) + .bizCategory(pendingMessageRecord.getBizCategory()) .createTime(DateFormatUtil.toLocalDateTime(pendingMessageRecord.getCreateAt())) .updateTime(DateFormatUtil.toLocalDateTime(pendingMessageRecord.getUpdateAt())) .build(); @@ -127,6 +133,7 @@ public class PendingMessageDTO implements Serializable { .bizCode(this.bizCode) .subBizCode(this.subBizCode) .bizDesc(this.bizDesc) + .bizCategory(this.bizCategory) .createTimestamp(DateFormatUtil.toTimestamp(this.createTime)) .updateTimestamp(DateFormatUtil.toTimestamp(this.updateTime)) .routers(this.routers) diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java index af348140..07417bcb 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java @@ -2,6 +2,7 @@ package cn.axzo.msg.center.service.pending.response; import cn.axzo.msg.center.service.dto.IdentityDTO; import cn.axzo.msg.center.service.dto.MessageRouterDTO; +import cn.axzo.msg.center.service.enums.BizCategoryEnum; import com.alibaba.fastjson.JSON; import lombok.AllArgsConstructor; import lombok.Builder; @@ -72,6 +73,10 @@ public class PendingMessageResponse implements Serializable { * 业务状态描述 */ private String bizDesc; + /** + * 业务类型 + */ + private BizCategoryEnum bizCategory; /** * 申请时间戳 */ From bbeaa6565b030252b538d00e8f018d042bd91237 Mon Sep 17 00:00:00 2001 From: luofu Date: Sat, 7 Oct 2023 14:40:56 +0800 Subject: [PATCH 28/34] =?UTF-8?q?docs(REQ-1309):=20=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 相关注释的增删 影响: 无 --- .../msg/center/inside/notices/event/SendMessageEvent.java | 2 +- .../center/inside/notices/listener/SendMessageListener.java | 2 +- .../src/main/java/cn/axzo/msg/center/utils/UUIDUtil.java | 5 ----- .../main/java/cn/axzo/msg/center/api/enums/BizTypeEnum.java | 2 +- .../cn/axzo/msg/center/api/request/MsgReturnParamRes.java | 2 +- .../src/main/java/cn/axzo/msg/center/common/enums/IEnum.java | 2 +- .../main/java/cn/axzo/msg/center/common/enums/OuType.java | 2 +- .../axzo/msg/center/notices/manager/api/SmsSendManager.java | 2 +- .../msg/center/notices/manager/LianLuSmsSendManagerImpl.java | 1 - .../center/notices/manager/SubMailSmsSendManagerImpl.java | 1 - .../msg/center/notices/service/impl/TaskServiceImpl.java | 1 - 11 files changed, 7 insertions(+), 15 deletions(-) diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/event/SendMessageEvent.java b/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/event/SendMessageEvent.java index 409db481..398c8dd1 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/event/SendMessageEvent.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/event/SendMessageEvent.java @@ -8,7 +8,7 @@ import java.util.concurrent.atomic.AtomicInteger; /** * @ClassName SendMessgeEvent - * @Description TODO + * @Description * @Author zhangran * @Date 2022/4/8 11:36 **/ diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/listener/SendMessageListener.java b/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/listener/SendMessageListener.java index 48bb86ab..d06d219d 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/listener/SendMessageListener.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/listener/SendMessageListener.java @@ -24,7 +24,7 @@ import javax.annotation.Resource; /** * @ClassName SendMessageListener - * @Description TODO + * @Description * @Author zhangran * @Date 2022/4/8 11:44 **/ diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/utils/UUIDUtil.java b/inside-notices/src/main/java/cn/axzo/msg/center/utils/UUIDUtil.java index 8c35d249..167ccc52 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/utils/UUIDUtil.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/utils/UUIDUtil.java @@ -23,9 +23,4 @@ public final class UUIDUtil { public static String uuidRawString() { return UUID.randomUUID().toString(); } - - public static void main(String[] arv) { - //TODO:[cold_blade] - System.out.println(uuidString()); - } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/api/enums/BizTypeEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/api/enums/BizTypeEnum.java index c3d5a146..0b4d5585 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/api/enums/BizTypeEnum.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/api/enums/BizTypeEnum.java @@ -5,7 +5,7 @@ import lombok.Getter; import java.util.Arrays; /** - * TODO + * * * @author wangli * @date 2023/5/6 19:11 diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/api/request/MsgReturnParamRes.java b/msg-center-api/src/main/java/cn/axzo/msg/center/api/request/MsgReturnParamRes.java index e3d3a818..e6713d3c 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/api/request/MsgReturnParamRes.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/api/request/MsgReturnParamRes.java @@ -6,7 +6,7 @@ import java.io.Serializable; /** * @ClassName MsgReturnParamRes - * @Description TODO + * @Description * @Author zhangran * @Date 2022/3/28 19:12 **/ diff --git a/msg-center-common/src/main/java/cn/axzo/msg/center/common/enums/IEnum.java b/msg-center-common/src/main/java/cn/axzo/msg/center/common/enums/IEnum.java index 5cfefbe0..e115d593 100644 --- a/msg-center-common/src/main/java/cn/axzo/msg/center/common/enums/IEnum.java +++ b/msg-center-common/src/main/java/cn/axzo/msg/center/common/enums/IEnum.java @@ -3,7 +3,7 @@ package cn.axzo.msg.center.common.enums; /** * 项目名称:pudge * 类 名 称:AbstractEnum - * 类 描 述:TODO + * 类 描 述: * 创建时间:2022/7/14 12:26 * 创 建 人:xuyaozuo */ diff --git a/msg-center-common/src/main/java/cn/axzo/msg/center/common/enums/OuType.java b/msg-center-common/src/main/java/cn/axzo/msg/center/common/enums/OuType.java index b5fd0c9c..3c7a58d8 100644 --- a/msg-center-common/src/main/java/cn/axzo/msg/center/common/enums/OuType.java +++ b/msg-center-common/src/main/java/cn/axzo/msg/center/common/enums/OuType.java @@ -8,7 +8,7 @@ import lombok.RequiredArgsConstructor; /** * 项目名称:profiles * 类 名 称:OuType - * 类 描 述:TODO + * 类 描 述: * 创建时间:2022/5/13 14:41 * 创 建 人:xuyaozuo */ diff --git a/msg-notices/msg-notices-manager-api/src/main/java/cn/axzo/msg/center/notices/manager/api/SmsSendManager.java b/msg-notices/msg-notices-manager-api/src/main/java/cn/axzo/msg/center/notices/manager/api/SmsSendManager.java index 81d8fa63..56848363 100644 --- a/msg-notices/msg-notices-manager-api/src/main/java/cn/axzo/msg/center/notices/manager/api/SmsSendManager.java +++ b/msg-notices/msg-notices-manager-api/src/main/java/cn/axzo/msg/center/notices/manager/api/SmsSendManager.java @@ -24,7 +24,7 @@ public interface SmsSendManager { /** * 发送批量短信 * - * TODO 多个渠道请求对象响应对象需求统一 + * 多个渠道请求对象响应对象需求统一 * @param requestDto * @return */ diff --git a/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/LianLuSmsSendManagerImpl.java b/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/LianLuSmsSendManagerImpl.java index 4dd8a404..4b99e991 100644 --- a/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/LianLuSmsSendManagerImpl.java +++ b/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/LianLuSmsSendManagerImpl.java @@ -65,7 +65,6 @@ public class LianLuSmsSendManagerImpl implements SmsSendManager { @Override public BatchMessageSendResponseDto sendBatchMessage(BatchMessageSendRequestDto requestDto) { - // FIXME:[cold_blade] 暂时还未支持有待后续的开发 throw new UnsupportedOperationException(); } diff --git a/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/SubMailSmsSendManagerImpl.java b/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/SubMailSmsSendManagerImpl.java index 7a1888ac..3d572bdf 100644 --- a/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/SubMailSmsSendManagerImpl.java +++ b/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/SubMailSmsSendManagerImpl.java @@ -51,7 +51,6 @@ public class SubMailSmsSendManagerImpl implements SmsSendManager { @Override public BatchMessageSendResponseDto sendBatchMessage(BatchMessageSendRequestDto requestDto) { - // FIXME:[cold_blade] 暂时还未支持有待后续的开发 throw new UnsupportedOperationException(); } } diff --git a/msg-notices/msg-notices-service/src/main/java/cn/axzo/msg/center/notices/service/impl/TaskServiceImpl.java b/msg-notices/msg-notices-service/src/main/java/cn/axzo/msg/center/notices/service/impl/TaskServiceImpl.java index 75e47658..83b1eab7 100644 --- a/msg-notices/msg-notices-service/src/main/java/cn/axzo/msg/center/notices/service/impl/TaskServiceImpl.java +++ b/msg-notices/msg-notices-service/src/main/java/cn/axzo/msg/center/notices/service/impl/TaskServiceImpl.java @@ -354,7 +354,6 @@ public class TaskServiceImpl implements TaskService { try { batchMessageManger.sendBatchMessageAndHandleReceipt(message); } catch (Exception e) { - // TODO 发送消息到钉钉 LogUtil.error("TaskServiceImpl.realBatchMessageSplitCompensation send channel fail", e); } }); From 347ba098284168d25f430b906b280f13c5854821 Mon Sep 17 00:00:00 2001 From: luofu Date: Sat, 7 Oct 2023 16:02:27 +0800 Subject: [PATCH 29/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E5=B7=A6=E4=BE=A7=E6=A0=91=E7=BB=9F=E8=AE=A1=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 代办左侧树统计功能的实现 影响: 无 --- .../controller/MessageTemplateController.java | 2 +- .../param/MessageGroupNodeStatisticParam.java | 1 - .../impl/PendingMessageNewServiceImpl.java | 60 ++++++++++++++----- .../msg/center/service/dto/IdentityDTO.java | 5 ++ 4 files changed, 51 insertions(+), 17 deletions(-) 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 05b7c8e8..d8e9d4d0 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 @@ -31,7 +31,7 @@ public class MessageTemplateController implements MessageTemplateClient { @Override public CommonResponse batchMove(MessageTemplateMoveToRequest request) { - // TODO:[cold_blade] + // TODO: [cold_blade] [P2] 模板关联的批量移动 return null; } } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/MessageGroupNodeStatisticParam.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/MessageGroupNodeStatisticParam.java index 3a80391f..1609d360 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/MessageGroupNodeStatisticParam.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/MessageGroupNodeStatisticParam.java @@ -43,7 +43,6 @@ public class MessageGroupNodeStatisticParam implements Serializable { /** * 代办角色 * PROMOTER: 发起者 - * CREATOR: 创建者 * EXECUTOR: 执行者 */ private PendingMessageRoleCategoryEnum roleCategory; 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 ec4e19b6..5f5bed69 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 @@ -4,7 +4,6 @@ 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; -import cn.axzo.msg.center.dal.MessageTemplateRouterDao; import cn.axzo.msg.center.dal.PendingMessageRecordDao; import cn.axzo.msg.center.domain.entity.PendingMessageRecord; import cn.axzo.msg.center.message.domain.dto.MessageGroupNodeDTO; @@ -17,8 +16,10 @@ import cn.axzo.msg.center.message.service.MessageGroupService; import cn.axzo.msg.center.message.service.MessageTemplateGroupService; import cn.axzo.msg.center.message.service.MessageTemplateNewService; import cn.axzo.msg.center.message.service.PendingMessageNewService; +import cn.axzo.msg.center.service.dto.IdentityDTO; import cn.axzo.msg.center.service.dto.MessageRouterDTO; import cn.axzo.msg.center.service.dto.PersonDTO; +import cn.axzo.msg.center.service.enums.IdentityTypeEnum; import cn.axzo.msg.center.service.enums.OrganizationTypeEnum; import cn.axzo.msg.center.service.enums.PendingMessageRoleCategoryEnum; import cn.axzo.msg.center.service.enums.PendingMessageStateEnum; @@ -30,6 +31,7 @@ import cn.axzo.msg.center.utils.UUIDUtil; import cn.azxo.framework.common.model.Page; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; @@ -60,15 +62,13 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { private final MessageGroupService messageGroupService; private final PendingMessageRecordDao pendingMessageRecordDao; - private final MessageTemplateRouterDao messageTemplateRouterDao; private final MessageTemplateNewService messageTemplateNewService; private final MessageTemplateGroupService messageTemplateGroupService; @Override public List groupStatistic(MessageGroupNodeStatisticParam param) { - // TODO: [cold_blade] 消息分类统计这里只统计代办执行人的 return param.getGroupNodeCodes().stream() - .map(e -> statistic(e, param.getOperator())) + .flatMap(e -> statistic(e, param).stream()) .collect(Collectors.toList()); } @@ -239,35 +239,65 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { return record; } - private MessageGroupNodeDTO statistic(String groupNodeCode, PersonDTO operator) { - MessageGroupNodeDTO groupNode = messageGroupService.queryByNodeCode(groupNodeCode) + private List statistic(String rootNodeCode, MessageGroupNodeStatisticParam param) { + MessageGroupNodeDTO groupNode = messageGroupService.queryByNodeCode(rootNodeCode) .orElseThrow(() -> new ServiceException("groupNodeCode is invalid.")); MessageGroupNodeDTO root = groupNode; Stack stack = new Stack<>(); stack.push(groupNode); List children; while (!stack.isEmpty()) { + // TODO: [cold_blade] [P3] 优化树形分类结点的统计效率 groupNode = stack.pop(); - statistic(groupNode, operator); + statistic(groupNode, param); children = messageGroupService.listChildren(groupNode.getNodeCode()); groupNode.setChildren(children); children.forEach(stack::push); } - return root; + // 外部传的是根节点,但是前端希望只返回根节点的字节的 + return root.getChildren(); } - private void statistic(MessageGroupNodeDTO groupNode, PersonDTO operator) { + private void statistic(MessageGroupNodeDTO groupNode, MessageGroupNodeStatisticParam param) { List templateCodes = messageTemplateGroupService.listMessageTemplateCodes(groupNode.getNodeCode()); if (CollectionUtils.isEmpty(templateCodes)) { groupNode.setPendingCount(0); return; } - int cnt = pendingMessageRecordDao.lambdaQuery() + LambdaQueryChainWrapper query = pendingMessageRecordDao.lambdaQuery() .in(PendingMessageRecord::getTemplateCode, templateCodes) - .eq(PendingMessageRecord::getExecutorPersonId, operator.getId()) - .eq(PendingMessageRecord::getState, PendingMessageStateEnum.HAS_BEEN_SENT) - .eq(PendingMessageRecord::getIsDelete, 0) - .count(); - groupNode.setPendingCount(cnt); + .like(StringUtils.isNotBlank(param.getTitle()), PendingMessageRecord::getTitle, param.getTitle()) + .eq(Objects.nonNull(param.getMsgState()), PendingMessageRecord::getState, param.getMsgState()) + .eq(PendingMessageRecord::getIsDelete, 0); + buildPersonCondition(query, param.getWithIdentify(), param.getRoleCategory(), param.getOperator()); + groupNode.setPendingCount(query.count()); + } + + private void buildPersonCondition(LambdaQueryChainWrapper query, Boolean withIdentify, + PendingMessageRoleCategoryEnum roleCategory, PersonDTO operator) { + IdentityDTO identity = null; + if (Objects.equals(withIdentify, true)) { + // 代办需要对身份进行隔离 + identity = operator.getIdentity(); + } + SFunction personIdFunc; + SFunction identityIdFunc; + SFunction identityTypeFunc; + if (Objects.equals(PendingMessageRoleCategoryEnum.PROMOTER, roleCategory)) { + // 代办发起者查询条件 + personIdFunc = PendingMessageRecord::getPromoterPersonId; + identityIdFunc = PendingMessageRecord::getPromoterId; + identityTypeFunc = PendingMessageRecord::getPromoterType; + } else { + // 代办执行者查询条件 + personIdFunc = PendingMessageRecord::getExecutorPersonId; + identityIdFunc = PendingMessageRecord::getExecutorId; + identityTypeFunc = PendingMessageRecord::getExecutorType; + } + query.eq(personIdFunc, operator.getId()); + if (Objects.nonNull(identity) && identity.isValid()) { + query.eq(identityIdFunc, identity.getId()); + query.eq(identityTypeFunc, identity.getType()); + } } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/IdentityDTO.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/IdentityDTO.java index 15550ede..3eb6ec55 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/IdentityDTO.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/IdentityDTO.java @@ -9,6 +9,7 @@ import lombok.NoArgsConstructor; import lombok.Setter; import java.io.Serializable; +import java.util.Objects; /** * @description @@ -35,6 +36,10 @@ public class IdentityDTO implements Serializable { */ private IdentityTypeEnum type; + public boolean isValid() { + return Objects.nonNull(id) && Objects.nonNull(type); + } + @Override public String toString() { return JSON.toJSONString(this); From 93b9882a9e0266315258effd56b5614ecb834d4a Mon Sep 17 00:00:00 2001 From: luofu Date: Sat, 7 Oct 2023 17:46:16 +0800 Subject: [PATCH 30/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 代办分页查询调整 影响: 无 --- .../impl/PendingMessageNewServiceImpl.java | 138 ++++++++++-------- .../msg/center/utils/OrderFieldParseUtil.java | 32 ++++ .../msg/center/service/dto/PersonDTO.java | 12 ++ .../request/PendingMessagePageRequest.java | 2 - 4 files changed, 122 insertions(+), 62 deletions(-) create mode 100644 inside-notices/src/main/java/cn/axzo/msg/center/utils/OrderFieldParseUtil.java 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 5f5bed69..2af80857 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 @@ -19,6 +19,7 @@ import cn.axzo.msg.center.message.service.PendingMessageNewService; import cn.axzo.msg.center.service.dto.IdentityDTO; import cn.axzo.msg.center.service.dto.MessageRouterDTO; import cn.axzo.msg.center.service.dto.PersonDTO; +import cn.axzo.msg.center.service.dto.QueryOrderByDTO; import cn.axzo.msg.center.service.enums.IdentityTypeEnum; import cn.axzo.msg.center.service.enums.OrganizationTypeEnum; import cn.axzo.msg.center.service.enums.PendingMessageRoleCategoryEnum; @@ -27,6 +28,7 @@ import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; import cn.axzo.msg.center.utils.MessageRouterUtil; +import cn.axzo.msg.center.utils.OrderFieldParseUtil; import cn.axzo.msg.center.utils.UUIDUtil; import cn.azxo.framework.common.model.Page; import com.alibaba.fastjson.JSON; @@ -40,6 +42,7 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.List; @@ -74,38 +77,22 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { @Override public Page pageQuery(PendingMessagePageRequest request) { - LambdaQueryChainWrapper query = pendingMessageRecordDao.lambdaQuery(); - if (Objects.equals(request.getRoleCategory(), PendingMessageRoleCategoryEnum.PROMOTER)) { - // 客户端指定查询代办发起者的代办消息 - query.eq(PendingMessageRecord::getPromoterPersonId, request.getPersonId()); - if (Objects.equals(request.getWithIdentify(), true)) { - // 客户端查询消息时需要隔离身份 - query.eq(Objects.nonNull(request.getIdentityId()), PendingMessageRecord::getPromoterId, - request.getIdentityId()); - query.eq(Objects.nonNull(request.getIdentityType()), PendingMessageRecord::getPromoterType, - request.getIdentityType()); - } - } else { - // 客户端未指定代办角色,默认查询代办执行者的代办消息 - query.eq(PendingMessageRecord::getExecutorPersonId, request.getPersonId()); - if (Objects.equals(request.getWithIdentify(), true)) { - // 客户端查询消息时需要隔离身份 - query.eq(Objects.nonNull(request.getIdentityId()), PendingMessageRecord::getExecutorId, - request.getIdentityId()); - query.eq(Objects.nonNull(request.getIdentityType()), PendingMessageRecord::getExecutorType, - request.getIdentityType()); - } - } - query.eq(Objects.nonNull(request.getMsgState()), PendingMessageRecord::getState, request.getMsgState()); + PersonDTO operator = PersonDTO.from(request.getPersonId(), request.getIdentityId(), request.getIdentityType()); + LambdaQueryChainWrapper query = pendingMessageRecordDao.lambdaQuery() + .eq(Objects.nonNull(request.getMsgState()), PendingMessageRecord::getState, request.getMsgState()) + .like(StringUtils.isNotBlank(request.getTitle()), PendingMessageRecord::getTitle, request.getTitle()) + .eq(PendingMessageRecord::getIsDelete, 0); + // 构建人维度的查询条件 + buildPersonCondition(query, request.getWithIdentify(), request.getRoleCategory(), operator); // 模板的分类,对代办进行分组过滤 if (StringUtils.isNotBlank(request.getGroupNodeCode())) { List templateCodes = messageTemplateGroupService .listMessageTemplateCodes(request.getGroupNodeCode()); query.in(CollectionUtils.isNotEmpty(templateCodes), PendingMessageRecord::getTemplateCode, templateCodes); } - query.like(StringUtils.isNotBlank(request.getTitle()), PendingMessageRecord::getTitle, request.getTitle()); - // TODO:[cold_blade] [P2] 排序优化 - query.orderByDesc(PendingMessageRecord::getCreateAt); + // 构建排序条件 + buildSortCondition(query, request.getOrderFields()); + IPage page = request.toPage(); IPage result = query.page(page); List templateCodes = result.getRecords().stream().map(PendingMessageRecord::getTemplateCode) @@ -205,40 +192,6 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { return pendingMessage; } - private PendingMessageRecord convert(PendingMessagePushParam param, MessageTemplateDTO msgTemplate) { - // TODO: [cold_blade] [P2] 待优化 - String content = msgTemplate.getContent(); - if (StringUtils.isNotBlank(param.getRouterParams())) { - content = PlaceholderResolver - .getDefaultResolver().resolve(content, JSON.parseObject(param.getRouterParams())); - } - PendingMessageRecord record = new PendingMessageRecord(); - record.setIdentityCode(UUIDUtil.uuidString()); - record.setPromoterId(param.getPromoter().getIdentity().getId()); - record.setPromoterType(param.getPromoter().getIdentity().getType()); - record.setPromoterPersonId(param.getPromoter().getId()); - record.setExecutorId(param.getExecutor().getIdentity().getId()); - record.setExecutorType(param.getExecutor().getIdentity().getType()); - record.setExecutorPersonId(param.getExecutor().getId()); - record.setTemplateCode(param.getTemplateCode()); - record.setTitle(msgTemplate.getTitle()); - record.setContent(content); - record.setOrgType(Objects.isNull(param.getOrgType()) ? OrganizationTypeEnum.UNKNOWN : param.getOrgType()); - record.setOrgId(param.getOrgId()); - record.setOrgName(param.getOrgName()); - record.setState(PendingMessageStateEnum.HAS_BEEN_SENT); - record.setBizCategory(param.getBizCategory()); - record.setBizCode(param.getBizCode()); - record.setSubBizCode(param.getSubBizCode()); - record.setBizDesc(param.getBizDesc()); - record.setRouterParams(param.getRouterParams()); - Date now = new Date(); - record.setCreateAt(now); - record.setUpdateAt(now); - record.setIsDelete(0); - return record; - } - private List statistic(String rootNodeCode, MessageGroupNodeStatisticParam param) { MessageGroupNodeDTO groupNode = messageGroupService.queryByNodeCode(rootNodeCode) .orElseThrow(() -> new ServiceException("groupNodeCode is invalid.")); @@ -300,4 +253,69 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { query.eq(identityTypeFunc, identity.getType()); } } + + private void buildSortCondition(LambdaQueryChainWrapper query, + Collection orderFields) { + if (CollectionUtils.isEmpty(orderFields)) { + return; + } + orderFields.stream() + .filter(e -> OrderFieldParseUtil.containsPendingMessageRecordOrderField(e.getOrderField())) + .forEach(e -> { + if (e.getIsAsc()) { + query.orderByAsc(OrderFieldParseUtil.parsePendingMessageRecordOrderField(e.getOrderField())); + } else { + query.orderByDesc(OrderFieldParseUtil.parsePendingMessageRecordOrderField(e.getOrderField())); + } + }); + } + + private PendingMessageRecord convert(PendingMessagePushParam param, MessageTemplateDTO msgTemplate) { + PendingMessageRecord record = new PendingMessageRecord(); + record.setIdentityCode(UUIDUtil.uuidString()); + record.setState(PendingMessageStateEnum.HAS_BEEN_SENT); + // 构建代办记录的人维度的相关信息 + buildPersonInfo(record, param.getPromoter(), param.getExecutor()); + // 构建模板信息 + buildTemplateInfo(record, msgTemplate, param.getRouterParams()); + // 构建代办所属企业/项目等相关信息 + record.setOrgType(Objects.isNull(param.getOrgType()) ? OrganizationTypeEnum.UNKNOWN : param.getOrgType()); + record.setOrgId(param.getOrgId()); + record.setOrgName(param.getOrgName()); + // 构建业务类信息 + record.setBizCode(param.getBizCode()); + record.setSubBizCode(param.getSubBizCode()); + record.setBizDesc(param.getBizDesc()); + record.setBizCategory(param.getBizCategory()); + // TODO: [cold_blade] [P3] 默认字段需要传值的问题 + Date now = new Date(); + record.setCreateAt(now); + record.setUpdateAt(now); + record.setIsDelete(0); + return record; + } + + private void buildPersonInfo(PendingMessageRecord record, PersonDTO promoter, PersonDTO executor) { + record.setPromoterId(promoter.getIdentity().getId()); + record.setPromoterType(promoter.getIdentity().getType()); + record.setPromoterPersonId(promoter.getId()); + record.setExecutorId(executor.getIdentity().getId()); + record.setExecutorType(executor.getIdentity().getType()); + record.setExecutorPersonId(executor.getId()); + } + + private void buildTemplateInfo(PendingMessageRecord record, MessageTemplateDTO msgTemplate, String routeParam) { + String title = msgTemplate.getTitle(); + String content = msgTemplate.getContent(); + if (StringUtils.isNotBlank(routeParam)) { + title = PlaceholderResolver + .getDefaultResolver().resolve(title, JSON.parseObject(routeParam)); + content = PlaceholderResolver + .getDefaultResolver().resolve(content, JSON.parseObject(routeParam)); + } + record.setTitle(title); + record.setContent(content); + record.setTemplateCode(msgTemplate.getCode()); + record.setRouterParams(routeParam); + } } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/utils/OrderFieldParseUtil.java b/inside-notices/src/main/java/cn/axzo/msg/center/utils/OrderFieldParseUtil.java new file mode 100644 index 00000000..972f0dcf --- /dev/null +++ b/inside-notices/src/main/java/cn/axzo/msg/center/utils/OrderFieldParseUtil.java @@ -0,0 +1,32 @@ +package cn.axzo.msg.center.utils; + +import cn.axzo.msg.center.domain.entity.PendingMessageRecord; +import com.baomidou.mybatisplus.core.toolkit.support.SFunction; +import com.google.common.collect.ImmutableMap; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +/** + * 排序字段的解析管理 + * + * @author cold_blade + * @date 2023/10/7 + * @version 1.0 + */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public final class OrderFieldParseUtil { + + private static final ImmutableMap> + PENDING_MESSAGE_RECORD_ORDER_FIELD = ImmutableMap.>builder() + .put("createTimestamp", PendingMessageRecord::getCreateAt) + .put("updateTimestamp", PendingMessageRecord::getUpdateAt) + .build(); + + public static boolean containsPendingMessageRecordOrderField(String orderField) { + return PENDING_MESSAGE_RECORD_ORDER_FIELD.containsKey(orderField); + } + + public static SFunction parsePendingMessageRecordOrderField(String orderField) { + return PENDING_MESSAGE_RECORD_ORDER_FIELD.get(orderField); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/PersonDTO.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/PersonDTO.java index c1e54381..fad40f2d 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/PersonDTO.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/PersonDTO.java @@ -1,5 +1,6 @@ package cn.axzo.msg.center.service.dto; +import cn.axzo.msg.center.service.enums.IdentityTypeEnum; import com.alibaba.fastjson.JSON; import lombok.AllArgsConstructor; import lombok.Builder; @@ -34,6 +35,17 @@ public class PersonDTO implements Serializable { */ private IdentityDTO identity; + public static PersonDTO from(Long personId, Long identityId, IdentityTypeEnum identityType) { + IdentityDTO identity = IdentityDTO.builder() + .id(identityId) + .type(identityType) + .build(); + return PersonDTO.builder() + .id(personId) + .identity(identity) + .build(); + } + @Override public String toString() { return JSON.toJSONString(this); diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java index 55132a8f..b27a7d6d 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java @@ -84,8 +84,6 @@ public class PendingMessagePageRequest extends PageRequest implements Serializab */ private Collection orderFields; - - @Override public String toString() { return JSON.toJSONString(this); From 775f6d061370ed8d5f8d30a44e5913295b9df4ff Mon Sep 17 00:00:00 2001 From: luofu Date: Sat, 7 Oct 2023 19:05:13 +0800 Subject: [PATCH 31/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 代办分页查询调整 影响: 无 --- .../message/service/impl/PendingMessageNewServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 2af80857..5fa2271c 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 @@ -309,9 +309,9 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { String content = msgTemplate.getContent(); if (StringUtils.isNotBlank(routeParam)) { title = PlaceholderResolver - .getDefaultResolver().resolve(title, JSON.parseObject(routeParam)); + .getDefaultResolver().resolveByMap(title, JSON.parseObject(routeParam)); content = PlaceholderResolver - .getDefaultResolver().resolve(content, JSON.parseObject(routeParam)); + .getDefaultResolver().resolveByMap(content, JSON.parseObject(routeParam)); } record.setTitle(title); record.setContent(content); From 5bd013802a5628da0d6d773a19d1f4bb9dcde27b Mon Sep 17 00:00:00 2001 From: luofu Date: Sun, 8 Oct 2023 09:51:21 +0800 Subject: [PATCH 32/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 代办分页查询调整 影响: 无 --- .../msg/center/message/domain/dto/PendingMessageDTO.java | 6 ++++++ .../java/cn/axzo/msg/center/utils/MessageRouterUtil.java | 2 +- .../cn/axzo/msg/center/service/dto/MessageRouterDTO.java | 4 ---- .../service/pending/response/PendingMessageResponse.java | 4 ++++ 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java index 06d3cb8f..d073790c 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java @@ -87,6 +87,10 @@ public class PendingMessageDTO implements Serializable { * 路由信息,可为空 */ private List routers; + /** + * 参数及其对应的值的JSON串 + */ + private String routerParams; public static PendingMessageDTO from(PendingMessageRecord pendingMessageRecord) { // 代办发起者信息 @@ -117,6 +121,7 @@ public class PendingMessageDTO implements Serializable { .bizCategory(pendingMessageRecord.getBizCategory()) .createTime(DateFormatUtil.toLocalDateTime(pendingMessageRecord.getCreateAt())) .updateTime(DateFormatUtil.toLocalDateTime(pendingMessageRecord.getUpdateAt())) + .routerParams(pendingMessageRecord.getRouterParams()) .build(); } @@ -137,6 +142,7 @@ public class PendingMessageDTO implements Serializable { .createTimestamp(DateFormatUtil.toTimestamp(this.createTime)) .updateTimestamp(DateFormatUtil.toTimestamp(this.updateTime)) .routers(this.routers) + .routerParams(this.routerParams) .build(); } 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 c938fb9b..1ec2d748 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 @@ -81,7 +81,7 @@ public final class MessageRouterUtil { && RouterCategoryEnum.JUMP.equals(router.getCategory())) { // 替换原始URL中的参数变量 String routerUrl = PlaceholderResolver - .getDefaultResolver().resolve(router.getUrl(), JSON.parseObject(routerParam)); + .getDefaultResolver().resolveByMap(router.getUrl(), JSON.parseObject(routerParam)); router.setUrl(routerUrl); } } 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 21026857..9afba13a 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 @@ -51,10 +51,6 @@ public class MessageRouterDTO implements Serializable { * WECHAT_MINI_PROGRAM: 微信小程序页面 */ private TerminalTypeEnum terminalType; - /** - * 参数及其对应的值的JSON串 - */ - private String param; @Override public String toString() { diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java index 07417bcb..643408cf 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java @@ -89,6 +89,10 @@ public class PendingMessageResponse implements Serializable { * 路由信息,可为空 */ private List routers; + /** + * 参数及其对应的值的JSON串 + */ + private String routerParams; @Override public String toString() { From c888647d9003896b9bc75ad1aae789f1cbfe70eb Mon Sep 17 00:00:00 2001 From: luofu Date: Sun, 8 Oct 2023 12:36:52 +0800 Subject: [PATCH 33/34] =?UTF-8?q?feat(REQ-1309):=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E5=AE=8C=E6=88=90&=E6=92=A4=E5=9B=9E=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 代办完成&撤回功能实现 影响: 无 --- .../center/service/pending/client/PendingMessageClient.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java index 57200103..2203d579 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java @@ -72,7 +72,7 @@ public interface PendingMessageClient { * @return 成功返回 {@code true} 失败返回 {@code false} */ @PostMapping(value = "/pending-message/complete", produces = {MediaType.APPLICATION_JSON_VALUE}) - CommonResponse complete(String msgIdentityCode); + CommonResponse complete(@RequestParam("msgIdentityCode") String msgIdentityCode); /** * 撤销代办 @@ -81,5 +81,5 @@ public interface PendingMessageClient { * @return 成功返回 {@code true} 失败返回 {@code false} */ @PostMapping(value = "/pending-message/revoke", produces = {MediaType.APPLICATION_JSON_VALUE}) - CommonResponse revoke(String msgIdentityCode); + CommonResponse revoke(@RequestParam("msgIdentityCode") String msgIdentityCode); } \ No newline at end of file From c2ac761f307588879fc83c2850c575c2f548ec4d Mon Sep 17 00:00:00 2001 From: luofu Date: Tue, 10 Oct 2023 14:56:46 +0800 Subject: [PATCH 34/34] =?UTF-8?q?feat(REQ-1309):=20=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E7=88=B6=E7=B1=BB=E8=B7=AF=E5=BE=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1309?goToView=1 修改: 数据模型父类路径问题 影响: 无 --- .../message/service/MessageGroupService.java | 9 ++++++++ .../service/impl/MessageGroupServiceImpl.java | 21 +++++++++++++++++++ .../impl/MessageTemplateNewServiceImpl.java | 5 ----- .../impl/PendingMessageNewServiceImpl.java | 6 ------ .../domain/entity/GeneralMessageRecord.java | 2 +- .../domain/entity/MessageBaseTemplate.java | 2 +- .../domain/entity/MessageGroupNode.java | 2 +- .../domain/entity/MessageTemplateGroup.java | 2 +- .../domain/entity/MessageTemplateRouter.java | 2 +- .../domain/entity/PendingMessageRecord.java | 2 +- 10 files changed, 36 insertions(+), 17 deletions(-) diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageGroupService.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageGroupService.java index c620f24f..66dabe02 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageGroupService.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageGroupService.java @@ -2,6 +2,7 @@ package cn.axzo.msg.center.message.service; import cn.axzo.msg.center.message.domain.dto.MessageGroupNodeDTO; +import java.util.Collection; import java.util.List; import java.util.Optional; @@ -29,4 +30,12 @@ public interface MessageGroupService { * @return 子节点列表信息 */ List listChildren(String nodeCode); + + /** + * 模板关联分类 + * + * @param templateNode 模板编码 + * @param pathList 分类path列表 + */ + void templateGroup(String templateNode, Collection pathList); } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupServiceImpl.java index 85ce2449..0ca69898 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupServiceImpl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupServiceImpl.java @@ -1,14 +1,18 @@ package cn.axzo.msg.center.message.service.impl; import cn.axzo.msg.center.dal.MessageGroupNodeDao; +import cn.axzo.msg.center.dal.MessageTemplateGroupDao; import cn.axzo.msg.center.domain.entity.MessageGroupNode; +import cn.axzo.msg.center.domain.entity.MessageTemplateGroup; import cn.axzo.msg.center.message.domain.dto.MessageGroupNodeDTO; import cn.axzo.msg.center.message.service.MessageGroupService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import java.util.Collection; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -24,6 +28,7 @@ import java.util.stream.Collectors; public class MessageGroupServiceImpl implements MessageGroupService { private final MessageGroupNodeDao messageGroupNodeDao; + private final MessageTemplateGroupDao messageTemplateGroupDao; @Override public Optional queryByNodeCode(String nodeCode) { @@ -46,4 +51,20 @@ public class MessageGroupServiceImpl implements MessageGroupService { .map(MessageGroupNodeDTO::from) .collect(Collectors.toList()); } + + @Override + public void templateGroup(String templateNode, Collection pathList) { + if (StringUtils.isBlank(templateNode) + || CollectionUtils.isEmpty(pathList)) { + return; + } + List rows = pathList.stream() + .map(e -> { + MessageTemplateGroup group = new MessageTemplateGroup(); + group.setTemplateCode(templateNode); + group.setPath(e); + return group; + }).collect(Collectors.toList()); + messageTemplateGroupDao.saveBatch(rows); + } } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java index bcd72b7c..5a149989 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java @@ -15,7 +15,6 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.util.Collections; -import java.util.Date; import java.util.List; import java.util.Map; import java.util.Objects; @@ -94,10 +93,6 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService template.setCode(param.getTemplateCode()); template.setCreatorId(param.getOperatorId()); template.setUpdaterId(param.getOperatorId()); - Date now = new Date(); - template.setCreateAt(now); - template.setUpdateAt(now); - template.setIsDelete(0); return template; } } 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 5fa2271c..079a52d6 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 @@ -44,7 +44,6 @@ import org.springframework.stereotype.Service; import java.util.Collection; import java.util.Collections; -import java.util.Date; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -287,11 +286,6 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { record.setSubBizCode(param.getSubBizCode()); record.setBizDesc(param.getBizDesc()); record.setBizCategory(param.getBizCategory()); - // TODO: [cold_blade] [P3] 默认字段需要传值的问题 - Date now = new Date(); - record.setCreateAt(now); - record.setUpdateAt(now); - record.setIsDelete(0); return record; } diff --git a/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/GeneralMessageRecord.java b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/GeneralMessageRecord.java index b61b1195..dd744f9e 100644 --- a/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/GeneralMessageRecord.java +++ b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/GeneralMessageRecord.java @@ -1,6 +1,6 @@ package cn.axzo.msg.center.domain.entity; -import cn.axzo.core.persistence.BaseEntity; +import cn.axzo.msg.center.domain.persistence.BaseEntity; import cn.axzo.msg.center.service.enums.GeneralMessageStateEnum; import cn.axzo.msg.center.service.enums.IdentityTypeEnum; import cn.axzo.msg.center.service.enums.OrganizationTypeEnum; 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 9b282f8e..b652f869 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 @@ -1,6 +1,6 @@ package cn.axzo.msg.center.domain.entity; -import cn.axzo.core.persistence.BaseEntity; +import cn.axzo.msg.center.domain.persistence.BaseEntity; import cn.axzo.msg.center.service.enums.MessageCategoryEnum; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageGroupNode.java b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageGroupNode.java index f535c45c..75509df6 100644 --- a/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageGroupNode.java +++ b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageGroupNode.java @@ -1,6 +1,6 @@ package cn.axzo.msg.center.domain.entity; -import cn.axzo.core.persistence.BaseEntity; +import cn.axzo.msg.center.domain.persistence.BaseEntity; import cn.axzo.msg.center.service.enums.MessageGroupNodeCategoryEnum; import cn.axzo.msg.center.service.enums.StatusEnum; import com.alibaba.fastjson.JSON; diff --git a/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateGroup.java b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateGroup.java index 52cdbbb9..766c4f6a 100644 --- a/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateGroup.java +++ b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MessageTemplateGroup.java @@ -1,6 +1,6 @@ package cn.axzo.msg.center.domain.entity; -import cn.axzo.core.persistence.BaseEntity; +import cn.axzo.msg.center.domain.persistence.BaseEntity; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Getter; 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 b4ea388b..68215289 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 @@ -1,6 +1,6 @@ package cn.axzo.msg.center.domain.entity; -import cn.axzo.core.persistence.BaseEntity; +import cn.axzo.msg.center.domain.persistence.BaseEntity; import cn.axzo.msg.center.service.enums.RouterCategoryEnum; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import com.alibaba.fastjson.JSON; 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 8441c6a8..e519ed29 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 @@ -1,6 +1,6 @@ package cn.axzo.msg.center.domain.entity; -import cn.axzo.core.persistence.BaseEntity; +import cn.axzo.msg.center.domain.persistence.BaseEntity; import cn.axzo.msg.center.service.enums.BizCategoryEnum; import cn.axzo.msg.center.service.enums.IdentityTypeEnum; import cn.axzo.msg.center.service.enums.OrganizationTypeEnum;