From da5bb98cb75804cc95c38d451b34ad7c90d07c14 Mon Sep 17 00:00:00 2001 From: hailin Date: Wed, 7 Jan 2026 22:47:23 -0800 Subject: [PATCH] =?UTF-8?q?fix(admin-service):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=9B=A2=E9=98=9F=E7=BB=9F=E8=AE=A1=E6=9F=A5=E8=AF=A2=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E9=94=99=E8=AF=AF=E7=9A=84=20userId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit user_query_view 和 referral_query_view 的 userId 不一致: - user_query_view.user_id = 10 (identity-service CDC) - referral_query_view.user_id = 25122700001 (referral-service CDC) 修复: - getTeamStats 改为从 referralQueryView 获取 userId - 直接用 accountSequence 查询团队认种量,避免再次关联 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../user-detail-query.repository.impl.ts | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 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 55f525c8..1fc47857 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 @@ -508,41 +508,33 @@ export class UserDetailQueryRepositoryImpl implements IUserDetailQueryRepository } async getTeamStats(accountSequence: string): Promise<{ teamAddressCount: number; teamAdoptionCount: number }> { - // 先获取用户的 userId - const user = await this.prisma.userQueryView.findUnique({ + // 从 referralQueryView 获取用户的 userId(而不是 userQueryView,因为两边的 userId 可能不一致) + const referral = await this.prisma.referralQueryView.findUnique({ where: { accountSequence }, select: { userId: true }, }); - if (!user) return { teamAddressCount: 0, teamAdoptionCount: 0 }; + if (!referral) return { teamAddressCount: 0, teamAdoptionCount: 0 }; // 1. 获取团队地址数:递归查找所有以当前用户为祖先的推荐关系 // ancestorPath 包含所有祖先 userId,如果当前用户的 userId 在某用户的 ancestorPath 中,说明该用户是当前用户的下级 const teamMembers = await this.prisma.referralQueryView.findMany({ where: { ancestorPath: { - has: user.userId, + has: referral.userId, }, }, - select: { userId: true }, + select: { accountSequence: true }, }); const teamAddressCount = teamMembers.length; // 2. 获取团队认种量:汇总所有团队成员的有效认种订单数 - // 使用 PlantingOrderQueryView 而不是 PlantingPositionQueryView,保持与个人认种量一致 let teamAdoptionCount = 0; if (teamMembers.length > 0) { - const teamAccountSequences = await this.prisma.referralQueryView.findMany({ - where: { - userId: { in: teamMembers.map((m) => m.userId) }, - }, - select: { accountSequence: true }, - }); - const count = await this.prisma.plantingOrderQueryView.count({ where: { - accountSequence: { in: teamAccountSequences.map((t) => t.accountSequence) }, + accountSequence: { in: teamMembers.map((m) => m.accountSequence) }, status: 'MINING_ENABLED', }, });