mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-11-01 03:25:35 +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
	 Hyseen
					Hyseen