瀏覽代碼

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

master
liaochuntao 6 年之前
committed by Binary Wang
父節點
當前提交
53a4da00cd
共有 5 個文件被更改,包括 64 次插入0 次删除
  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 查看文件

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


+ 3
- 0
.vscode/settings.json 查看文件

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

+ 15
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java 查看文件

@@ -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.bean.result.WxMpUser;
import me.chanjar.weixin.mp.enums.TicketType; import me.chanjar.weixin.mp.enums.TicketType;


import java.util.HashMap;

/** /**
* 微信公众号API的Service. * 微信公众号API的Service.
* *
@@ -306,6 +308,19 @@ public interface WxMpService {
*/ */
void setWxMpConfigStorage(WxMpConfigStorage wxConfigProvider); 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 查看文件

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


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


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


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

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


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


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


@@ -343,6 +352,22 @@ public abstract class BaseWxMpServiceImpl<H, P> implements WxMpService, RequestH
this.initHttp(); 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 @Override
public void setRetrySleepMillis(int retrySleepMillis) { public void setRetrySleepMillis(int retrySleepMillis) {
this.retrySleepMillis = retrySleepMillis; this.retrySleepMillis = retrySleepMillis;


+ 20
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/WxMpConfigStorageHolder.java 查看文件

@@ -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);
}

}

Loading…
取消
儲存