From c9020ee8d348e404abd45dc7b51f490e57e0d46f Mon Sep 17 00:00:00 2001 From: PengJ <2413927716@qq.com> Date: Tue, 27 Jan 2026 10:23:34 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=AE=89=E7=9C=BC=E3=80=91=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E7=94=A8=E6=88=B7token=E5=8F=8A=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E4=BF=A1=E6=81=AF?= 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 | 29 +++++++++++-------- .../anyan/constants/AnYanConstants.java | 10 +++++++ .../service/impl/LoginAnYanServiceImpl.java | 2 +- 4 files changed, 34 insertions(+), 15 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 3350f86..c9622d2 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 @@ -132,7 +132,7 @@ public interface AnYanClient { * @param token * @return */ - AnYanUserInfoResult getAnYanUserInfo(String token); + AnYanUserInfoResult getAnYanUserInfo(String token, String username); /** * 批量拉取安眼平台AED信息 , 用于定时任务更新本地数据的AED数据 @@ -155,7 +155,7 @@ public interface AnYanClient { * @param employeeNum 工号 * @return */ - CareUserListVo careUserDetails(String anYanUserId,String employeeNum); + CareUserListVo careUserDetails(String anYanUserId, String employeeNum); /** * 一人一案分页列表查询接口(用大屏首页重点关爱趋势预警弹窗列表) @@ -175,6 +175,7 @@ public interface AnYanClient { /** * 批量更新员工关键信息接口 + * * @param employeeNumList * @return */ @@ -183,6 +184,7 @@ public interface AnYanClient { /** * 更新单个员工扩展信息 * 是否是借调人员 这个判断是依据 数据中是否存在currentOfficeId来决定的,存在说明是借调人员,不存在说明不是借调人员 + * * @param employeeNum * @return */ @@ -190,6 +192,7 @@ public interface AnYanClient { /** * 体检数据 + * * @param param * @return */ @@ -197,6 +200,7 @@ public interface AnYanClient { /** * 根据id查询体检数据 + * * @param id * @return */ 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 93cb364..f020e87 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 @@ -103,6 +103,9 @@ public class AnYanClientExecutor implements AnYanClient { ResponseEntity authResult = RestTemplateUtil.postExchangeForGetTokenByPassword(AnYanApiEnum.QUERY_AUTH_TOKEN, formData, headers, AuthResult.class); if (HttpStatus.OK.equals(authResult.getStatusCode()) && ObjectUtils.isNotEmpty(authResult.getBody())) { + String token = authResult.getBody().getAccess_token(); + int expireSeconds = ObjectUtil.isNotEmpty(authResult.getBody().getExpires_in()) ? authResult.getBody().getExpires_in() : 3600; + redisClientUtil.set(new RedisKeyPrefix(expireSeconds, AnYanConstants.AN_YAN_API_USER_TOKEN_PREFIX), username, token); return authResult.getBody(); } else { log.error("------安眼系统获取token失败(密码模式){}------", authResult.getBody()); @@ -143,7 +146,7 @@ public class AnYanClientExecutor implements AnYanClient { if (ObjectUtil.isNotEmpty(authResult) && StrUtil.isNotEmpty(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", authResult.getAccess_token()); - log.info("---------刷新安眼token成功-------新的token:{},剩余过期时间:{}",authResult.getAccess_token(),authResult.getExpires_in()); + log.info("---------刷新安眼token成功-------新的token:{},剩余过期时间:{}", authResult.getAccess_token(), authResult.getExpires_in()); } } @@ -293,10 +296,11 @@ public class AnYanClientExecutor implements AnYanClient { */ @Override @Retryable(maxAttempts = 2) - public AnYanUserInfoResult getAnYanUserInfo(String token) { + public AnYanUserInfoResult getAnYanUserInfo(String token, String username) { HttpHeaders headers = new HttpHeaders(); headers.add(AnYanConstants.AUTHORIZATION, AnYanConstants.TOKEN_TYPE + token); ResponseEntity exchange = RestTemplateUtil.getExchange(AnYanApiEnum.USER_INFO_UNIT_V2, headers, AnYanUserInfoResult.class); + redisClientUtil.set(new RedisKeyPrefix(-1, AnYanConstants.AN_YAN_API_USERINFO_PREFIX), username, exchange); return BeanUtil.toBean(exchange.getBody(), AnYanUserInfoResult.class); } @@ -308,9 +312,10 @@ public class AnYanClientExecutor implements AnYanClient { IPage aedPage = new PageResultToBeanUtil().transform(result, AnYanAedInfo.class); return aedPage.getRecords(); } + @Override @Retryable(maxAttempts = 2) - public List homeCarePersonList(){ + public List homeCarePersonList() { AnYanResult result = RestTemplateUtil.postExchange(AnYanApiEnum.CARE_PERSON_BY_TIME, buildTokenHeader(), null); List listMaps = (List) result.getData(); return listMaps.stream().map(lMap -> BeanUtil.toBean(lMap, CarePersonList.class)).collect(Collectors.toList()); @@ -318,12 +323,12 @@ public class AnYanClientExecutor implements AnYanClient { @Override @Retryable(maxAttempts = 2) - public CareUserListVo careUserDetails(String anYanUserId,String employeeNum){ + public CareUserListVo careUserDetails(String anYanUserId, String employeeNum) { JSONObject param = new JSONObject(); - if(StrUtil.isNotEmpty(anYanUserId)){ + if (StrUtil.isNotEmpty(anYanUserId)) { param.put("id", anYanUserId); } - if(StrUtil.isNotEmpty(employeeNum)){ + if (StrUtil.isNotEmpty(employeeNum)) { param.put("employeeNum", employeeNum); } AnYanResult result = RestTemplateUtil.postExchange(AnYanApiEnum.CARE_PERSON_Details, buildTokenHeader(), param); @@ -332,14 +337,14 @@ public class AnYanClientExecutor implements AnYanClient { @Override @Retryable(maxAttempts = 2) - public IPage careUserDetailsPage(CareUserDetailsParam param){ + public IPage careUserDetailsPage(CareUserDetailsParam param) { AnYanResult result = RestTemplateUtil.postExchange(AnYanApiEnum.CARE_PERSON_PAGE_LIST, buildTokenHeader(), param); return new PageResultToBeanUtil().transform(result, CareUserListVo.class); } @Override @Retryable(maxAttempts = 2) - public IPage queryEmergencyContact(EmergencyContactParam param){ + public IPage queryEmergencyContact(EmergencyContactParam param) { AnYanResult result = RestTemplateUtil.postExchange(AnYanApiEnum.QUERY_EMPLOYEE_CARE_PERSON, buildTokenHeader(), param); return new PageResultToBeanUtil().transform(result, EmergencyContactVO.class); } @@ -347,8 +352,8 @@ public class AnYanClientExecutor implements AnYanClient { @Override @Retryable(maxAttempts = 2) public List updateUserBatch(List employeeNumList) { - Map> map = new HashMap<>(1); - map.put("employeeNumList",employeeNumList); + Map> map = new HashMap<>(1); + map.put("employeeNumList", employeeNumList); AnYanResult result = RestTemplateUtil.postExchange(AnYanApiEnum.FIND_VITAL_INFO, buildTokenHeader(), map); List listMaps = (List) result.getData(); return listMaps.stream().map(lMap -> BeanUtil.toBean(lMap, AnYanUpdateUserBatchInfo.class)).collect(Collectors.toList()); @@ -357,8 +362,8 @@ public class AnYanClientExecutor implements AnYanClient { @Override @Retryable(maxAttempts = 2) public AnYanUserEmployee updateEmployeeNum(String employeeNum) { - Map map = new HashMap<>(1); - map.put("employeeNum",employeeNum); + Map map = new HashMap<>(1); + map.put("employeeNum", employeeNum); AnYanResult result = RestTemplateUtil.postExchange(AnYanApiEnum.FIND_BY_EMPLOYEENUM, buildTokenHeader(), map); return BeanUtil.toBean(result.getData(), AnYanUserEmployee.class); } diff --git a/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/constants/AnYanConstants.java b/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/constants/AnYanConstants.java index f081743..9ed992d 100644 --- a/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/constants/AnYanConstants.java +++ b/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/constants/AnYanConstants.java @@ -34,6 +34,16 @@ public interface AnYanConstants { */ String AN_YAN_API_TOKEN_PREFIX = "exterior:anyan:api:"; + /** + * 缓存安眼用户登录token + */ + String AN_YAN_API_USER_TOKEN_PREFIX = "exterior:anyan:api:access_token"; + + /** + * 缓存安眼用户信息 + */ + String AN_YAN_API_USERINFO_PREFIX = "exterior:anyan:api:userinfo"; + /** * 部分业务接口需要代入的请求头参数Roles */ diff --git a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/LoginAnYanServiceImpl.java b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/LoginAnYanServiceImpl.java index 672d98e..ac7c68b 100644 --- a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/LoginAnYanServiceImpl.java +++ b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/LoginAnYanServiceImpl.java @@ -117,7 +117,7 @@ public class LoginAnYanServiceImpl implements ILoginAnYanService { } // 授权成功获取用户信息(统一认证的平台接口没有做统一封装,成功和失败均返回一个不同的json字符串, 这里只能判断没有获取到用户信息则认为是失败) - AnYanUserInfoResult anYanUserInfo = anYanClient.getAnYanUserInfo(anYanAuthResult.getAccess_token()); + AnYanUserInfoResult anYanUserInfo = anYanClient.getAnYanUserInfo(anYanAuthResult.getAccess_token(), username); if (anYanUserInfo == null || anYanUserInfo.getEmployeeUnitDTO() == null) { return Result.error("登录失败,请先联系本单位掌油管理员确认个人机构信息"); }