Commit a9966def authored by matianhao's avatar matianhao

[纪委接口] <update> 修改刷新秘钥方式,获取秘钥30s内不重新获取秘钥

parent 94b4ce40
...@@ -9,9 +9,13 @@ public class Constants { ...@@ -9,9 +9,13 @@ public class Constants {
// redis存储请求秘钥key值 // redis存储请求秘钥key值
//----------------------------------- //-----------------------------------
/** /**
* 数据局接口 * 数据局接口秘钥
*/ */
public static final String SJJ_REQUEST_SECRET_PREFIX = "sjj.request.secret"; public static final String SJJ_REQUEST_SECRET_PREFIX = "sjj.request.secret";
/**
* 数据局接口过期时间
*/
public static final String SJJ_REQUEST_EXPIRE_TIME_PREFIX = "sjj.request.expire.time";
/** /**
* 招必得接口 * 招必得接口
*/ */
......
...@@ -105,8 +105,11 @@ public class RequestSecretSchedulerTask implements SchedulingConfigurer { ...@@ -105,8 +105,11 @@ public class RequestSecretSchedulerTask implements SchedulingConfigurer {
requestSecretEndTime = Long.parseLong(datas.getString("requestSecretEndTime")); requestSecretEndTime = Long.parseLong(datas.getString("requestSecretEndTime"));
refreshSecret = datas.getString("refreshSecret"); refreshSecret = datas.getString("refreshSecret");
refreshSecretEndTime = Long.parseLong(datas.getString("refreshSecretEndTime")); refreshSecretEndTime = Long.parseLong(datas.getString("refreshSecretEndTime"));
// 保存请求秘钥至redis // 设置过期时间,30秒内不重新刷新秘钥
String expireTime = String.valueOf(requestSecretEndTime - (14 * 60 * 1000 + 30 * 1000));
// redis保存 请求秘钥 和 过期时间
redisUtil.set(Constants.SJJ_REQUEST_SECRET_PREFIX, requestSecret); redisUtil.set(Constants.SJJ_REQUEST_SECRET_PREFIX, requestSecret);
redisUtil.set(Constants.SJJ_REQUEST_EXPIRE_TIME_PREFIX, expireTime);
} }
} }
......
...@@ -15,11 +15,13 @@ import org.springframework.stereotype.Component; ...@@ -15,11 +15,13 @@ import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Date; import java.util.Date;
import java.util.Objects; import java.util.Objects;
import static com.mth.requestsecret.constant.Constants.RESPONSE_CODE_14; import static com.mth.requestsecret.constant.Constants.*;
import static com.mth.requestsecret.constant.Constants.SJJ_REQUEST_SECRET_PREFIX;
/** /**
* @author fyl * @author fyl
...@@ -109,8 +111,16 @@ public class RestTemplateService { ...@@ -109,8 +111,16 @@ public class RestTemplateService {
if (RESPONSE_CODE_14.equals(code) && count < 2) { if (RESPONSE_CODE_14.equals(code) && count < 2) {
threadLocal.set(++count); threadLocal.set(++count);
log.info("线程名称:{},重新请求次数:{}", threadName, count); log.info("线程名称:{},重新请求次数:{}", threadName, count);
// 获取秘钥 // redis 中获取过期时间
schedulerTask.getRequestSecret(); String expireTimeStr = redisUtil.get(SJJ_REQUEST_EXPIRE_TIME_PREFIX);
LocalDateTime expireTime = Instant.ofEpochMilli(Long.parseLong(expireTimeStr)).atZone(ZoneOffset.ofHours(8)).toLocalDateTime();
LocalDateTime now = LocalDateTime.now();
// 当前时间超过过期时间,重新请求秘钥,否则重新发送请求
if (now.isAfter(expireTime)) {
log.info("redis中过期时间:{},当前时间:{}", expireTime, now);
// 重新获取秘钥
schedulerTask.getRequestSecret();
}
// 重新调用请求 // 重新调用请求
return commonSendRequest(paramMap, apiMethod); return commonSendRequest(paramMap, apiMethod);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment