소스 검색

feat(mp): 发送客服消息- 在保存消息到数据库后,增加发送客服消息的逻辑
- 使用 Hutool 的 BeanUtil进行对象属性复制
-通过 MpMessageConvert 进行消息对象转换
- 使用 mpServiceFactory 获取对应的 WxMpService
- 调用 WxMpKefuService 的 sendKefuMessageWithResponse 方法发送消息
- 如果发送失败,抛出异常并包含错误信息

zrd 3 달 전
부모
커밋
abc6fec51c

+ 10 - 1
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/message/MpMessageServiceImpl.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.mp.service.message;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Assert;
 import cn.hutool.core.util.ObjUtil;
 import cn.hutool.core.util.StrUtil;
@@ -105,7 +106,15 @@ public class MpMessageServiceImpl implements MpMessageService {
                 setSendFrom(MpMessageSendFromEnum.MP_TO_USER.getFrom());
         downloadMessageMedia(message);
         mpMessageMapper.insert(message);
-
+        // 发送客服消息
+        MpMessageSendReqVO sendReqVO = BeanUtil.copyProperties(sendReqBO, MpMessageSendReqVO.class);
+        WxMpKefuMessage wxMessage = MpMessageConvert.INSTANCE.convert(sendReqVO, user);
+        WxMpService mpService = mpServiceFactory.getRequiredMpService(user.getAppId());
+        try {
+            mpService.getKefuService().sendKefuMessageWithResponse(wxMessage);
+        } catch (WxErrorException e) {
+            throw exception(MESSAGE_SEND_FAIL, e.getError().getErrorMsg());
+        }
         // 转换返回 WxMpXmlOutMessage 对象
         return MpMessageConvert.INSTANCE.convert02(message, account);
     }