开放平台增加 MessageRouter

This commit is contained in:
007 2017-12-04 16:24:34 +08:00
parent 5c9ec87bb8
commit a0768510af
2 changed files with 36 additions and 2 deletions

View File

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

View File

@ -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<String, Object>(), appId);
}
public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage, final Map<String, Object> context, String appId) {
return route(wxMessage, context, wxOpenService.getWxOpenComponentService().getWxMpServiceByAppid(appId));
}
}