|
|
|
@ -17,6 +17,7 @@ import org.springframework.web.client.RestTemplate;
|
|
|
|
|
import java.util.Collections; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.Objects; |
|
|
|
|
import java.util.concurrent.TimeUnit; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -44,6 +45,18 @@ public class WechatServiceImpl implements WechatService {
|
|
|
|
|
return wechatMapper.queryWechatUser(projectId); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public String getAccessToken(CacheUtil instance) { |
|
|
|
|
String tokenResult = restTemplate.getForObject(wechatMpConfig.getAccessTokenUrl(),String.class); |
|
|
|
|
JSONObject jsonObj = JSONObject.parseObject(tokenResult); |
|
|
|
|
if (jsonObj == null || !jsonObj.containsKey("access_token")) { |
|
|
|
|
return ""; |
|
|
|
|
} |
|
|
|
|
String accessToken = jsonObj.get("access_token").toString(); |
|
|
|
|
log.info("获取access_token==>{}", accessToken); |
|
|
|
|
instance.createCache("accessToken", accessToken , 7000, TimeUnit.SECONDS); |
|
|
|
|
return accessToken; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void PushMsg(PushMsgEntity pushMsgEntity) { |
|
|
|
|
// 判断cache中是否存在access_token
|
|
|
|
@ -51,17 +64,24 @@ public class WechatServiceImpl implements WechatService {
|
|
|
|
|
Cache<Object, Object> cache = instance.getCache("accessToken"); |
|
|
|
|
String accessToken = ""; |
|
|
|
|
if (cache != null ) { |
|
|
|
|
log.info("cache中存在access_token,直接使用"); |
|
|
|
|
accessToken = cache.getIfPresent("accessToken").toString(); |
|
|
|
|
log.info("ConcurrentHashMap中存在access_token的cache,直接使用"); |
|
|
|
|
// 再次判断是否存在access_token
|
|
|
|
|
if (cache.getIfPresent("accessToken") == null) { |
|
|
|
|
log.info("cache中不存在access_token,重新获取"); |
|
|
|
|
accessToken = getAccessToken(instance); |
|
|
|
|
} else { |
|
|
|
|
accessToken = Objects.requireNonNull(cache.getIfPresent("accessToken")).toString(); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
String tokenResult = restTemplate.getForObject(wechatMpConfig.getAccessTokenUrl(),String.class); |
|
|
|
|
JSONObject jsonObj = JSONObject.parseObject(tokenResult); |
|
|
|
|
if (jsonObj == null || !jsonObj.containsKey("access_token")) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
accessToken = jsonObj.get("access_token").toString(); |
|
|
|
|
log.info("获取access_token==>{}", accessToken); |
|
|
|
|
instance.createCache("accessToken", accessToken , 6000, TimeUnit.SECONDS); |
|
|
|
|
accessToken = getAccessToken(instance); |
|
|
|
|
} |
|
|
|
|
if (accessToken.isEmpty()) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
// 封装推送内容
|
|
|
|
|
JSONObject jsonObject = new JSONObject(); |
|
|
|
|