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) */