From 25e0d780b177ae0fe64e5de76833327cd0fce5cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BC=AB=E5=A4=A9=E7=9A=84=E6=B2=99?= Date: Thu, 17 Oct 2024 00:13:39 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E5=B0=8F=E7=A8=8B=E5=BA=8F=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E6=97=B6=E6=94=AF=E6=8C=81=E4=BC=A0=E9=80=92=E5=87=BD?= =?UTF-8?q?=E6=95=B0=EF=BC=8C=E6=8F=90=E9=AB=98=E6=89=A9=E5=B1=95=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wx/miniapp/api/WxMaService.java | 16 +++++++++++--- .../miniapp/api/impl/BaseWxMaServiceImpl.java | 22 +++++++++++++++---- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java index 97f80784d..83cbf40a4 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java @@ -2,6 +2,7 @@ package cn.binarywang.wx.miniapp.api; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.config.WxMaConfig; +import java.util.function.Function; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.service.WxImgProcService; import me.chanjar.weixin.common.service.WxOcrService; @@ -213,12 +214,21 @@ public interface WxMaService extends WxService { boolean switchover(String mpId); /** - * 进行相应的公众号切换. + * 进行相应的小程序切换. * - * @param miniappId 小程序标识 + * @param miniAppId 小程序标识 * @return 切换成功 ,则返回当前对象,方便链式调用,否则抛出异常 */ - WxMaService switchoverTo(String miniappId); + WxMaService switchoverTo(String miniAppId); + + /** + * 进行相应的小程序切换. + * + * @param miniAppId 小程序标识 + * @param func 当对应的小程序配置不存在时,允许通过函数的方式进行调用获取 + * @return 切换成功 ,则返回当前对象,方便链式调用,否则抛出异常 + */ + WxMaService switchoverTo(String miniAppId, Function func); /** * 返回消息(客服消息和模版消息)发送接口方法实现类,以方便调用其各个接口. diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java index a5ab3df18..6b67b3c28 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java @@ -10,6 +10,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; import com.google.gson.Gson; import com.google.gson.JsonObject; +import java.util.function.Function; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.api.WxConsts; import me.chanjar.weixin.common.bean.CommonUploadParam; @@ -431,13 +432,26 @@ public abstract class BaseWxMaServiceImpl implements WxMaService, RequestH } @Override - public WxMaService switchoverTo(String miniappId) { - if (this.configMap.containsKey(miniappId)) { - WxMaConfigHolder.set(miniappId); + public WxMaService switchoverTo(String miniAppId) { + return switchoverTo(miniAppId, null); + } + + @Override + public WxMaService switchoverTo(String miniAppId, Function func) { + if (this.configMap.containsKey(miniAppId)) { + WxMaConfigHolder.set(miniAppId); return this; } - throw new WxRuntimeException(String.format("无法找到对应【%s】的小程序配置信息,请核实!", miniappId)); + if (func != null) { + WxMaConfig config = func.apply(miniAppId); + if (config != null) { + this.addConfig(miniAppId, config); + return this; + } + } + + throw new WxRuntimeException(String.format("无法找到对应【%s】的小程序配置信息,请核实!", miniAppId)); } @Override