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', }, });