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