From de0266b5e16953cdffeef3e930e3e9b9516cff74 Mon Sep 17 00:00:00 2001 From: heiheihei <36981492+biubiubiu3971@users.noreply.github.com> Date: Thu, 4 May 2023 16:34:48 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20#2999=E3=80=90=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F/=E5=85=AC=E4=BC=97=E5=8F=B7=E3=80=91=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=BC=82=E6=AD=A5=E6=B6=88=E6=81=AF=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/binarywang/wx/miniapp/message/WxMaMessageRouter.java | 6 +++++- .../java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaMessageRouter.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaMessageRouter.java index a4795c9b4..6cd603929 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaMessageRouter.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaMessageRouter.java @@ -128,16 +128,20 @@ public class WxMaMessageRouter { if (matchRules.size() == 0) { return null; } - String miniAppId = WxMaConfigHolder.get(); + final List> futures = new ArrayList<>(); WxMaXmlOutMessage result = null; for (final WxMaMessageRouterRule rule : matchRules) { // 返回最后一个非异步的rule的执行结果 if (rule.isAsync()) { + //获取当前线程使用的实际appId,兼容只有一个appId,且未显式设置当前使用的appId的情况 + String miniAppId = this.wxMaService.getWxMaConfig().getAppid(); futures.add( this.executorService.submit(() -> { + //子线程中设置实际的appId this.wxMaService.switchoverTo(miniAppId); rule.service(wxMessage, context, WxMaMessageRouter.this.wxMaService, WxMaMessageRouter.this.sessionManager, WxMaMessageRouter.this.exceptionHandler); + WxMaConfigHolder.remove(); }) ); } else { 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 2ae798bb5..067226cc8 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 @@ -248,16 +248,19 @@ public class WxMpMessageRouter { WxMpXmlOutMessage res = null; final List> futures = new ArrayList<>(); - String appId = WxMpConfigStorageHolder.get(); + for (final WxMpMessageRouterRule rule : matchRules) { // 返回最后一个非异步的rule的执行结果 if (rule.isAsync()) { + //获取当前线程使用的实际appId。兼容只有一个appId,且未显式设置当前使用的appId的情况 + String appId = this.wxMpService.getWxMpConfigStorage().getAppId(); futures.add( this.executorService.submit(() -> { //传入父线程的appId this.wxMpService.switchoverTo(appId); rule.service(wxMessage, context, mpService, WxMpMessageRouter.this.sessionManager, WxMpMessageRouter.this.exceptionHandler); + WxMpConfigStorageHolder.remove(); }) ); } else {