去掉拿接口的缓存逻辑

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