Przeglądaj źródła

#959 公众号模块配置加入多公众号支持

master
liaochuntao 6 lat temu
committed by Binary Wang
rodzic
commit
53a4da00cd
5 zmienionych plików z 64 dodań i 0 usunięć
  1. +1
    -0
      .gitignore
  2. +3
    -0
      .vscode/settings.json
  3. +15
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java
  4. +25
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java
  5. +20
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/WxMpConfigStorageHolder.java

+ 1
- 0
.gitignore Wyświetl plik

@@ -42,6 +42,7 @@ Icon
.Spotlight-V100
.TemporaryItems
.Trashes
.vscode
.VolumeIcon.icns
.AppleDB
.AppleDesktop


+ 3
- 0
.vscode/settings.json Wyświetl plik

@@ -0,0 +1,3 @@
{
"java.configuration.updateBuildConfiguration": "interactive"
}

+ 15
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java Wyświetl plik

@@ -12,6 +12,8 @@ import me.chanjar.weixin.mp.bean.result.WxMpSemanticQueryResult;
import me.chanjar.weixin.mp.bean.result.WxMpUser;
import me.chanjar.weixin.mp.enums.TicketType;

import java.util.HashMap;

/**
* 微信公众号API的Service.
*
@@ -306,6 +308,19 @@ public interface WxMpService {
*/
void setWxMpConfigStorage(WxMpConfigStorage wxConfigProvider);

/**
* 注入多个 {@link WxMpConfigStorage} 的实现. 并为每个 {@link WxMpConfigStorage} 赋予不同的 {@link String label} 值
* @return
*/
void setMultiWxMpConfigStorage(HashMap<String, WxMpConfigStorage> configStorages);

/**
* 进行相应的 WxApp 切换
* @param label
* @return
*/
boolean switchover(String label);

/**
* 返回客服接口方法实现类,以方便调用其各个接口.
*


+ 25
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java Wyświetl plik

@@ -1,9 +1,11 @@
package me.chanjar.weixin.mp.api.impl;

import java.io.IOException;
import java.util.HashMap;
import java.util.concurrent.locks.Lock;

import me.chanjar.weixin.mp.api.*;
import me.chanjar.weixin.mp.util.WxMpConfigStorageHolder;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -64,6 +66,9 @@ public abstract class BaseWxMpServiceImpl<H, P> implements WxMpService, RequestH
private WxMpWifiService wifiService = new WxMpWifiServiceImpl(this);
private WxMpMarketingService marketingService = new WxMpMarketingServiceImpl(this);

private HashMap<String, WxMpConfigStorage> wxMpConfigStoragePool;
private boolean isMultiWxApp = false;

private int retrySleepMillis = 1000;
private int maxRetryTimes = 5;

@@ -334,6 +339,10 @@ public abstract class BaseWxMpServiceImpl<H, P> implements WxMpService, RequestH

@Override
public WxMpConfigStorage getWxMpConfigStorage() {
if (isMultiWxApp) {
String label = WxMpConfigStorageHolder.get();
return wxMpConfigStoragePool.getOrDefault(label, null);
}
return this.wxMpConfigStorage;
}

@@ -343,6 +352,22 @@ public abstract class BaseWxMpServiceImpl<H, P> implements WxMpService, RequestH
this.initHttp();
}

@Override
public void setMultiWxMpConfigStorage(HashMap<String, WxMpConfigStorage> configStorages) {
wxMpConfigStoragePool = configStorages;
isMultiWxApp = true;
this.initHttp();
}

@Override
public boolean switchover(String label) {
if (wxMpConfigStoragePool.containsKey(label)) {
WxMpConfigStorageHolder.set(label);
return true;
}
return false;
}

@Override
public void setRetrySleepMillis(int retrySleepMillis) {
this.retrySleepMillis = retrySleepMillis;


+ 20
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/WxMpConfigStorageHolder.java Wyświetl plik

@@ -0,0 +1,20 @@
package me.chanjar.weixin.mp.util;


/**
* @Author: yd
* @Date: 2019-03-20 22:06
*/
public class WxMpConfigStorageHolder {

private final static ThreadLocal<String> WX_MP_CONFIG_STORAGE_CHOSE = new ThreadLocal<>();

public static String get() {
return WX_MP_CONFIG_STORAGE_CHOSE.get();
}

public static void set(String label) {
WX_MP_CONFIG_STORAGE_CHOSE.set(label);
}

}

Ładowanie…
Anuluj
Zapisz