Skip to content

Commit bae84e1

Browse files
🎨【小程序】路由规则使用异步时,当前的appId没有传入到子线程,导致wxMaService在子线程中无法取到父线程的appId。 (#2961)
1 parent ee94e6d commit bae84e1

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaMessageRouter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import cn.binarywang.wx.miniapp.api.WxMaService;
44
import cn.binarywang.wx.miniapp.bean.WxMaMessage;
5+
import cn.binarywang.wx.miniapp.util.WxMaConfigHolder;
56
import com.google.common.util.concurrent.ThreadFactoryBuilder;
67
import lombok.Data;
78
import me.chanjar.weixin.common.api.WxErrorExceptionHandler;
@@ -127,14 +128,15 @@ public WxMaXmlOutMessage route(final WxMaMessage wxMessage, final Map<String, Ob
127128
if (matchRules.size() == 0) {
128129
return null;
129130
}
130-
131+
String miniAppId = WxMaConfigHolder.get();
131132
final List<Future<?>> futures = new ArrayList<>();
132133
WxMaXmlOutMessage result = null;
133134
for (final WxMaMessageRouterRule rule : matchRules) {
134135
// 返回最后一个非异步的rule的执行结果
135136
if (rule.isAsync()) {
136137
futures.add(
137138
this.executorService.submit(() -> {
139+
this.wxMaService.switchoverTo(miniAppId);
138140
rule.service(wxMessage, context, WxMaMessageRouter.this.wxMaService, WxMaMessageRouter.this.sessionManager, WxMaMessageRouter.this.exceptionHandler);
139141
})
140142
);

0 commit comments

Comments
 (0)