From 2aedc6301f92a79fb61a993baf7de090bdde470a Mon Sep 17 00:00:00 2001 From: luofu Date: Fri, 13 Oct 2023 17:26:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-1465):=20=E5=BE=85=E5=8A=9E=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E8=A1=A8=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-1465?goToView=1 修改: 1、待办记录表新增业务扩展参数字段 影响: 无 --- .../domain/param/PendingMessagePushParam.java | 4 ++ .../impl/PendingMessageNewServiceImpl.java | 30 ++++++++------ .../axzo/msg/center/utils/JSONObjectUtil.java | 40 +++++++++++++++++++ .../request/PendingMessagePushRequest.java | 4 ++ 4 files changed, 65 insertions(+), 13 deletions(-) create mode 100644 inside-notices/src/main/java/cn/axzo/msg/center/utils/JSONObjectUtil.java 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 index 429b0a31..61f726f7 100644 --- 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 @@ -69,6 +69,10 @@ public class PendingMessagePushParam implements Serializable { * 业务描述eg:流程结点描述 */ private String bizDesc; + /** + * 业务扩展参数,JSON字符串格式 + */ + private String bizExtParams; /** * 路由参数(json string) */ 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 fcbc418b..fd9312ba 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 @@ -26,11 +26,13 @@ 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.response.PendingMessageResponse; +import cn.axzo.msg.center.utils.JSONObjectUtil; 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; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; @@ -282,10 +284,7 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { record.setOrgId(param.getOrgId()); record.setOrgName(param.getOrgName()); // 构建业务类信息 - record.setBizCode(param.getBizCode()); - record.setSubBizCode(param.getSubBizCode()); - record.setBizDesc(param.getBizDesc()); - record.setBizCategory(param.getBizCategory()); + buildBusinessInfo(record, param); return record; } @@ -299,17 +298,22 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { } private void buildTemplateInfo(PendingMessageRecord record, MessageTemplateDTO msgTemplate, String routeParam) { - String title = msgTemplate.getTitle(); - String content = msgTemplate.getContent(); - if (StringUtils.isNotBlank(routeParam)) { - title = PlaceholderResolver - .getDefaultResolver().resolveByMap(title, JSON.parseObject(routeParam)); - content = PlaceholderResolver - .getDefaultResolver().resolveByMap(content, JSON.parseObject(routeParam)); - } + JSONObject routerParamObj = JSONObjectUtil.parseObject(routeParam); + String title = PlaceholderResolver + .getDefaultResolver().resolveByMap(msgTemplate.getTitle(), routerParamObj); + String content = PlaceholderResolver + .getDefaultResolver().resolveByMap(msgTemplate.getContent(), routerParamObj); record.setTitle(title); record.setContent(content); record.setTemplateCode(msgTemplate.getCode()); - record.setRouterParams(routeParam); + record.setRouterParams(routerParamObj.toJSONString()); + } + + private void buildBusinessInfo(PendingMessageRecord record, PendingMessagePushParam param) { + record.setBizCode(param.getBizCode()); + record.setSubBizCode(param.getSubBizCode()); + record.setBizDesc(param.getBizDesc()); + record.setBizCategory(param.getBizCategory()); + record.setBizExtParam(JSONObjectUtil.checkAndReturn(param.getBizExtParams())); } } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/utils/JSONObjectUtil.java b/inside-notices/src/main/java/cn/axzo/msg/center/utils/JSONObjectUtil.java new file mode 100644 index 00000000..d22d57cc --- /dev/null +++ b/inside-notices/src/main/java/cn/axzo/msg/center/utils/JSONObjectUtil.java @@ -0,0 +1,40 @@ +package cn.axzo.msg.center.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; +import org.apache.commons.lang3.StringUtils; + +/** + * @author cold_blade + * @date 2023/10/13 + * @version 1.0 + */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public final class JSONObjectUtil { + private static final JSONObject EMPTY_JSON_OBJ = new JSONObject(); + + /** + * 解析JSON字符串,若字符串格式不正确,抛异常 + * + * @param str 待解析的字符串 + * @return JSONObject + */ + public static JSONObject parseObject(String str) { + if (StringUtils.isBlank(str)) { + return EMPTY_JSON_OBJ; + } + return JSON.parseObject(str); + } + + /** + * 校验字符串是否为有效的JSON字符串,若字符串格式不正确,抛异常 + * + * @param str 待校验的字符串 + * @return 原字符串OR空的JSONObject + */ + public static String checkAndReturn(String str) { + return parseObject(str).toJSONString(); + } +} 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 ab8182c3..ad983d88 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 @@ -68,6 +68,10 @@ public class PendingMessagePushRequest implements Serializable { * 业务描述eg:流程结点描述 */ private String bizDesc; + /** + * 业务扩展参数,JSON字符串格式 + */ + private String bizExtParams; /** * 路由参数(json string) */