From c35a432203428001f9184ab9baa0ae88e24c313b Mon Sep 17 00:00:00 2001 From: dzq Date: Thu, 11 Dec 2025 11:44:45 +0800 Subject: [PATCH] =?UTF-8?q?perf(=E6=94=AF=E4=BB=98):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BC=81=E4=B8=9A=E5=BE=AE=E4=BF=A1=E7=94=A8=E6=88=B7ID?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E4=BB=A5=E5=87=8F=E5=B0=91API=E8=B0=83?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加Caffeine缓存服务来缓存企业微信用户ID,避免重复调用企业微信API获取用户ID,提高性能并减少外部API调用次数 --- .../api/controller/PaymentController.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/agileboot-api/src/main/java/com/agileboot/api/controller/PaymentController.java b/agileboot-api/src/main/java/com/agileboot/api/controller/PaymentController.java index e72b46f..3499e4b 100644 --- a/agileboot-api/src/main/java/com/agileboot/api/controller/PaymentController.java +++ b/agileboot-api/src/main/java/com/agileboot/api/controller/PaymentController.java @@ -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);