From b52e676040fc1798a979f68b4d1095fe1a49cf09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E8=82=87=E6=98=8E?= Date: Wed, 3 Jun 2020 13:46:43 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20#1600=20=E4=BF=AE=E5=A4=8D=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E5=88=87=E6=8D=A2=E5=88=B0=E5=88=9D=E5=A7=8B=E5=85=AC?= =?UTF-8?q?=E4=BC=97=E5=8F=B7=E9=85=8D=E7=BD=AE=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E5=B9=B6=E5=AE=8C=E5=96=84=E4=BA=86removeConfigStorage?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 修复无法切换到初始公众号配置的问题 * 完善removeConfigStorage --- .../weixin/mp/api/impl/BaseWxMpServiceImpl.java | 14 +++++++++++++- .../mp/api/impl/BaseWxMpServiceImplTest.java | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java index e3d7e7ad3..043ddd2be 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java @@ -414,7 +414,7 @@ public abstract class BaseWxMpServiceImpl implements WxMpService, RequestH @Override public void setWxMpConfigStorage(WxMpConfigStorage wxConfigProvider) { - final String defaultMpId = WxMpConfigStorageHolder.get(); + final String defaultMpId = wxConfigProvider.getAppId(); this.setMultiConfigStorages(ImmutableMap.of(defaultMpId, wxConfigProvider), defaultMpId); } @@ -440,6 +440,18 @@ public abstract class BaseWxMpServiceImpl implements WxMpService, RequestH @Override public void removeConfigStorage(String mpId) { synchronized (this) { + if (this.configStorageMap.size() == 1) { + this.configStorageMap.remove(mpId); + log.warn("已删除最后一个公众号配置:{},须立即使用setWxMpConfigStorage或setMultiConfigStorages添加配置", mpId); + return; + } + if (WxMpConfigStorageHolder.get().equals(mpId)) { + this.configStorageMap.remove(mpId); + final String defaultMpId = this.configStorageMap.keySet().iterator().next(); + WxMpConfigStorageHolder.set(defaultMpId); + log.warn("已删除默认公众号配置,公众号【{}】被设为默认配置", defaultMpId); + return; + } this.configStorageMap.remove(mpId); } } diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImplTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImplTest.java index f35a7d465..77aaf56a1 100644 --- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImplTest.java +++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImplTest.java @@ -41,6 +41,7 @@ public class BaseWxMpServiceImplTest { assertTrue(this.wxService.switchover("another")); assertThat(WxMpConfigStorageHolder.get()).isEqualTo("another"); assertFalse(this.wxService.switchover("whatever")); + assertFalse(this.wxService.switchover("default")); } @Test