去掉拿接口的缓存逻辑

This commit is contained in:
feng
2025-09-29 10:18:14 +08:00
parent 2b6e5d2736
commit c808470275
5 changed files with 45 additions and 23 deletions
@@ -109,5 +109,11 @@ public interface AnYanClient {
* 公网环境获取服务访问token (目前仅用于访问安眼大屏)
* @return
*/
String publicNetworkToken() throws Exception;
String publicNetworkToken();
/**
* 公网环境获取服务访问token (目前仅用于访问安眼大屏, 不走缓存, 每次用现取)
* @return
*/
String publicNetworkTokenNoCache();
}
@@ -179,12 +179,24 @@ public class AnYanClientExecutor implements AnYanClient {
}
@Override
public String publicNetworkToken() throws Exception {
public String publicNetworkToken(){
String token = redisClientUtil.get(new RedisKeyPrefix(AnYanConstants.AN_YAN_API_TOKEN_PREFIX) ,"publicToken",String.class);
if(StrUtil.isEmpty(token)){
JSONObject param = new JSONObject();
String password = anYanProperties.getPublicPassWrod();
String userName = anYanProperties.getPublicUserNmae();
AuthResult authResult = queryPublicToken();
if(null != authResult){
token = authResult.getAccess_token();
int expireSeconds = ObjectUtil.isNotEmpty(authResult.getExpires_in())? authResult.getExpires_in() : 7200;
redisClientUtil.set(new RedisKeyPrefix(expireSeconds,AnYanConstants.AN_YAN_API_TOKEN_PREFIX),"publicToken", token);
}
}
return token;
}
private AuthResult queryPublicToken(){
JSONObject param = new JSONObject();
String password = anYanProperties.getPublicPassWrod();
String userName = anYanProperties.getPublicUserNmae();
try {
String sm4Password = SM4Utils.encryptSM4(password);
String encryptPassword = StringUtils.encryptByPublicKey(publicKey, password);
param.put("password",encryptPassword);
@@ -193,23 +205,27 @@ public class AnYanClientExecutor implements AnYanClient {
param.put("timeStamp", UUID.randomUUID().toString());
ResponseEntity<AnYanResult> responseEntity = RestTemplateUtil.postExchangeForGetToken(AnYanApiEnum.PUBLIC_NETWORK_AUTH_TOKEN, param,AnYanResult.class);
//安眼提供的接口包过深 ,先从AnYanResult对象中取出加密的密文,后在解密密文拿出 AuthResult对象 , 再从AuthResult对象中拿出 access_token
try {
AnYanResult anYanResult = responseEntity.getBody();
if(ObjectUtil.isNotEmpty(anYanResult) && ObjectUtil.isNotEmpty(anYanResult.getData())){
String decryptAuthResult = SM4Utils.decryptSM4((String) anYanResult.getData());
AuthResult authResult = JSON.parseObject(decryptAuthResult).toJavaObject(AuthResult.class);
if(null != authResult && null != authResult.getAccess_token()){
token = authResult.getAccess_token();
int expireSeconds = ObjectUtil.isNotEmpty(authResult.getExpires_in())? authResult.getExpires_in() : 7200;
redisClientUtil.set(new RedisKeyPrefix(expireSeconds,AnYanConstants.AN_YAN_API_TOKEN_PREFIX),"publicToken", token);
}
AnYanResult anYanResult = responseEntity.getBody();
if(ObjectUtil.isNotEmpty(anYanResult) && ObjectUtil.isNotEmpty(anYanResult.getData())){
String decryptAuthResult = SM4Utils.decryptSM4((String) anYanResult.getData());
AuthResult authResult = JSON.parseObject(decryptAuthResult).toJavaObject(AuthResult.class);
if(null != authResult && null != authResult.getAccess_token()){
return authResult;
}else {
ExceptionAssertsUtil.fail("获取安眼系统token失败");
}
} catch (Exception e) {
e.printStackTrace();
ExceptionAssertsUtil.fail("获取安眼系统token失败");
}
} catch (Exception e) {
e.printStackTrace();
ExceptionAssertsUtil.fail("获取安眼系统token失败");
}
return token;
return null;
}
@Override
public String publicNetworkTokenNoCache(){
AuthResult authResult = queryPublicToken();
return null != authResult? authResult.getAccess_token() : null;
}
}
@@ -283,7 +283,7 @@ public class LargeScreenNewController {
* @return
*/
@GetMapping("queryAnYanToken")
public Result<String> queryAnYanToken() throws Exception {
public Result<String> queryAnYanToken(){
return Result.ok(largeScreenService.queryAnYanToken());
}
}
@@ -55,5 +55,5 @@ public interface ILargeScreenService extends IService<LargeScreenMap> {
*/
void syncAnYanHospital();
String queryAnYanToken() throws Exception;
String queryAnYanToken();
}
@@ -535,7 +535,7 @@ public class LargeScreenServiceImpl extends ServiceImpl<LargeScreenMapper, Large
}
@Override
public String queryAnYanToken() throws Exception {
return anYanClient.publicNetworkToken();
public String queryAnYanToken(){
return anYanClient.publicNetworkTokenNoCache();
}
}