From c808470275492447b1413e16d2d06abdaab57cdd Mon Sep 17 00:00:00 2001 From: feng <18691763612@163.com> Date: Mon, 29 Sep 2025 10:18:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E6=8B=BF=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E7=9A=84=E7=BC=93=E5=AD=98=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/renkang/anyan/client/AnYanClient.java | 8 ++- .../anyan/client/AnYanClientExecutor.java | 52 ++++++++++++------- .../controller/LargeScreenNewController.java | 2 +- .../service/ILargeScreenService.java | 2 +- .../service/impl/LargeScreenServiceImpl.java | 4 +- 5 files changed, 45 insertions(+), 23 deletions(-) diff --git a/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/client/AnYanClient.java b/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/client/AnYanClient.java index b3eb134..f48c59b 100644 --- a/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/client/AnYanClient.java +++ b/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/client/AnYanClient.java @@ -109,5 +109,11 @@ public interface AnYanClient { * 公网环境获取服务访问token (目前仅用于访问安眼大屏) * @return */ - String publicNetworkToken() throws Exception; + String publicNetworkToken(); + + /** + * 公网环境获取服务访问token (目前仅用于访问安眼大屏, 不走缓存, 每次用现取) + * @return + */ + String publicNetworkTokenNoCache(); } diff --git a/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/client/AnYanClientExecutor.java b/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/client/AnYanClientExecutor.java index 8b27aae..10b774d 100644 --- a/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/client/AnYanClientExecutor.java +++ b/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/client/AnYanClientExecutor.java @@ -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 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; } } diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/controller/LargeScreenNewController.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/controller/LargeScreenNewController.java index 6d8f6bd..f06d9ba 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/controller/LargeScreenNewController.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/controller/LargeScreenNewController.java @@ -283,7 +283,7 @@ public class LargeScreenNewController { * @return */ @GetMapping("queryAnYanToken") - public Result queryAnYanToken() throws Exception { + public Result queryAnYanToken(){ return Result.ok(largeScreenService.queryAnYanToken()); } } diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/ILargeScreenService.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/ILargeScreenService.java index ec4571d..4e1e480 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/ILargeScreenService.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/ILargeScreenService.java @@ -55,5 +55,5 @@ public interface ILargeScreenService extends IService { */ void syncAnYanHospital(); - String queryAnYanToken() throws Exception; + String queryAnYanToken(); } diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenServiceImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenServiceImpl.java index c72e976..14069a8 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenServiceImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenServiceImpl.java @@ -535,7 +535,7 @@ public class LargeScreenServiceImpl extends ServiceImpl