From 3697e70a3a125f5e8701b9afc677e8262960d65e Mon Sep 17 00:00:00 2001 From: mh Date: Thu, 5 Dec 2024 10:16:43 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E5=A4=8D=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E6=A8=A1=E6=9D=BF=E6=B6=88=E6=81=AFaccessTok?= =?UTF-8?q?en=E7=BC=93=E5=AD=98=E9=97=AE=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wechat/impl/WechatServiceImpl.java | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/user-service/src/main/java/com/mh/user/service/wechat/impl/WechatServiceImpl.java b/user-service/src/main/java/com/mh/user/service/wechat/impl/WechatServiceImpl.java index dbf665b..0ea645a 100644 --- a/user-service/src/main/java/com/mh/user/service/wechat/impl/WechatServiceImpl.java +++ b/user-service/src/main/java/com/mh/user/service/wechat/impl/WechatServiceImpl.java @@ -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 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();