From a0768510af16e922c3609fcefe3a83937fef9576 Mon Sep 17 00:00:00 2001 From: 007 <007gzs@gmail.com> Date: Mon, 4 Dec 2017 16:24:34 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=BC=80=E6=94=BE=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20MessageRouter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weixin/mp/api/WxMpMessageRouter.java | 14 +++++++++-- .../open/api/impl/WxOpenMessageRouter.java | 24 +++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMessageRouter.java 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 6b7ddd08..e5f94cb1 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 @@ -130,6 +130,16 @@ public class WxMpMessageRouter { * 处理微信消息 */ public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage, final Map context) { + return route(wxMessage, context); + } + /** + * 处理微信消息 + */ + public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage, final Map context, WxMpService wxMpService) { + if(wxMpService == null){ + wxMpService = this.wxMpService; + } + final WxMpService mpService = wxMpService; if (isMsgDuplicated(wxMessage)) { // 如果是重复消息,那么就不做处理 return null; @@ -159,12 +169,12 @@ public class WxMpMessageRouter { this.executorService.submit(new Runnable() { @Override public void run() { - rule.service(wxMessage, context, WxMpMessageRouter.this.wxMpService, WxMpMessageRouter.this.sessionManager, WxMpMessageRouter.this.exceptionHandler); + rule.service(wxMessage, context, mpService, WxMpMessageRouter.this.sessionManager, WxMpMessageRouter.this.exceptionHandler); } }) ); } else { - res = rule.service(wxMessage, context, this.wxMpService, this.sessionManager, this.exceptionHandler); + res = rule.service(wxMessage, context, mpService, this.sessionManager, this.exceptionHandler); // 在同步操作结束,session访问结束 this.log.debug("End session access: async=false, sessionId={}", wxMessage.getFromUser()); sessionEndAccess(wxMessage); diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMessageRouter.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMessageRouter.java new file mode 100644 index 00000000..6bdc86a9 --- /dev/null +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMessageRouter.java @@ -0,0 +1,24 @@ +package me.chanjar.weixin.open.api.impl; + +import me.chanjar.weixin.mp.api.WxMpMessageRouter; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import me.chanjar.weixin.open.api.WxOpenService; + +import java.util.HashMap; +import java.util.Map; + +public class WxOpenMessageRouter extends WxMpMessageRouter { + private WxOpenService wxOpenService; + public WxOpenMessageRouter(WxOpenService wxOpenService) { + super(null); + this.wxOpenService = wxOpenService; + } + + public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage, String appId) { + return route(wxMessage, new HashMap(), appId); + } + public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage, final Map context, String appId) { + return route(wxMessage, context, wxOpenService.getWxOpenComponentService().getWxMpServiceByAppid(appId)); + } +} From e659ca0961118cc87c56e30cbe6187c59e2ba8a5 Mon Sep 17 00:00:00 2001 From: 007gzs <007gzs@gmail.com> Date: Mon, 4 Dec 2017 17:58:31 +0800 Subject: [PATCH 2/2] Update WxMpMessageRouter.java fix --- .../main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 e5f94cb1..9cf43b77 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 @@ -130,7 +130,7 @@ public class WxMpMessageRouter { * 处理微信消息 */ public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage, final Map context) { - return route(wxMessage, context); + return route(wxMessage, context, null); } /** * 处理微信消息