From a86116fef4f86d6d0029c4b0b69ba91b3bbaee9e Mon Sep 17 00:00:00 2001 From: hailin Date: Thu, 8 Jan 2026 05:30:00 -0800 Subject: [PATCH] =?UTF-8?q?fix(admin-service):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=A5=96=E5=85=88=E8=8A=82=E7=82=B9=E6=95=B0=E6=8D=AE=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E4=BE=9D=E8=B5=96=20user=5Fquery=5Fview=20=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题:当祖先用户存在于 referral_query_view 但不存在于 user_query_view 时(CDC 同步延迟),祖先节点的 accountSequence 和统计数据无法正确获取。 修复: - 改用 referralAccountSequences(从 referrals 获取) 替代 userAccountSequences(从 users 获取) - 确保即使用户基本信息未同步,仍能获取正确的认种统计 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../repositories/user-detail-query.repository.impl.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/services/admin-service/src/infrastructure/persistence/repositories/user-detail-query.repository.impl.ts b/backend/services/admin-service/src/infrastructure/persistence/repositories/user-detail-query.repository.impl.ts index fca64c87..e1476b97 100644 --- a/backend/services/admin-service/src/infrastructure/persistence/repositories/user-detail-query.repository.impl.ts +++ b/backend/services/admin-service/src/infrastructure/persistence/repositories/user-detail-query.repository.impl.ts @@ -83,13 +83,14 @@ export class UserDetailQueryRepositoryImpl implements IUserDetailQueryRepository ]); // 实时统计:获取每个祖先的认种数量、团队认种量和直推数量 - const userAccountSequences = users.map(u => u.accountSequence); + // 注意:优先从 referrals 获取 accountSequences,因为用户可能不存在于 user_query_view + const referralAccountSequences = referrals.map(r => r.accountSequence); const [adoptionCounts, directReferralCounts, teamStats] = await Promise.all([ // 统计每个用户的认种订单数量(状态为 MINING_ENABLED) this.prisma.plantingOrderQueryView.groupBy({ by: ['accountSequence'], where: { - accountSequence: { in: userAccountSequences }, + accountSequence: { in: referralAccountSequences }, status: 'MINING_ENABLED', }, _count: { id: true }, @@ -101,7 +102,7 @@ export class UserDetailQueryRepositoryImpl implements IUserDetailQueryRepository _count: { userId: true }, }), // 获取团队认种量 - this.getBatchUserStats(userAccountSequences), + this.getBatchUserStats(referralAccountSequences), ]); const adoptionCountMap = new Map(adoptionCounts.map(a => [a.accountSequence, a._count.id]));