You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					93 lines
				
				2.7 KiB
			
		
		
			
		
	
	
					93 lines
				
				2.7 KiB
			| 
											3 years ago
										 | package com.ynxbd.wx.wxfactory;
 | ||
|  | 
 | ||
|  | import com.ynxbd.common.bean.User;
 | ||
|  | import com.ynxbd.common.config.EhCacheConfig;
 | ||
|  | import com.ynxbd.wx.wxfactory.bean.AccessToken;
 | ||
|  | import lombok.extern.slf4j.Slf4j;
 | ||
|  | import org.ehcache.Cache;
 | ||
|  | 
 | ||
|  | @Slf4j
 | ||
|  | public class WxCacheHelper {
 | ||
|  |     static {
 | ||
|  |         createUserCache();
 | ||
|  |         createAccessTokenCache();
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     // 缓存
 | ||
|  |     private static Cache<String, User> USER_CACHE;
 | ||
|  | 
 | ||
|  |     private static Cache<String, AccessToken> ACCESS_TOKEN_CACHE;
 | ||
|  | 
 | ||
|  |     private synchronized static void createUserCache() {
 | ||
|  |         if (USER_CACHE == null) {
 | ||
|  |             USER_CACHE = EhCacheConfig.createCacheTTL(String.class, User.class, "wx_auth_cache", (5400L)); // 一个半小时
 | ||
|  |         }
 | ||
|  |     }
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     public static Cache<String, User> getUserCache() {
 | ||
|  |         if (USER_CACHE == null) {
 | ||
|  |             createUserCache();
 | ||
|  |         }
 | ||
|  |         return USER_CACHE;
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     public static void removeUser(String openid) {
 | ||
|  |         Cache<String, User> cache = getUserCache();
 | ||
|  |         if (cache != null) {
 | ||
|  |             cache.remove(openid);
 | ||
|  |         }
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     public static User getCacheUser(String openid) {
 | ||
|  |         if (USER_CACHE == null) {
 | ||
|  |             createUserCache();
 | ||
|  |         }
 | ||
|  |         return USER_CACHE.get(openid);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     public static final String ACCESS_TOKEN_CACHE_NAME = "access_token";
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     private synchronized static void createAccessTokenCache() {
 | ||
|  |         if (ACCESS_TOKEN_CACHE == null) {
 | ||
|  |             ACCESS_TOKEN_CACHE = EhCacheConfig.createCacheTTL(String.class, AccessToken.class, "wx_access_token_cache", (7100L)); // 一个半小时
 | ||
|  |         }
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     public static AccessToken getWxAccessToken() {
 | ||
|  |         if (ACCESS_TOKEN_CACHE == null) {
 | ||
|  |             createAccessTokenCache();
 | ||
|  |         }
 | ||
|  |         AccessToken token = new AccessToken();
 | ||
|  | 
 | ||
|  |         AccessToken cacheToken = ACCESS_TOKEN_CACHE.get(ACCESS_TOKEN_CACHE_NAME);
 | ||
|  |         log.warn("cacheToken={}", cacheToken);
 | ||
|  |         if (cacheToken != null) {
 | ||
|  |             token.setCreateTime(cacheToken.getCreateTime());
 | ||
|  |             token.setAccessToken(cacheToken.getAccessToken());
 | ||
|  |             return token;
 | ||
|  |         }
 | ||
|  |         AccessToken respToken = WxMedicalHelper.getAccessToken(ACCESS_TOKEN_CACHE);
 | ||
|  |         if (respToken == null) {
 | ||
|  |             return null;
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         log.warn("respToken={}", respToken);
 | ||
|  |         token.setCreateTime(respToken.getCreateTime());
 | ||
|  |         token.setAccessToken(respToken.getAccessToken());
 | ||
|  |         ACCESS_TOKEN_CACHE.put(ACCESS_TOKEN_CACHE_NAME, respToken);
 | ||
|  |         return token;
 | ||
|  |     }
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     public static String getAccessToken() {
 | ||
|  |         AccessToken accessToken = getWxAccessToken();
 | ||
|  |         if (accessToken != null) {
 | ||
|  |             return accessToken.getAccessToken();
 | ||
|  |         }
 | ||
|  |         return null;
 | ||
|  |     }
 | ||
|  | 
 | ||
|  | }
 |