mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-10-14 18:25:10 +08:00
消息路由器路由时可以传入context (#245)
This commit is contained in:
@@ -14,7 +14,9 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
@@ -126,7 +128,7 @@ public class WxMpMessageRouter {
|
||||
/**
|
||||
* 处理微信消息
|
||||
*/
|
||||
public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage) {
|
||||
public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage, final Map<String, Object> context) {
|
||||
if (isMsgDuplicated(wxMessage)) {
|
||||
// 如果是重复消息,那么就不做处理
|
||||
return null;
|
||||
@@ -156,12 +158,12 @@ public class WxMpMessageRouter {
|
||||
this.executorService.submit(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
rule.service(wxMessage, WxMpMessageRouter.this.wxMpService, WxMpMessageRouter.this.sessionManager, WxMpMessageRouter.this.exceptionHandler);
|
||||
rule.service(wxMessage, context, WxMpMessageRouter.this.wxMpService, WxMpMessageRouter.this.sessionManager, WxMpMessageRouter.this.exceptionHandler);
|
||||
}
|
||||
})
|
||||
);
|
||||
} else {
|
||||
res = rule.service(wxMessage, this.wxMpService, this.sessionManager, this.exceptionHandler);
|
||||
res = rule.service(wxMessage, context, this.wxMpService, this.sessionManager, this.exceptionHandler);
|
||||
// 在同步操作结束,session访问结束
|
||||
this.log.debug("End session access: async=false, sessionId={}", wxMessage.getFromUser());
|
||||
sessionEndAccess(wxMessage);
|
||||
@@ -188,6 +190,10 @@ public class WxMpMessageRouter {
|
||||
return res;
|
||||
}
|
||||
|
||||
public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage) {
|
||||
return this.route(wxMessage, new HashMap<String, Object>());
|
||||
}
|
||||
|
||||
protected boolean isMsgDuplicated(WxMpXmlMessage wxMessage) {
|
||||
|
||||
StringBuilder messageId = new StringBuilder();
|
||||
|
@@ -193,13 +193,16 @@ public class WxMpMessageRouterRule {
|
||||
* @return true 代表继续执行别的router,false 代表停止执行别的router
|
||||
*/
|
||||
protected WxMpXmlOutMessage service(WxMpXmlMessage wxMessage,
|
||||
Map<String, Object> context,
|
||||
WxMpService wxMpService,
|
||||
WxSessionManager sessionManager,
|
||||
WxErrorExceptionHandler exceptionHandler) {
|
||||
|
||||
try {
|
||||
if (context == null) {
|
||||
context = new HashMap<>();
|
||||
}
|
||||
|
||||
Map<String, Object> context = new HashMap<>();
|
||||
try {
|
||||
// 如果拦截器不通过
|
||||
for (WxMpMessageInterceptor interceptor : this.interceptors) {
|
||||
if (!interceptor.intercept(wxMessage, context, wxMpService, sessionManager)) {
|
||||
|
Reference in New Issue
Block a user