优化微信配置类
This commit is contained in:
@@ -51,6 +51,7 @@ import com.foxinmy.weixin4j.token.TokenManager;
|
||||
import com.foxinmy.weixin4j.tuple.MpArticle;
|
||||
import com.foxinmy.weixin4j.type.MediaType;
|
||||
import com.foxinmy.weixin4j.type.TicketType;
|
||||
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
|
||||
|
||||
/**
|
||||
* 微信企业号接口实现
|
||||
@@ -110,13 +111,14 @@ public class WeixinProxy {
|
||||
/**
|
||||
* 配置信息
|
||||
*/
|
||||
private Weixin4jSettings settings;
|
||||
private Weixin4jSettings<WeixinAccount> settings;
|
||||
|
||||
/**
|
||||
* 默认使用文件方式保存token、使用weixin4j.properties配置的账号信息
|
||||
*/
|
||||
public WeixinProxy() {
|
||||
this(new Weixin4jSettings());
|
||||
this(new Weixin4jSettings<WeixinAccount>(
|
||||
Weixin4jConfigUtil.getWeixinAccount()));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -125,7 +127,7 @@ public class WeixinProxy {
|
||||
* 微信配置信息
|
||||
* @see com.foxinmy.weixin4j.setting.Weixin4jSettings
|
||||
*/
|
||||
public WeixinProxy(Weixin4jSettings settings) {
|
||||
public WeixinProxy(Weixin4jSettings<WeixinAccount> settings) {
|
||||
this(new TokenManager(new WeixinTokenCreator(settings.getAccount()
|
||||
.getId(), settings.getAccount().getSecret()),
|
||||
settings.getCacheStorager0()));
|
||||
@@ -148,7 +150,7 @@ public class WeixinProxy {
|
||||
TokenManager suiteTokenManager) {
|
||||
this(new TokenManager(new WeixinTokenSuiteCreator(perCodeManager,
|
||||
suiteTokenManager), perCodeManager.getCacheStorager()));
|
||||
this.settings = new Weixin4jSettings(new WeixinAccount(
|
||||
this.settings = new Weixin4jSettings<WeixinAccount>(new WeixinAccount(
|
||||
perCodeManager.getAuthCorpId(), null));
|
||||
}
|
||||
|
||||
|
||||
@@ -3,8 +3,10 @@ package com.foxinmy.weixin4j.qy;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.foxinmy.weixin4j.exception.WeixinException;
|
||||
import com.foxinmy.weixin4j.model.Consts;
|
||||
import com.foxinmy.weixin4j.model.WeixinAccount;
|
||||
@@ -13,10 +15,10 @@ import com.foxinmy.weixin4j.qy.api.SuiteApi;
|
||||
import com.foxinmy.weixin4j.qy.model.OUserInfo;
|
||||
import com.foxinmy.weixin4j.qy.model.WeixinQyAccount;
|
||||
import com.foxinmy.weixin4j.qy.suite.SuiteTicketManager;
|
||||
import com.foxinmy.weixin4j.qy.suite.Weixin4jSuiteSettings;
|
||||
import com.foxinmy.weixin4j.qy.token.WeixinProviderTokenCreator;
|
||||
import com.foxinmy.weixin4j.qy.type.LoginTargetType;
|
||||
import com.foxinmy.weixin4j.qy.type.URLConsts;
|
||||
import com.foxinmy.weixin4j.setting.Weixin4jSettings;
|
||||
import com.foxinmy.weixin4j.token.TokenManager;
|
||||
import com.foxinmy.weixin4j.util.StringUtil;
|
||||
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
|
||||
@@ -46,41 +48,44 @@ public class WeixinSuiteProxy {
|
||||
/**
|
||||
* 配置相关
|
||||
*/
|
||||
private final Weixin4jSuiteSettings suiteSettings;
|
||||
private final Weixin4jSettings<WeixinQyAccount> settings;
|
||||
|
||||
/**
|
||||
* 默认使用文件方式保存token、使用weixin4j.properties配置的账号信息
|
||||
*/
|
||||
public WeixinSuiteProxy() {
|
||||
this(new Weixin4jSuiteSettings());
|
||||
this(new Weixin4jSettings<WeixinQyAccount>(JSON.parseObject(
|
||||
Weixin4jConfigUtil.getValue("account"), WeixinQyAccount.class)));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param suiteSettings
|
||||
* 套件信息配置
|
||||
* @param settings
|
||||
* 配置信息
|
||||
*/
|
||||
public WeixinSuiteProxy(Weixin4jSuiteSettings suiteSettings) {
|
||||
this.suiteSettings = suiteSettings;
|
||||
if (suiteSettings.getAccount().getSuiteAccounts() != null) {
|
||||
this.suiteMap = new HashMap<String, SuiteApi>();
|
||||
for (WeixinAccount suite : suiteSettings.getAccount()
|
||||
.getSuiteAccounts()) {
|
||||
this.suiteMap.put(suite.getId(), new SuiteApi(
|
||||
new SuiteTicketManager(suite.getId(), suite.getSecret(),
|
||||
suiteSettings.getCacheStorager0())));
|
||||
public WeixinSuiteProxy(Weixin4jSettings<WeixinQyAccount> settings) {
|
||||
this.settings = settings;
|
||||
List<WeixinAccount> suites = settings.getAccount().getSuites();
|
||||
if (suites != null && !suites.isEmpty()) {
|
||||
this.suiteMap = new HashMap<String, SuiteApi>(suites.size());
|
||||
for (WeixinAccount suite : suites) {
|
||||
this.suiteMap.put(
|
||||
null,
|
||||
suiteMap.get(suiteSettings.getAccount()
|
||||
.getSuiteAccounts().get(0).getId()));
|
||||
suite.getId(),
|
||||
new SuiteApi(
|
||||
new SuiteTicketManager(suite.getId(), suite
|
||||
.getSecret(), settings
|
||||
.getCacheStorager0())));
|
||||
}
|
||||
this.suiteMap.put(null, suiteMap.get(suites.get(0).getId()));
|
||||
}
|
||||
if (StringUtil.isNotBlank(suiteSettings.getAccount().getId())
|
||||
&& StringUtil.isNotBlank(suiteSettings.getAccount()
|
||||
if (StringUtil.isNotBlank(settings.getAccount().getId())
|
||||
&& StringUtil.isNotBlank(settings.getAccount()
|
||||
.getProviderSecret())) {
|
||||
this.providerApi = new ProviderApi(new TokenManager(
|
||||
new WeixinProviderTokenCreator(suiteSettings
|
||||
.getAccount().getId(), suiteSettings
|
||||
.getAccount().getProviderSecret()),
|
||||
suiteSettings.getCacheStorager0()),
|
||||
suiteSettings.getCacheStorager0());
|
||||
this.providerApi = new ProviderApi(
|
||||
new TokenManager(new WeixinProviderTokenCreator(settings
|
||||
.getAccount().getId(), settings.getAccount()
|
||||
.getProviderSecret()), settings.getCacheStorager0()),
|
||||
settings.getCacheStorager0());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,7 +95,7 @@ public class WeixinSuiteProxy {
|
||||
* @return
|
||||
*/
|
||||
public WeixinQyAccount getWeixinAccount() {
|
||||
return this.suiteSettings.getAccount();
|
||||
return this.settings.getAccount();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -20,7 +20,6 @@ import com.foxinmy.weixin4j.http.ContentType;
|
||||
import com.foxinmy.weixin4j.http.HttpClientException;
|
||||
import com.foxinmy.weixin4j.http.HttpHeaders;
|
||||
import com.foxinmy.weixin4j.http.HttpMethod;
|
||||
import com.foxinmy.weixin4j.http.HttpParams;
|
||||
import com.foxinmy.weixin4j.http.HttpRequest;
|
||||
import com.foxinmy.weixin4j.http.HttpResponse;
|
||||
import com.foxinmy.weixin4j.http.apache.ByteArrayBody;
|
||||
@@ -50,7 +49,7 @@ import com.foxinmy.weixin4j.util.StringUtil;
|
||||
|
||||
/**
|
||||
* 媒体相关API
|
||||
*
|
||||
*
|
||||
* @className MediaApi
|
||||
* @author jinyu(foxinmy@gmail.com)
|
||||
* @date 2014年9月25日
|
||||
@@ -70,7 +69,7 @@ public class MediaApi extends QyApi {
|
||||
/**
|
||||
* 上传图文消息内的图片:用于上传图片到企业号服务端,接口返回图片url,请注意,该url仅可用于图文消息的发送,
|
||||
* 且每个企业每天最多只能上传100张图片。
|
||||
*
|
||||
*
|
||||
* @param is
|
||||
* 图片数据
|
||||
* @param fileName
|
||||
@@ -103,7 +102,7 @@ public class MediaApi extends QyApi {
|
||||
* 正常情况下返回{"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789},
|
||||
* 否则抛出异常.
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* @param agentid
|
||||
* 企业应用ID(<font color="red">大于0时视为上传永久媒体文件</font>)
|
||||
* @param is
|
||||
@@ -185,7 +184,7 @@ public class MediaApi extends QyApi {
|
||||
|
||||
/**
|
||||
* 下载媒体文件
|
||||
*
|
||||
*
|
||||
* @param agentid
|
||||
* 企业应用Id(<font color="red">大于0时视为获取永久媒体文件</font>)
|
||||
* @param mediaId
|
||||
@@ -213,8 +212,7 @@ public class MediaApi extends QyApi {
|
||||
request = new HttpRequest(HttpMethod.GET, String.format(
|
||||
media_download_uri, token.getAccessToken(), mediaId));
|
||||
}
|
||||
HttpParams params = weixinExecutor.getExecuteParams();
|
||||
request.setParams(params);
|
||||
request.setParams(weixinExecutor.getExecuteParams());
|
||||
logger.info("weixin request >> " + request.getMethod() + " "
|
||||
+ request.getURI().toString());
|
||||
HttpResponse response = weixinExecutor.getExecuteClient().execute(
|
||||
@@ -260,7 +258,7 @@ public class MediaApi extends QyApi {
|
||||
* 、新增的永久素材也可以在公众平台官网素材管理模块中看到,永久素材的数量是有上限的,请谨慎新增。图文消息素材和图片素材的上限为5000,
|
||||
* 其他类型为1000
|
||||
* </P>
|
||||
*
|
||||
*
|
||||
* @param agentid
|
||||
* 企业应用的id
|
||||
* @param articles
|
||||
@@ -289,7 +287,7 @@ public class MediaApi extends QyApi {
|
||||
|
||||
/**
|
||||
* 删除永久媒体素材
|
||||
*
|
||||
*
|
||||
* @param agentid
|
||||
* 企业应用ID
|
||||
* @param mediaId
|
||||
@@ -311,7 +309,7 @@ public class MediaApi extends QyApi {
|
||||
|
||||
/**
|
||||
* 下载永久图文素材
|
||||
*
|
||||
*
|
||||
* @param agentid
|
||||
* 企业应用ID
|
||||
* @param mediaId
|
||||
@@ -333,7 +331,7 @@ public class MediaApi extends QyApi {
|
||||
|
||||
/**
|
||||
* 修改永久图文素材
|
||||
*
|
||||
*
|
||||
* @param agentid
|
||||
* 企业应用的id
|
||||
* @param mediaId
|
||||
@@ -365,7 +363,7 @@ public class MediaApi extends QyApi {
|
||||
|
||||
/**
|
||||
* 获取永久媒体素材的总数
|
||||
*
|
||||
*
|
||||
* @param agentid
|
||||
* 企业应用id
|
||||
* @return 总数对象
|
||||
@@ -387,7 +385,7 @@ public class MediaApi extends QyApi {
|
||||
|
||||
/**
|
||||
* 获取媒体素材记录列表
|
||||
*
|
||||
*
|
||||
* @param agentid
|
||||
* 企业应用ID
|
||||
* @param mediaType
|
||||
@@ -427,7 +425,7 @@ public class MediaApi extends QyApi {
|
||||
|
||||
/**
|
||||
* 获取全部的媒体素材
|
||||
*
|
||||
*
|
||||
* @param agentid
|
||||
* 企业应用id
|
||||
* @param mediaType
|
||||
@@ -458,7 +456,7 @@ public class MediaApi extends QyApi {
|
||||
|
||||
/**
|
||||
* 批量上传成员
|
||||
*
|
||||
*
|
||||
* @param users
|
||||
* 成员列表
|
||||
* @see {@link BatchApi#syncUser(String,Callback)}
|
||||
@@ -474,7 +472,7 @@ public class MediaApi extends QyApi {
|
||||
|
||||
/**
|
||||
* 批量上传部门
|
||||
*
|
||||
*
|
||||
* @param parties
|
||||
* 部门列表
|
||||
* @see {@link BatchApi#replaceParty(String,Callback)}
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.foxinmy.weixin4j.model.WeixinAccount;
|
||||
|
||||
/**
|
||||
* 微信企业号信息
|
||||
*
|
||||
*
|
||||
* @className WeixinQyAccount
|
||||
* @author jinyu(foxinmy@gmail.com)
|
||||
* @date 2014年11月18日
|
||||
@@ -23,7 +23,7 @@ public class WeixinQyAccount extends WeixinAccount {
|
||||
/**
|
||||
* 多个应用套件信息
|
||||
*/
|
||||
private List<WeixinAccount> suiteAccounts;
|
||||
private List<WeixinAccount> suites;
|
||||
/**
|
||||
* 第三方提供商secret(企业号登陆)
|
||||
*/
|
||||
@@ -34,7 +34,7 @@ public class WeixinQyAccount extends WeixinAccount {
|
||||
private String chatSecret;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param corpid
|
||||
* 企业ID 必填
|
||||
* @param corpsecret
|
||||
@@ -49,17 +49,17 @@ public class WeixinQyAccount extends WeixinAccount {
|
||||
@JSONCreator
|
||||
public WeixinQyAccount(@JSONField(name = "id") String corpid,
|
||||
@JSONField(name = "secret") String corpsecret,
|
||||
@JSONField(name = "suiteAccounts") List<WeixinAccount> suiteAccounts,
|
||||
@JSONField(name = "suites") List<WeixinAccount> suites,
|
||||
@JSONField(name = "providerSecret") String providerSecret,
|
||||
@JSONField(name = "chatSecret") String chatSecret) {
|
||||
super(corpid, corpsecret);
|
||||
this.suiteAccounts = suiteAccounts;
|
||||
this.suites = suites;
|
||||
this.providerSecret = providerSecret;
|
||||
this.chatSecret = chatSecret;
|
||||
}
|
||||
|
||||
public List<WeixinAccount> getSuiteAccounts() {
|
||||
return suiteAccounts;
|
||||
public List<WeixinAccount> getSuites() {
|
||||
return suites;
|
||||
}
|
||||
|
||||
public String getProviderSecret() {
|
||||
@@ -70,15 +70,15 @@ public class WeixinQyAccount extends WeixinAccount {
|
||||
return chatSecret;
|
||||
}
|
||||
|
||||
public WeixinAccount[] suiteAccountsToArray() {
|
||||
return suiteAccounts != null ? suiteAccounts
|
||||
.toArray(new WeixinAccount[suiteAccounts.size()]) : null;
|
||||
public WeixinAccount[] suitesToArray() {
|
||||
return suites != null ? suites
|
||||
.toArray(new WeixinAccount[suites.size()]) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "WeixinQyAccount [" + super.toString() + ", suiteAccounts="
|
||||
+ suiteAccounts + ", providerSecret=" + providerSecret
|
||||
+ suites + ", providerSecret=" + providerSecret
|
||||
+ ", chatSecret=" + chatSecret + "]";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,86 +0,0 @@
|
||||
package com.foxinmy.weixin4j.qy.suite;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.foxinmy.weixin4j.cache.CacheStorager;
|
||||
import com.foxinmy.weixin4j.cache.FileCacheStorager;
|
||||
import com.foxinmy.weixin4j.model.Token;
|
||||
import com.foxinmy.weixin4j.model.WeixinAccount;
|
||||
import com.foxinmy.weixin4j.qy.model.WeixinQyAccount;
|
||||
import com.foxinmy.weixin4j.setting.SystemSettings;
|
||||
import com.foxinmy.weixin4j.util.StringUtil;
|
||||
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
|
||||
|
||||
/**
|
||||
* 微信第三方套件配置相关
|
||||
*
|
||||
* @className Weixin4jSuiteSettings
|
||||
* @author jinyu(foxinmy@gmail.com)
|
||||
* @date 2016年1月28日
|
||||
* @since JDK 1.6
|
||||
* @see
|
||||
*/
|
||||
public class Weixin4jSuiteSettings extends SystemSettings<WeixinQyAccount> {
|
||||
/**
|
||||
* Token的存储方式 默认为FileCacheStorager
|
||||
*/
|
||||
private CacheStorager<Token> cacheStorager;
|
||||
|
||||
/**
|
||||
* 默认使用weixin4j.properties配置的信息
|
||||
*/
|
||||
public Weixin4jSuiteSettings() {
|
||||
this(JSON.parseObject(Weixin4jConfigUtil.getValue("account"),
|
||||
WeixinQyAccount.class));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param providerCorpId
|
||||
* 服务商的企业号ID <font color="red">使用服务商API时必填项</font>
|
||||
* @param providerSecret
|
||||
* 服务商secret <font color="red">使用服务商API时必填项</font>
|
||||
* @param suites
|
||||
* 套件信息 <font color="red">使用套件API时必填项</font>
|
||||
*/
|
||||
public Weixin4jSuiteSettings(String providerCorpId, String providerSecret,
|
||||
WeixinAccount... suites) {
|
||||
this(new WeixinQyAccount(providerCorpId, null, Arrays.asList(suites),
|
||||
providerSecret, null));
|
||||
}
|
||||
|
||||
/**
|
||||
* 账号信息
|
||||
*
|
||||
* @param account
|
||||
*/
|
||||
private Weixin4jSuiteSettings(WeixinQyAccount account) {
|
||||
super(account);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTmpdir0() {
|
||||
if (StringUtil.isBlank(getTmpdir())) {
|
||||
return Weixin4jConfigUtil.getClassPathValue("weixin4j.tmpdir",
|
||||
System.getProperty("java.io.tmpdir"));
|
||||
}
|
||||
return getTmpdir();
|
||||
}
|
||||
|
||||
public CacheStorager<Token> getCacheStorager() {
|
||||
return cacheStorager;
|
||||
}
|
||||
|
||||
public CacheStorager<Token> getCacheStorager0() {
|
||||
if (cacheStorager == null) {
|
||||
return new FileCacheStorager<Token>(getTmpdir0());
|
||||
}
|
||||
return cacheStorager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Weixin4jSuiteSettings [" + super.toString() + "]";
|
||||
}
|
||||
}
|
||||
@@ -5,9 +5,11 @@ import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.foxinmy.weixin4j.exception.WeixinException;
|
||||
import com.foxinmy.weixin4j.model.WeixinAccount;
|
||||
import com.foxinmy.weixin4j.qy.token.WeixinTokenCreator;
|
||||
import com.foxinmy.weixin4j.setting.Weixin4jSettings;
|
||||
import com.foxinmy.weixin4j.token.TokenManager;
|
||||
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
|
||||
|
||||
/**
|
||||
* token测试
|
||||
@@ -20,14 +22,15 @@ import com.foxinmy.weixin4j.token.TokenManager;
|
||||
public class TokenTest {
|
||||
|
||||
protected TokenManager tokenManager;
|
||||
protected Weixin4jSettings settings;
|
||||
protected Weixin4jSettings<WeixinAccount> settings;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
this.settings = new Weixin4jSettings();
|
||||
this.settings = new Weixin4jSettings<WeixinAccount>(
|
||||
Weixin4jConfigUtil.getWeixinAccount());
|
||||
tokenManager = new TokenManager(new WeixinTokenCreator(settings
|
||||
.getAccount().getId(), settings.getAccount()
|
||||
.getSecret()), settings.getCacheStorager0());
|
||||
.getAccount().getId(), settings.getAccount().getSecret()),
|
||||
settings.getCacheStorager0());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user