Skip to content

Commit b569ab8

Browse files
🎨 #3156 【企业微信】优化企业微信应用参数未配置时的初始化逻辑
1 parent 179d469 commit b569ab8

6 files changed

Lines changed: 22 additions & 8 deletions

File tree

spring-boot-starters/wx-java-cp-multi-spring-boot-starter/README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,17 @@ public class DemoService {
8080
WxCpUserService userService2 = wxCpService2.getUserService();
8181
userService2.getUserId("xxx");
8282
// todo ...
83+
84+
// 应用 3 的 WxCpService
85+
WxCpService wxCpService3 = wxCpMultiServices.getWxCpService("tenantId3");
86+
// 判断是否为空
87+
if (wxCpService3 == null) {
88+
// todo wxCpService3 为空,请先配置 tenantId3 企业微信应用参数
89+
return;
90+
}
91+
WxCpUserService userService3 = wxCpService3.getUserService();
92+
userService3.getUserId("xxx");
93+
// todo ...
8394
}
8495
}
8596
```

spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/AbstractWxCpConfiguration.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.binarywang.spring.starter.wxjava.cp.service.WxCpMultiServices;
66
import com.binarywang.spring.starter.wxjava.cp.service.WxCpMultiServicesImpl;
77
import lombok.RequiredArgsConstructor;
8+
import lombok.extern.slf4j.Slf4j;
89
import me.chanjar.weixin.cp.api.WxCpService;
910
import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
1011
import me.chanjar.weixin.cp.config.WxCpConfigStorage;
@@ -24,13 +25,14 @@
2425
* created on 2023/10/16
2526
*/
2627
@RequiredArgsConstructor
28+
@Slf4j
2729
public abstract class AbstractWxCpConfiguration {
2830

2931
protected WxCpMultiServices configWxCpServices(WxCpMultiProperties wxCpMultiProperties) {
30-
WxCpMultiServicesImpl wxCpServices = new WxCpMultiServicesImpl();
3132
Map<String, CorpProperties> corps = wxCpMultiProperties.getCorps();
3233
if (corps == null || corps.isEmpty()) {
33-
throw new RuntimeException("企业微信配置为null");
34+
log.warn("企业微信应用参数未配置,通过 WxCpMultiServices#getWxCpService(\"tenantId\")获取实例将返回空");
35+
return new WxCpMultiServicesImpl();
3436
}
3537
/**
3638
* 校验同一个企业下,agentId 是否唯一,避免使用 redis 缓存 token、ticket 时错乱。
@@ -55,6 +57,7 @@ protected WxCpMultiServices configWxCpServices(WxCpMultiProperties wxCpMultiProp
5557
}
5658
}
5759
}
60+
WxCpMultiServicesImpl services = new WxCpMultiServicesImpl();
5861

5962
Set<Map.Entry<String, CorpProperties>> entries = corps.entrySet();
6063
for (Map.Entry<String, CorpProperties> entry : entries) {
@@ -64,9 +67,9 @@ protected WxCpMultiServices configWxCpServices(WxCpMultiProperties wxCpMultiProp
6467
this.configCorp(storage, corpProperties);
6568
this.configHttp(storage, wxCpMultiProperties.getConfigStorage());
6669
WxCpService wxCpService = this.configWxCpService(storage, wxCpMultiProperties.getConfigStorage());
67-
wxCpServices.addWxCpService(tenantId, wxCpService);
70+
services.addWxCpService(tenantId, wxCpService);
6871
}
69-
return wxCpServices;
72+
return services;
7073
}
7174

7275
/**

spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInJedisConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class WxCpInJedisConfiguration extends AbstractWxCpConfiguration {
3030
private final ApplicationContext applicationContext;
3131

3232
@Bean
33-
public WxCpMultiServices wxCpServices() {
33+
public WxCpMultiServices wxCpMultiServices() {
3434
return this.configWxCpServices(wxCpMultiProperties);
3535
}
3636

spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInMemoryConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class WxCpInMemoryConfiguration extends AbstractWxCpConfiguration {
2323
private final WxCpMultiProperties wxCpMultiProperties;
2424

2525
@Bean
26-
public WxCpMultiServices wxCpServices() {
26+
public WxCpMultiServices wxCpMultiServices() {
2727
return this.configWxCpServices(wxCpMultiProperties);
2828
}
2929

spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInRedisTemplateConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public class WxCpInRedisTemplateConfiguration extends AbstractWxCpConfiguration
2727
private final ApplicationContext applicationContext;
2828

2929
@Bean
30-
public WxCpMultiServices wxCpServices() {
30+
public WxCpMultiServices wxCpMultiServices() {
3131
return this.configWxCpServices(wxCpMultiProperties);
3232
}
3333

spring-boot-starters/wx-java-cp-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/cp/autoconfigure/services/WxCpInRedissonConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public class WxCpInRedissonConfiguration extends AbstractWxCpConfiguration {
3232
private final ApplicationContext applicationContext;
3333

3434
@Bean
35-
public WxCpMultiServices wxCpServices() {
35+
public WxCpMultiServices wxCpMultiServices() {
3636
return this.configWxCpServices(wxCpMultiProperties);
3737
}
3838

0 commit comments

Comments
 (0)