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..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,6 +130,16 @@ public class WxMpMessageRouter { * 处理微信消息 */ public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage, final Map context) { + return route(wxMessage, context, null); + } + /** + * 处理微信消息 + */ + 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)); + } +}