Browse Source

1、修复微信推送模板消息accessToken缓存问题;

dev
mh 5 months ago
parent
commit
06dfa1847f
  1. 11
      user-service/src/main/java/com/mh/user/controller/TestController.java
  2. 28
      user-service/src/main/java/com/mh/user/service/wechat/impl/WechatServiceImpl.java
  3. 3
      user-service/src/main/java/com/mh/user/utils/CacheUtil.java

11
user-service/src/main/java/com/mh/user/controller/TestController.java

@ -2,6 +2,7 @@ package com.mh.user.controller;
import com.mh.user.constants.Constant;
import com.mh.user.entity.DeviceCodeParamEntity;
import com.mh.user.job.PushDataToWechatJob;
import com.mh.user.manage.QuartzManager;
import com.mh.user.service.SysUserService;
import com.mh.user.utils.AnalysisReceiveOrder485;
@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
@RequestMapping("/test")
public class TestController {
@Autowired
@ -23,6 +25,15 @@ public class TestController {
@Resource
QuartzManager quartzManager;
@Resource
private PushDataToWechatJob pushDataToWechatJob;
@GetMapping("/pushDataToWechat")
public String pushDataToWechat() throws Exception {
pushDataToWechatJob.pushDataToWechat();
return "推送成功";
}
@RequestMapping("/hello")
public String HelloWord() throws SchedulerException, InterruptedException {
// 停止JobTest

28
user-service/src/main/java/com/mh/user/service/wechat/impl/WechatServiceImpl.java

@ -49,20 +49,20 @@ public class WechatServiceImpl implements WechatService {
// 判断cache中是否存在access_token
CacheUtil instance = CacheUtil.getInstance();
Cache<Object, Object> cache = instance.getCache("accessToken");
String accessToken = "86_6rbcAo1LkDnWs4F6gDeTQErw741yVj8NPBMsYqRIM13mW4Jx7F1OeaKbcHS7lNyjSqSxhJj1INRLAfA-ygtzncC-G3lWtrqLnSfO6lOX47EQ_O4TjqrCy4mVnfcEUPcAIAAQL";
// if (cache != null ) {
// log.info("cache中存在access_token,直接使用");
// accessToken = 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", 6000, TimeUnit.SECONDS);
// }
String accessToken = "";
if (cache != null ) {
log.info("cache中存在access_token,直接使用");
accessToken = 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);
}
// 封装推送内容
JSONObject jsonObject = new JSONObject();
jsonObject.put("touser",pushMsgEntity.getTouser());

3
user-service/src/main/java/com/mh/user/utils/CacheUtil.java

@ -38,10 +38,11 @@ public class CacheUtil {
* @param unit 时间单位
* @return 缓存ID
*/
public void createCache(String key, long expireAfterWrite, TimeUnit unit) {
public void createCache(String key, String value, long expireAfterWrite, TimeUnit unit) {
Cache<Object, Object> cache = Caffeine.newBuilder()
.expireAfterWrite(expireAfterWrite, unit)
.build();
cache.put(key, value);
caches.put(key, cache);
}

Loading…
Cancel
Save