|
@@ -1,13 +1,18 @@
|
|
|
package com.platform.yijia.utils.weixinapp;
|
|
|
|
|
|
|
|
|
+import com.platform.yijia.utils.redis.RedisCacheUtil;
|
|
|
import net.sf.json.JSONException;
|
|
|
import net.sf.json.JSONObject;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.data.redis.cache.RedisCache;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
/**
|
|
|
* <Title>工具类: WeiXinUtil</Title>
|
|
@@ -15,6 +20,7 @@ import java.util.Map;
|
|
|
* @author JK
|
|
|
* @date 2019年11月10日
|
|
|
*/
|
|
|
+@Component
|
|
|
public class WeiXinUserUtil {
|
|
|
|
|
|
//微信小程序获取用户信息 https://api.weixin.qq.com/sns/userinfo
|
|
@@ -32,6 +38,9 @@ public class WeiXinUserUtil {
|
|
|
//日志
|
|
|
private static final Logger logger = LoggerFactory.getLogger(WeiXinUserUtil.class);
|
|
|
|
|
|
+ @Resource
|
|
|
+ private RedisCacheUtil redisCacheUtil;
|
|
|
+
|
|
|
|
|
|
/*
|
|
|
* 获取UnionId信息
|
|
@@ -39,7 +48,7 @@ public class WeiXinUserUtil {
|
|
|
* @param openId
|
|
|
* @return
|
|
|
*/
|
|
|
- public static JSONObject getUnionIdInfo(String accessToken, String openId){
|
|
|
+ public JSONObject getUnionIdInfo(String accessToken, String openId){
|
|
|
String requestUrl = unionId_Url.replace("ACCESS_TOKEN", accessToken).replace("OPENID", openId);
|
|
|
JSONObject jsonObject = HttpRequestUtil.getHttpsRequestData(requestUrl, "GET", null);
|
|
|
logger.info("获取UnionId信息:" + jsonObject.toString());
|
|
@@ -55,7 +64,7 @@ public class WeiXinUserUtil {
|
|
|
* @param code
|
|
|
* @return
|
|
|
*/
|
|
|
- public static Map<String, Object> getUserSessionKeyAndOpenID(String appId, String appSecret, String code){
|
|
|
+ public Map<String, Object> getUserSessionKeyAndOpenID(String appId, String appSecret, String code){
|
|
|
String requestUrl = openID_url.replace("APPID", appId).replace("APPSECRET", appSecret).replace("CODE", code);
|
|
|
Map<String, Object> resultMap = new HashMap<>();
|
|
|
//发起GET请求
|
|
@@ -75,7 +84,7 @@ public class WeiXinUserUtil {
|
|
|
* @param appSecret //密钥
|
|
|
* @return
|
|
|
*/
|
|
|
- public static Token getToken(String appId, String appSecret){
|
|
|
+ public Token getToken(String appId, String appSecret){
|
|
|
Token token = null;
|
|
|
String requestUrl = token_url.replace("APPID", appId).replace("APPSECRET", appSecret);
|
|
|
//发起GET请求获取凭证
|
|
@@ -92,4 +101,26 @@ public class WeiXinUserUtil {
|
|
|
}
|
|
|
return token;
|
|
|
}
|
|
|
+
|
|
|
+ /*
|
|
|
+ * 从redis获取token
|
|
|
+ * @param appId
|
|
|
+ * @param appSecret
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String getTokenByRedisCache(String appId, String appSecret){
|
|
|
+ logger.info("appId参数: "+ appId+" ;appSecret参数: " +appSecret);
|
|
|
+ String tokenCache ="";
|
|
|
+ if(!redisCacheUtil.hasKey(appId)){
|
|
|
+ String token = this.getToken(appId, appSecret).getAccessToken();
|
|
|
+ redisCacheUtil.setCacheObject(appId, token);
|
|
|
+ redisCacheUtil.expire(appId, 7200, TimeUnit.SECONDS);
|
|
|
+ logger.info("Redis缓存中token信息: " + tokenCache);
|
|
|
+ }else {
|
|
|
+ tokenCache = redisCacheUtil.getCacheObject(appId);
|
|
|
+ }
|
|
|
+ return tokenCache;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|