|
@@ -9,52 +9,45 @@ import cn.iocoder.yudao.module.mp.service.account.WxAccountService;
|
|
|
import com.google.common.collect.Maps;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import me.chanjar.weixin.common.api.WxConsts;
|
|
|
-import me.chanjar.weixin.common.redis.JedisWxRedisOps;
|
|
|
import me.chanjar.weixin.mp.api.WxMpMessageRouter;
|
|
|
import me.chanjar.weixin.mp.api.WxMpService;
|
|
|
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
|
|
|
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
|
|
|
-import me.chanjar.weixin.mp.config.impl.WxMpRedisConfigImpl;
|
|
|
import me.chanjar.weixin.mp.constant.WxMpEventConstants;
|
|
|
-import org.springframework.beans.factory.InitializingBean;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
|
|
+import org.springframework.context.annotation.Configuration;
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
-import org.springframework.stereotype.Component;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
-import redis.clients.jedis.JedisPool;
|
|
|
-import redis.clients.jedis.JedisPoolConfig;
|
|
|
|
|
|
+import javax.annotation.PostConstruct;
|
|
|
+import javax.annotation.Resource;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
// TODO @芋艿:思考有没更好的处理方式
|
|
|
-@Component
|
|
|
-@EnableConfigurationProperties(WxMpProperties.class)
|
|
|
@Slf4j
|
|
|
-public class WxMpConfig implements InitializingBean {
|
|
|
+@Configuration
|
|
|
+public class WxMpConfig {
|
|
|
|
|
|
private static Map<String, WxMpMessageRouter> routers = Maps.newHashMap();
|
|
|
private static Map<String, WxMpService> mpServices = Maps.newHashMap();
|
|
|
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private WxAccountService wxAccountService;
|
|
|
- @Autowired
|
|
|
- private WxMpProperties wxMpProperties;
|
|
|
|
|
|
private static final long SCHEDULER_PERIOD = 5 * 60 * 1000L;
|
|
|
|
|
|
/**
|
|
|
* 初始化公众号配置
|
|
|
*/
|
|
|
+ @PostConstruct
|
|
|
public synchronized void initWxConfig() {
|
|
|
WxAccountExportReqVO req = new WxAccountExportReqVO();
|
|
|
List<WxAccountDO> wxAccountList = wxAccountService.getWxAccountList(req);
|
|
|
if (CollectionUtils.isEmpty(wxAccountList)) {
|
|
|
return;
|
|
|
}
|
|
|
- WxMpConfig.init(wxAccountList, wxMpProperties);
|
|
|
+ WxMpConfig.init(wxAccountList);
|
|
|
log.info("加载公众号配置成功");
|
|
|
}
|
|
|
|
|
@@ -64,20 +57,12 @@ public class WxMpConfig implements InitializingBean {
|
|
|
initWxConfig();
|
|
|
}
|
|
|
|
|
|
- public static void init(List<WxAccountDO> wxAccountDOS, WxMpProperties properties) {
|
|
|
+ public static void init(List<WxAccountDO> wxAccountDOS) {
|
|
|
mpServices = wxAccountDOS.stream().map(wxAccountDO -> {
|
|
|
// TODO 亚洲:使用 WxMpInMemoryConfigStorage 的话,多节点会不会存在 accessToken 冲突
|
|
|
|
|
|
WxMpDefaultConfigImpl configStorage;
|
|
|
- if (properties.isUseRedis()) {
|
|
|
- final WxMpProperties.RedisConfig redisConfig = properties.getRedisConfig();
|
|
|
- JedisPoolConfig poolConfig = new JedisPoolConfig();
|
|
|
- JedisPool jedisPool = new JedisPool(poolConfig, redisConfig.getHost(), redisConfig.getPort(),
|
|
|
- redisConfig.getTimeout(), redisConfig.getPassword());
|
|
|
- configStorage = new WxMpRedisConfigImpl(new JedisWxRedisOps(jedisPool), wxAccountDO.getAppId());
|
|
|
- } else {
|
|
|
- configStorage = new WxMpDefaultConfigImpl();
|
|
|
- }
|
|
|
+ configStorage = new WxMpDefaultConfigImpl();
|
|
|
|
|
|
configStorage.setAppId(wxAccountDO.getAppId());
|
|
|
configStorage.setSecret(wxAccountDO.getAppSecret());
|
|
@@ -157,9 +142,4 @@ public class WxMpConfig implements InitializingBean {
|
|
|
|
|
|
return newRouter;
|
|
|
}
|
|
|
-
|
|
|
- @Override
|
|
|
- public void afterPropertiesSet() throws Exception {
|
|
|
- initWxConfig();
|
|
|
- }
|
|
|
}
|