Просмотр исходного кода

message消费文本内容变量替换为实际值保存

yzc 2 лет назад
Родитель
Сommit
c2dbcc9e2d

+ 26 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/StringUtils.java

@@ -757,6 +757,32 @@ public class StringUtils {
         return String.format(prefix, args);
     }
 
+    /**
+     * @desc: 替换文本变量,变量格式为:${}
+     * @author: yzc
+     * @date: 2023-09-01 9:03
+     * @Param text: 文本
+     * @Param varNames:  变量名map
+     * @return: java.util.List<java.lang.String>  替换后的文本
+     */
+    public static String replaceTextVar(String text, Map<String, Object> varNames) {
+        if (StringUtils.isBlank(text) || CollectionUtils.isEmpty(varNames)) {
+            return text;
+        }
+        Pattern pattern = Pattern.compile("\\$\\{([^}]+)\\}");
+        Matcher matcher = pattern.matcher(text);
+        StringBuilder result = new StringBuilder();
+        while (matcher.find()) {
+            String varName = matcher.group(1);
+            Object varValue = varNames.get(varName);
+            if (Objects.nonNull(varValue)) {
+                matcher.appendReplacement(result, varValue.toString());
+            }
+        }
+        matcher.appendTail(result);
+        return result.toString();
+    }
+
     public static void main(String[] args) {
         Map<String, Object> param = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         param.put("account", "17358629955");

+ 20 - 2
sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/enums/MessageEnum.java

@@ -13,8 +13,26 @@ public enum MessageEnum {
     //认证通过
     AUDIT_PASS("SYSTEM","SYSTEM_ENT_APPR","认证通过通知","审核通过!您的资质已认证成功,危品汇欢迎您的入驻!","terminal,ios,android"),
     //委托单-指派成功
-    RECEIVE_ASSIGN_ENTRUST("BUSINESS", "RECEIVE_ASSIGN_ENTRUST", "新委托单通知",
-            "${firmName}委托承运:从${loadAddress}至${unloadAddress},承运${supplyName},委托量${weight}吨,运价${price}!","terminal,ios,android");
+    RECEIVE_ASSIGN_ENTRUST("BUSINESS", "BUSINESS_RECEIVE_ASSIGN_ENTRUST", "新委托单通知",
+            "${firmName}委托承运:从${loadAddress}至${unloadAddress},承运${supplyName},委托量${weight}吨,运价${price}!","terminal,ios,android"),
+
+    /**
+     * 新销售订单(有新的待受理订单)
+     */
+    NEW_SALE_ORDER("BUSINESS", "BUSINESS_TORDER_NEW_SALE", "有新的待受理订单",
+                                   "${firmName}发起采购,请及时进行受理;订单号:${orderNo}","terminal,ios,android"),
+
+    /**
+     * 新采购订单(有新的代客下单信息)
+     */
+    NEW_PURCHASE_ORDER("BUSINESS", "BUSINESS_TORDER_NEW_PURCHASE", "有新的代客下单信息",
+                           "${firmName}代您发起了商品采购,请确认;订单号:${orderNo}","terminal,ios,android"),
+    /**
+     * 采购订单被驳回
+     */
+    REJECT_PURCHASE_ORDER("BUSINESS", "BUSINESS_TORDER_REJECT_PURCHASE", "采购订单被驳回",
+            "您的采购申请被${firmName}驳回,请及时查看;订单号:${orderNo}","terminal,ios,android"),
+    ;
 
     /**
      * 消息分类

+ 1 - 1
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/KwmMessageUserService.java

@@ -83,7 +83,7 @@ public class KwmMessageUserService {
     /**
      * @param messageUsers
      * @return void
-     * @desc: 批量插入(不直接批量插入,防止daoAspect切面失效)
+     * @desc: 批量插入
      * @author: yzc
      * @date: 2023-06-09 15:58
      */

+ 15 - 5
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SckwMessageHandlerService.java

@@ -3,9 +3,9 @@ package com.sckw.message.service;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.nacos.shaded.com.google.common.collect.Lists;
 import com.sckw.core.utils.StringUtils;
-import com.sckw.redis.constant.RedisConstant;
 import com.sckw.message.model.KwmMessage;
 import com.sckw.message.model.KwmMessageUser;
+import com.sckw.redis.constant.RedisConstant;
 import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.stream.enums.MessageEnum;
 import com.sckw.stream.model.SckwMessage;
@@ -52,9 +52,16 @@ public class SckwMessageHandlerService {
         }
         //构建message对象
         MessageEnum messageEnum = sckwMessage.getMessageEnum();
-        KwmMessage kwmMessage = KwmMessage.builder().category(messageEnum.getCategory()).type(messageEnum.getType()).title(messageEnum.getTitle())
-                .content(messageEnum.getContent()).clientType(messageEnum.getPushType()).url(sckwMessage.getMsgUrl())
-                .params(JSON.toJSONString(sckwMessage.getParams())).build();
+        String content = StringUtils.replaceTextVar(messageEnum.getContent(), sckwMessage.getParams());
+        KwmMessage kwmMessage = KwmMessage.builder()
+                .category(messageEnum.getCategory())
+                .type(messageEnum.getType())
+                .title(messageEnum.getTitle())
+                .content(content)
+                .clientType(messageEnum.getPushType())
+                .url(sckwMessage.getMsgUrl())
+                .params(JSON.toJSONString(sckwMessage.getParams()))
+                .build();
         kwmMessage.setCreateBy(sckwMessage.getCreateBy());
         kwmMessage.setUpdateBy(sckwMessage.getCreateBy());
         Long msgId = kwmMessageService.insert(kwmMessage);
@@ -62,7 +69,10 @@ public class SckwMessageHandlerService {
         List<String> userIdList = Arrays.asList(userIds.split(","));
         List<KwmMessageUser> messageUsers = Lists.newArrayList();
         userIdList.forEach(e -> {
-            KwmMessageUser messageUser = KwmMessageUser.builder().userId(Long.valueOf(e)).msgId(msgId).build();
+            KwmMessageUser messageUser = KwmMessageUser.builder()
+                    .userId(Long.valueOf(e))
+                    .msgId(msgId)
+                    .build();
             messageUser.setCreateBy(sckwMessage.getCreateBy());
             messageUser.setUpdateBy(sckwMessage.getCreateBy());
             messageUsers.add(messageUser);