提交 59dc6a0c authored 作者: 吕本才's avatar 吕本才

fix(promotion-service):修复活动状态处理逻辑并优化微信token获取

上级 0c8b4392
...@@ -2,8 +2,10 @@ package com.wangxiaolu.promotion.utils; ...@@ -2,8 +2,10 @@ package com.wangxiaolu.promotion.utils;
import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.config.WxMaConfig; import cn.binarywang.wx.miniapp.config.WxMaConfig;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.wangxiaolu.promotion.common.redis.service.RedisCache; import com.wangxiaolu.promotion.common.redis.service.RedisCache;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -13,11 +15,12 @@ import org.springframework.web.client.RestTemplate; ...@@ -13,11 +15,12 @@ import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource; import javax.annotation.Resource;
@Component @Component
@Slf4j
public class WechatAccessTokenUtil { public class WechatAccessTokenUtil {
// @Value("${wx.miniapp.appid}") @Value("${wx.cx_miniapp.app_id}")
// private String appid; private String appid;
// @Value("${wx.miniapp.secret}") @Value("${wx.cx_miniapp.app_secret}")
// private String secret; private String secret;
private static final String TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s"; private static final String TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s";
// 缓存access_token,避免频繁调用 // 缓存access_token,避免频繁调用
...@@ -41,12 +44,13 @@ public class WechatAccessTokenUtil { ...@@ -41,12 +44,13 @@ public class WechatAccessTokenUtil {
if (System.currentTimeMillis() < expireTime && StringUtils.hasText(accessToken)) { if (System.currentTimeMillis() < expireTime && StringUtils.hasText(accessToken)) {
return accessToken; return accessToken;
} }
WxMaConfig wxMaConfig = wxMaService.getWxMaConfig(); // WxMaConfig wxMaConfig = wxMaService.getWxMaConfig();
String appid = wxMaConfig.getAppid(); // String appid = wxMaConfig.getAppid();
String secret = wxMaConfig.getSecret(); // String secret = wxMaConfig.getSecret();
// 过期则重新获取 // 过期则重新获取
String url = String.format(TOKEN_URL, appid, secret); String url = String.format(TOKEN_URL, appid, secret);
String response = restTemplate.getForObject(url, String.class); String response = restTemplate.getForObject(url, String.class);
log.info("获取微信access_token,url:{},response:{}",url,response);
// 解析JSON(推荐使用Jackson或FastJSON) // 解析JSON(推荐使用Jackson或FastJSON)
JSONObject json = JSONObject.from(response); JSONObject json = JSONObject.from(response);
...@@ -55,6 +59,8 @@ public class WechatAccessTokenUtil { ...@@ -55,6 +59,8 @@ public class WechatAccessTokenUtil {
int expiresIn = json.getIntValue("expires_in"); int expiresIn = json.getIntValue("expires_in");
// 提前5分钟过期 // 提前5分钟过期
expireTime = System.currentTimeMillis() + (expiresIn - 300) * 1000; expireTime = System.currentTimeMillis() + (expiresIn - 300) * 1000;
return accessToken; return accessToken;
} }
} }
...@@ -78,8 +78,8 @@ public class ActivityStautsHandler { ...@@ -78,8 +78,8 @@ public class ActivityStautsHandler {
.eq(TemporaryActivityTaskClockDO::getTaskType, ActivityPhotoType.RANDOM_TASK.getType()) .eq(TemporaryActivityTaskClockDO::getTaskType, ActivityPhotoType.RANDOM_TASK.getType())
.eq(TemporaryActivityTaskClockDO::getIsDelete, FlagType.NO.getType()) .eq(TemporaryActivityTaskClockDO::getIsDelete, FlagType.NO.getType())
.eq(TemporaryActivityTaskClockDO::getIsSendSubscribe, FlagType.NO.getType()) .eq(TemporaryActivityTaskClockDO::getIsSendSubscribe, FlagType.NO.getType())
.le(TemporaryActivityTaskClockDO::getRequiredlockTime, latestDateTime) .ge(TemporaryActivityTaskClockDO::getRequiredlockTime, latestDateTime)
.ge(TemporaryActivityTaskClockDO::getRequiredlockTime, new Date()) // .ge(TemporaryActivityTaskClockDO::getRequiredlockTime, new Date())
); );
for (TemporaryActivityTaskClockDO taskClockDO : list) { for (TemporaryActivityTaskClockDO taskClockDO : list) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论