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(); } - } }