perf(支付): 添加企业微信用户ID缓存以减少API调用

添加Caffeine缓存服务来缓存企业微信用户ID,避免重复调用企业微信API获取用户ID,提高性能并减少外部API调用次数
This commit is contained in:
dzq 2025-12-11 11:44:45 +08:00
parent d6495cf4e0
commit c35a432203
1 changed files with 16 additions and 1 deletions

View File

@ -16,6 +16,7 @@ import com.agileboot.domain.ab98.user.Ab98UserApplicationService;
import com.agileboot.domain.ab98.user.db.Ab98UserEntity;
import com.agileboot.domain.ab98.user_balance.UserBalanceApplicationService;
import com.agileboot.domain.ab98.user_balance.dto.UserBalanceDTO;
import com.agileboot.domain.common.cache.CaffeineCacheService;
import com.agileboot.domain.common.dto.QyLoginDTO;
import com.agileboot.domain.qywx.accessToken.AccessTokenApplicationService;
import com.agileboot.domain.qywx.accessToken.db.QyAccessTokenEntity;
@ -77,6 +78,7 @@ public class PaymentController {
private final Ab98UserApplicationService ab98UserApplicationService;
private final UserBalanceApplicationService userBalanceApplicationService;
private final WxshopConfig wxshopConfig;
private final CaffeineCacheService caffeineCache;
// 新增回调接口
/**
@ -190,7 +192,20 @@ public class PaymentController {
QyAuthCorpInfoEntity authCorpInfo = authCorpInfoApplicationService.selectByCorpid(corpid);
QyAccessTokenEntity qyAccessToken = accessTokenApplicationService.getByAppid(authCorpInfo.getAppid(), corpid);
// 通过企业微信code获取用户ID
String userid = QywxApiUtil.getQyUserid(qyAccessToken.getAccessToken(), code);
String userid = "";
// 构建缓存键
String cacheKey = corpid + ":" + code;
// 先从缓存获取
String cachedUserid = caffeineCache.qyUseridCache.get(cacheKey);
if (cachedUserid != null) {
userid = cachedUserid;
} else {
userid = QywxApiUtil.getQyUserid(qyAccessToken.getAccessToken(), code);
// 缓存用户ID
caffeineCache.qyUseridCache.put(cacheKey, userid);
}
// 根据企业微信用户ID查询系统用户名
SysUserEntity sysUserEntity = sysUserQyUserApplicationService.getSysUserByQyUserid(userid);