diff --git a/platform-services/wx-mp-service/src/main/java/cn/skcks/docking/wx/services/mp/service/app/MpAppService.java b/platform-services/wx-mp-service/src/main/java/cn/skcks/docking/wx/services/mp/service/app/MpAppService.java index 5f602a6..a7ea96c 100644 --- a/platform-services/wx-mp-service/src/main/java/cn/skcks/docking/wx/services/mp/service/app/MpAppService.java +++ b/platform-services/wx-mp-service/src/main/java/cn/skcks/docking/wx/services/mp/service/app/MpAppService.java @@ -1,5 +1,7 @@ package cn.skcks.docking.wx.services.mp.service.app; +import cn.hutool.core.date.DateUtil; +import cn.skcks.docking.wx.common.json.JsonUtils; import cn.skcks.docking.wx.common.page.PageWrapper; import cn.skcks.docking.wx.orm.entity.MpApp; import cn.skcks.docking.wx.orm.mapper.MpAppMapper; @@ -9,7 +11,6 @@ import cn.skcks.docking.wx.services.mp.service.message.handler.MessageHandlerSer import cn.skcks.docking.wx.services.mp.vo.verify.SignatureVo; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import io.micrometer.common.util.StringUtils; import jakarta.annotation.PostConstruct; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @@ -18,10 +19,13 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; +import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import me.chanjar.weixin.mp.config.WxMpConfigStorage; import me.chanjar.weixin.mp.config.impl.WxMpRedisConfigImpl; import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.io.IOException; @@ -50,7 +54,7 @@ public class MpAppService { new ForkJoinPool(Runtime.getRuntime().availableProcessors()).execute(() -> { mpApps.parallelStream().forEach(mpApp -> { - WxMpRedisConfigImpl config = new WxMpRedisConfigImpl(wxRedisOps, "wx_mp_"); + WxMpRedisConfigImpl config = new WxMpRedisConfigImpl(wxRedisOps, "wx_mp"); config.setAppId(mpApp.getAppId()); config.setSecret(mpApp.getAppSecret()); config.setToken(mpApp.getToken()); @@ -87,65 +91,37 @@ public class MpAppService { return; } + String encryptType = StringUtils.isBlank(request.getParameter("encrypt_type")) ? + "raw" : + request.getParameter("encrypt_type"); WxMpXmlMessage inMessage = messageHandlerService.handleMessage(request, wxMpService, signatureVo); if(inMessage == null) { response.getWriter().println("不可识别的加密类型"); } else { log.debug("\n[↓] 接收消息: \n{}", inMessage); - response.getWriter().write(""); - mpKeFuService.reply(response, wxMpService, inMessage); + // 客服消息 + // response.getWriter().write(""); + //mpKeFuService.reply(response, wxMpService, inMessage); + // WxMpKefuMessage outMessage = WxMpKefuMessage.TEXT() + // .toUser(inMessage.getFromUser()) + // .content(DateUtil.now()) + // .build(); + // wxMpService.getKefuService().sendKefuMessage(outMessage); + + // 自动回复 + WxMpXmlOutMessage outMessage = WxMpXmlOutMessage.TEXT() + .toUser(inMessage.getFromUser()) + .fromUser(inMessage.getToUser()) + .content(DateUtil.now()) + .build(); + log.debug("\n[↑] 响应消息: \n{}", JsonUtils.toCompressJson(outMessage)); + if(StringUtils.equalsIgnoreCase(encryptType, "raw")) { + response.getWriter().write(outMessage.toXml()); + } else { + response.getWriter().write(outMessage.toEncryptedXml(wxMpService.getWxMpConfigStorage())); + } } - - // String encryptType = StringUtils.isBlank(request.getParameter("encrypt_type")) ? - // "raw" : - // request.getParameter("encrypt_type"); - // - // if ("raw".equals(encryptType)) { - // // 明文传输的消息 - // // WxMpXmlMessage inMessage = WxMpXmlMessage.fromXml(request.getInputStream()); - // // WxMpXmlOutMessage outMessage = wxMpMessageRouter.route(inMessage); - // // if(outMessage == null) { - // // //为null,说明路由配置有问题,需要注意 - // // response.getWriter().write(""); - // // } - // // response.getWriter().write(outMessage.toXml()); - // - // log.debug("\n[↓] 接收消息: \n{}", inMessage); - // - // // WxMpXmlOutMessage outMessage = WxMpXmlOutMessage.TEXT() - // // .toUser(inMessage.getFromUser()) - // // .fromUser(inMessage.getToUser()) - // // .content(DateUtil.now()) - // // .build(); - // // - // // log.debug("\n[↑] 响应消息: \n{}", outMessage); - // - // // response.getWriter().write(outMessage.toXml()); - // response.getWriter().write(""); - // - // mpKeFuService.reply(response, wxMpService, inMessage); - // return; - // } - // - // - // if ("aes".equals(encryptType)) { - // WxMpConfigStorage wxMpConfigStorage = wxMpService.getWxMpConfigStorage(); - // - // // 是aes加密的消息 - // String msgSignature = request.getParameter("msg_signature"); - // WxMpXmlMessage inMessage = WxMpXmlMessage.fromEncryptedXml(request.getInputStream(), wxMpConfigStorage, signatureVo.getTimestamp(), signatureVo.getNonce(), msgSignature); - // // WxMpXmlOutMessage outMessage = wxMpMessageRouter.route(inMessage); - // // if(outMessage == null) { - // // //为null,说明路由配置有问题,需要注意 - // // response.getWriter().write(""); - // // } - // // response.getWriter().write(outMessage.toEncryptedXml(wxMpConfigStorage)); - // return; - // } - - // response.getWriter().println("不可识别的加密类型"); - // return; } /** diff --git a/platform-services/wx-mp-service/src/main/java/cn/skcks/docking/wx/services/mp/service/kefu/MpKeFuService.java b/platform-services/wx-mp-service/src/main/java/cn/skcks/docking/wx/services/mp/service/kefu/MpKeFuService.java index 77ea29a..1fcf8d2 100644 --- a/platform-services/wx-mp-service/src/main/java/cn/skcks/docking/wx/services/mp/service/kefu/MpKeFuService.java +++ b/platform-services/wx-mp-service/src/main/java/cn/skcks/docking/wx/services/mp/service/kefu/MpKeFuService.java @@ -1,6 +1,7 @@ package cn.skcks.docking.wx.services.mp.service.kefu; import cn.hutool.core.date.DateUtil; +import cn.skcks.docking.wx.common.json.JsonUtils; import cn.skcks.docking.wx.services.mp.service.app.MpAppService; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; @@ -26,6 +27,6 @@ public class MpKeFuService { .build(); wxMpService.getKefuService().sendKefuMessage(outMessage); - log.debug("\n[↑] 响应消息: \n{}", outMessage); + log.debug("\n[↑] 响应消息: \n{}", JsonUtils.toCompressJson(outMessage)); } }