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