diff --git a/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/README.md b/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/README.md index d05c43bbaf..6b1ddaeb3b 100644 --- a/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/README.md +++ b/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/README.md @@ -80,6 +80,17 @@ public class DemoService { WxCpUserService userService2 = wxCpService2.getUserService(); userService2.getUserId("xxx"); // todo ... + + // 应用 3 的 WxCpService + WxCpService wxCpService3 = wxCpMultiServices.getWxCpService("tenantId3"); + // 判断是否为空 + if (wxCpService3 == null) { + // todo wxCpService3 为空,请先配置 tenantId3 企业微信应用参数 + return; + } + WxCpUserService userService3 = wxCpService3.getUserService(); + userService3.getUserId("xxx"); + // todo ... } } ``` diff --git a/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/AbstractWxCpConfiguration.java b/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/AbstractWxCpConfiguration.java index 05f5cae997..ec45ceaa2f 100644 --- a/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/AbstractWxCpConfiguration.java +++ b/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/AbstractWxCpConfiguration.java @@ -5,6 +5,7 @@ import com.binarywang.spring.starter.wxjava.cp.service.WxCpMultiServices; import com.binarywang.spring.starter.wxjava.cp.service.WxCpMultiServicesImpl; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.cp.api.WxCpService; import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl; import me.chanjar.weixin.cp.config.WxCpConfigStorage; @@ -24,13 +25,14 @@ * created on 2023/10/16 */ @RequiredArgsConstructor +@Slf4j public abstract class AbstractWxCpConfiguration { protected WxCpMultiServices configWxCpServices(WxCpMultiProperties wxCpMultiProperties) { - WxCpMultiServicesImpl wxCpServices = new WxCpMultiServicesImpl(); Map corps = wxCpMultiProperties.getCorps(); if (corps == null || corps.isEmpty()) { - throw new RuntimeException("企业微信配置为null"); + log.warn("企业微信应用参数未配置,通过 WxCpMultiServices#getWxCpService(\"tenantId\")获取实例将返回空"); + return new WxCpMultiServicesImpl(); } /** * 校验同一个企业下,agentId 是否唯一,避免使用 redis 缓存 token、ticket 时错乱。 @@ -55,6 +57,7 @@ protected WxCpMultiServices configWxCpServices(WxCpMultiProperties wxCpMultiProp } } } + WxCpMultiServicesImpl services = new WxCpMultiServicesImpl(); Set> entries = corps.entrySet(); for (Map.Entry entry : entries) { @@ -64,9 +67,9 @@ protected WxCpMultiServices configWxCpServices(WxCpMultiProperties wxCpMultiProp this.configCorp(storage, corpProperties); this.configHttp(storage, wxCpMultiProperties.getConfigStorage()); WxCpService wxCpService = this.configWxCpService(storage, wxCpMultiProperties.getConfigStorage()); - wxCpServices.addWxCpService(tenantId, wxCpService); + services.addWxCpService(tenantId, wxCpService); } - return wxCpServices; + return services; } /** diff --git a/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInJedisConfiguration.java b/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInJedisConfiguration.java index 8889e4e489..3e49a5024a 100644 --- a/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInJedisConfiguration.java +++ b/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInJedisConfiguration.java @@ -30,7 +30,7 @@ public class WxCpInJedisConfiguration extends AbstractWxCpConfiguration { private final ApplicationContext applicationContext; @Bean - public WxCpMultiServices wxCpServices() { + public WxCpMultiServices wxCpMultiServices() { return this.configWxCpServices(wxCpMultiProperties); } diff --git a/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInMemoryConfiguration.java b/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInMemoryConfiguration.java index df63806a37..dd0946fc53 100644 --- a/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInMemoryConfiguration.java +++ b/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInMemoryConfiguration.java @@ -23,7 +23,7 @@ public class WxCpInMemoryConfiguration extends AbstractWxCpConfiguration { private final WxCpMultiProperties wxCpMultiProperties; @Bean - public WxCpMultiServices wxCpServices() { + public WxCpMultiServices wxCpMultiServices() { return this.configWxCpServices(wxCpMultiProperties); } diff --git a/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInRedisTemplateConfiguration.java b/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInRedisTemplateConfiguration.java index 8f9943a94d..103956fed3 100644 --- a/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInRedisTemplateConfiguration.java +++ b/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInRedisTemplateConfiguration.java @@ -27,7 +27,7 @@ public class WxCpInRedisTemplateConfiguration extends AbstractWxCpConfiguration private final ApplicationContext applicationContext; @Bean - public WxCpMultiServices wxCpServices() { + public WxCpMultiServices wxCpMultiServices() { return this.configWxCpServices(wxCpMultiProperties); } diff --git a/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInRedissonConfiguration.java b/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInRedissonConfiguration.java index c4f7fcf687..b8fc3a83ac 100644 --- a/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInRedissonConfiguration.java +++ b/spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInRedissonConfiguration.java @@ -32,7 +32,7 @@ public class WxCpInRedissonConfiguration extends AbstractWxCpConfiguration { private final ApplicationContext applicationContext; @Bean - public WxCpMultiServices wxCpServices() { + public WxCpMultiServices wxCpMultiServices() { return this.configWxCpServices(wxCpMultiProperties); }