WeixinAppConfig.java 2.9 KB
Newer Older
如梦技术's avatar
如梦技术 已提交
1 2
package net.dreamlu.weixin.config;

如梦技术's avatar
v1.3.0  
如梦技术 已提交
3 4
import com.jfinal.json.JacksonFactory;
import com.jfinal.kit.StrKit;
如梦技术's avatar
如梦技术 已提交
5 6
import com.jfinal.weixin.sdk.api.ApiConfig;
import com.jfinal.weixin.sdk.api.ApiConfigKit;
如梦技术's avatar
v1.3.0  
如梦技术 已提交
7
import com.jfinal.weixin.sdk.utils.JsonUtils;
如梦技术's avatar
如梦技术 已提交
8 9
import com.jfinal.wxaapp.WxaConfig;
import com.jfinal.wxaapp.WxaConfigKit;
10
import lombok.RequiredArgsConstructor;
如梦技术's avatar
v1.3.2  
如梦技术 已提交
11
import net.dreamlu.weixin.cache.SpringAccessTokenCache;
如梦技术's avatar
如梦技术 已提交
12
import net.dreamlu.weixin.properties.DreamWeixinProperties;
13
import org.springframework.beans.factory.ObjectProvider;
如梦技术's avatar
v1.3.1  
如梦技术 已提交
14
import org.springframework.beans.factory.SmartInitializingSingleton;
如梦技术's avatar
v1.3.0  
如梦技术 已提交
15
import org.springframework.context.annotation.Configuration;
如梦技术's avatar
如梦技术 已提交
16

17
import java.util.ArrayList;
如梦技术's avatar
如梦技术 已提交
18 19
import java.util.List;

如梦技术's avatar
如梦技术 已提交
20 21 22 23 24
/**
 * 微信应用配置
 *
 * @author L.cm
 */
25 26
@RequiredArgsConstructor
@Configuration(proxyBeanMethods = false)
如梦技术's avatar
v1.3.1  
如梦技术 已提交
27
public class WeixinAppConfig implements SmartInitializingSingleton {
如梦技术's avatar
如梦技术 已提交
28 29
	private final DreamWeixinProperties weixinProperties;
	private final SpringAccessTokenCache accessTokenCache;
30
	private final ObjectProvider<WxConfigLoader> provider;
如梦技术's avatar
如梦技术 已提交
31

如梦技术's avatar
如梦技术 已提交
32 33 34 35 36
	@Override
	public void afterSingletonsInstantiated() {
		boolean isdev = weixinProperties.isDevMode();
		ApiConfigKit.setDevMode(isdev);
		ApiConfigKit.setAccessTokenCache(accessTokenCache);
37 38 39 40
		WxConfigLoader configLoader = provider.getIfAvailable(() -> WxConfigLoader.DEFAULT);
		List<WxConf> wxConfList = new ArrayList<>(weixinProperties.getWxConfigs());
		wxConfList.addAll(configLoader.loadWx());
		for (WxConf conf : wxConfList) {
如梦技术's avatar
如梦技术 已提交
41
			ApiConfig config = new ApiConfig();
42 43
			if (StrKit.notBlank(conf.getAppId())) {
				config.setAppId(conf.getAppId());
如梦技术's avatar
如梦技术 已提交
44
			}
45 46
			if (StrKit.notBlank(conf.getAppSecret())) {
				config.setAppSecret(conf.getAppSecret());
如梦技术's avatar
如梦技术 已提交
47
			}
48 49
			if (StrKit.notBlank(conf.getToken())) {
				config.setToken(conf.getToken());
如梦技术's avatar
如梦技术 已提交
50
			}
51 52
			if (StrKit.notBlank(conf.getEncodingAesKey())) {
				config.setEncodingAesKey(conf.getEncodingAesKey());
如梦技术's avatar
如梦技术 已提交
53
			}
54
			config.setEncryptMessage(conf.isMessageEncrypt());
如梦技术's avatar
如梦技术 已提交
55 56
			ApiConfigKit.putApiConfig(config);
		}
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
		List<WxaConf> wxaConfList = new ArrayList<>(weixinProperties.getWxaConfigs());
		wxaConfList.addAll(configLoader.loadWxa());
		for (WxaConf conf : wxaConfList) {
			WxaConfig config = new WxaConfig();
			if (StrKit.notBlank(conf.getAppId())) {
				config.setAppId(conf.getAppId());
			}
			if (StrKit.notBlank(conf.getAppSecret())) {
				config.setAppSecret(conf.getAppSecret());
			}
			if (StrKit.notBlank(conf.getToken())) {
				config.setToken(conf.getToken());
			}
			if (StrKit.notBlank(conf.getEncodingAesKey())) {
				config.setEncodingAesKey(conf.getEncodingAesKey());
			}
			config.setMessageEncrypt(conf.isMessageEncrypt());
			WxaConfigKit.setWxaConfig(config);
如梦技术's avatar
如梦技术 已提交
75 76 77 78 79 80 81 82 83
		}
		WxaConfigKit.setDevMode(isdev);
		if (WxaMsgParser.JSON == weixinProperties.getWxaMsgParser()) {
			WxaConfigKit.useJsonMsgParser();
		}
		if ("jackson".equals(weixinProperties.getJsonType())) {
			JsonUtils.setJsonFactory(JacksonFactory.me());
		}
	}
如梦技术's avatar
如梦技术 已提交
84 85

}