【安眼】缓存用户部门信息及登录逻辑

This commit is contained in:
2026-02-02 16:08:05 +08:00
parent c9020ee8d3
commit c73c1089ee
3 changed files with 64 additions and 15 deletions
@@ -297,11 +297,17 @@ public class AnYanClientExecutor implements AnYanClient {
@Override
@Retryable(maxAttempts = 2)
public AnYanUserInfoResult getAnYanUserInfo(String token, String username) {
HttpHeaders headers = new HttpHeaders();
headers.add(AnYanConstants.AUTHORIZATION, AnYanConstants.TOKEN_TYPE + token);
ResponseEntity<AnYanUserInfoResult> 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);
try {
HttpHeaders headers = new HttpHeaders();
headers.add(AnYanConstants.AUTHORIZATION, AnYanConstants.TOKEN_TYPE + token);
ResponseEntity<AnYanUserInfoResult> 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);
} catch (Exception e) {
log.error("获取用户信息失败:{}", e.getMessage());
ExceptionAssertsUtil.fail("获取用户信息失败");
}
return null;
}
@Override
@@ -2,6 +2,7 @@ package com.renkang.restaurant.config;
import com.renkang.anyan.client.AnYanClient;
import com.renkang.anyan.config.AnYanProperties;
import com.renkang.anyan.enums.AnYanApiEnum;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.exception.ExceptionAssertsUtil;
@@ -59,8 +60,13 @@ public class AnYanRestTemplateConfig {
execute = clientHttpRequestExecution.execute(httpRequest, bytes);
HttpStatus httpStatus = execute.getStatusCode();
if (Arrays.asList(HttpStatus.UNAUTHORIZED, HttpStatus.FORBIDDEN).contains(httpStatus)) {
log.info("---------安眼token过期,触发刷新token机制-------已过期的token{}",httpRequest.getHeaders().getFirst("authorization"));
SpringContextUtils.getBean("anYanClientExecutor", AnYanClient.class).refreshToken();
// 获取请求URL
String url = httpRequest.getURI().toString();
// 排除特定接口不执行刷新token逻辑(获取token接口,根据token获取个人信息接口)
if (!url.contains(AnYanApiEnum.QUERY_AUTH_TOKEN.getMethodPath()) && !url.contains(AnYanApiEnum.USER_INFO_UNIT_V2.getMethodPath())) {
log.info("---------安眼token过期,触发刷新token机制-------已过期的token{}", httpRequest.getHeaders().getFirst("authorization"));
SpringContextUtils.getBean("anYanClientExecutor", AnYanClient.class).refreshToken();
}
}
} catch (Exception e) {
log.error("---------安眼平台API调用异常-------e{},接口:{}", e.getMessage(), httpRequest.getURI(), e);