From ccbbf8c01afe3296c6ac4b8b414a55de2495f507 Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Thu, 29 Aug 2019 16:10:49 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20#858=20=E4=BF=AE=E5=A4=8D=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E6=B7=BB=E5=8A=A0=E5=8D=A1=E5=88=B8=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=90=8E=E6=8E=A8=E9=80=81=E4=BA=8B=E4=BB=B6=E8=A2=AB=E8=AF=AF?= =?UTF-8?q?=E5=88=A4=E4=B8=BA=E9=87=8D=E5=A4=8D=E6=B6=88=E6=81=AF=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weixin/mp/api/WxMpMessageRouter.java | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java index 86351e5a..2571ebaa 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java @@ -53,7 +53,6 @@ import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; * @author Daniel Qian */ public class WxMpMessageRouter { - private static final int DEFAULT_THREAD_POOL_SIZE = 100; protected final Logger log = LoggerFactory.getLogger(WxMpMessageRouter.class); private final List rules = new ArrayList<>(); @@ -77,9 +76,7 @@ public class WxMpMessageRouter { } /** - *
-   * 使用自定义的 {@link ExecutorService}
-   * 
+ * 使用自定义的 {@link ExecutorService}. */ public WxMpMessageRouter(WxMpService wxMpService, ExecutorService executorService) { this.wxMpService = wxMpService; @@ -90,9 +87,7 @@ public class WxMpMessageRouter { } /** - *
-   * 如果使用默认的 {@link ExecutorService},则系统退出前,应该调用该方法。
-   * 
+ * 如果使用默认的 {@link ExecutorService},则系统退出前,应该调用该方法. */ public void shutDownExecutorService() { this.executorService.shutdown(); @@ -230,23 +225,26 @@ public class WxMpMessageRouter { } public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage) { - return this.route(wxMessage, new HashMap()); + return this.route(wxMessage, new HashMap(2)); } - protected boolean isMsgDuplicated(WxMpXmlMessage wxMessage) { + private boolean isMsgDuplicated(WxMpXmlMessage wxMessage) { StringBuilder messageId = new StringBuilder(); if (wxMessage.getMsgId() == null) { messageId.append(wxMessage.getCreateTime()) .append("-").append(wxMessage.getFromUser()) .append("-").append(StringUtils.trimToEmpty(wxMessage.getEventKey())) - .append("-").append(StringUtils.trimToEmpty(wxMessage.getEvent())) - ; + .append("-").append(StringUtils.trimToEmpty(wxMessage.getEvent())); } else { messageId.append(wxMessage.getMsgId()) .append("-").append(wxMessage.getCreateTime()) .append("-").append(wxMessage.getFromUser()); } + if (StringUtils.isNotEmpty(wxMessage.getUserCardCode())) { + messageId.append("-").append(wxMessage.getUserCardCode()); + } + return this.messageDuplicateChecker.isDuplicate(messageId.toString()); } @@ -254,12 +252,10 @@ public class WxMpMessageRouter { /** * 对session的访问结束. */ - protected void sessionEndAccess(WxMpXmlMessage wxMessage) { - + private void sessionEndAccess(WxMpXmlMessage wxMessage) { InternalSession session = ((InternalSessionManager) this.sessionManager).findSession(wxMessage.getFromUser()); if (session != null) { session.endAccess(); } - } }