From 2e3865fd21ee73f0696fbf83b8eecbfec27d55f9 Mon Sep 17 00:00:00 2001 From: Aaron Date: Fri, 29 Mar 2024 11:23:55 +0000 Subject: [PATCH] =?UTF-8?q?:bug:=20=E3=80=90=E4=BC=81=E4=B8=9A=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E3=80=91=E4=BF=AE=E5=A4=8D=E9=87=8D=E5=A4=8D=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E8=AF=AF=E5=88=A4=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cp/tp/message/WxCpTpMessageRouter.java | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/message/WxCpTpMessageRouter.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/message/WxCpTpMessageRouter.java index 831de148f..99f7c85d9 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/message/WxCpTpMessageRouter.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/message/WxCpTpMessageRouter.java @@ -187,15 +187,17 @@ public class WxCpTpMessageRouter { return new WxCpTpMessageRouterRule(this); } + /** * 处理微信消息. * + * @param suiteId the suiteId * @param wxMessage the wx message * @param context the context * @return the wx cp xml out message */ - public WxCpXmlOutMessage route(final WxCpTpXmlMessage wxMessage, final Map context) { - if (isMsgDuplicated(wxMessage)) { + public WxCpXmlOutMessage route(final String suiteId, final WxCpTpXmlMessage wxMessage, final Map context) { + if (isMsgDuplicated(suiteId, wxMessage)) { // 如果是重复消息,那么就不做处理 return null; } @@ -254,6 +256,18 @@ public class WxCpTpMessageRouter { return res; } + + /** + * 处理微信消息. + * + * @param wxMessage the wx message + * @param context the context + * @return the wx cp xml out message + */ + public WxCpXmlOutMessage route(final WxCpTpXmlMessage wxMessage, final Map context) { + return this.route(null, wxMessage, new HashMap<>(2)); + } + /** * 处理微信消息. * @@ -264,8 +278,9 @@ public class WxCpTpMessageRouter { return this.route(wxMessage, new HashMap<>(2)); } - private boolean isMsgDuplicated(WxCpTpXmlMessage wxMessage) { + private boolean isMsgDuplicated(final String suiteId, WxCpTpXmlMessage wxMessage) { StringBuilder messageId = new StringBuilder(); + messageId.append(wxMessage.getToUserName()); if (wxMessage.getInfoType() != null) { messageId.append(wxMessage.getInfoType()) .append("-").append(StringUtils.trimToEmpty(wxMessage.getSuiteId())) @@ -275,6 +290,10 @@ public class WxCpTpMessageRouter { .append("-").append(StringUtils.trimToEmpty(wxMessage.getChangeType())) .append("-").append(StringUtils.trimToEmpty(wxMessage.getServiceCorpId())) .append("-").append(StringUtils.trimToEmpty(wxMessage.getExternalUserID())); + } else { + if (StringUtils.isNotBlank(suiteId)) { + messageId.append(suiteId); + } } if (wxMessage.getMsgType() != null) {