From bab30dbeba92ddaa71ece196865256100b2dcd63 Mon Sep 17 00:00:00 2001 From: hailin Date: Wed, 7 Jan 2026 22:42:30 -0800 Subject: [PATCH] =?UTF-8?q?refactor(admin-service):=20=E5=9B=A2=E9=98=9F?= =?UTF-8?q?=E8=AE=A4=E7=A7=8D=E9=87=8F=E6=94=B9=E7=94=A8=20PlantingOrderQu?= =?UTF-8?q?eryView?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 统一使用 PlantingOrderQueryView 计算团队认种量, 与个人认种量保持一致的数据源,避免 CDC 同步不一致问题 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../user-detail-query.repository.impl.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 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 b4786e84..55f525c8 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 @@ -529,18 +529,25 @@ export class UserDetailQueryRepositoryImpl implements IUserDetailQueryRepository const teamAddressCount = teamMembers.length; - // 2. 获取团队认种量:汇总所有团队成员的有效认种树数 + // 2. 获取团队认种量:汇总所有团队成员的有效认种订单数 + // 使用 PlantingOrderQueryView 而不是 PlantingPositionQueryView,保持与个人认种量一致 let teamAdoptionCount = 0; if (teamMembers.length > 0) { - const teamUserIds = teamMembers.map((m) => m.userId); - const positions = await this.prisma.plantingPositionQueryView.findMany({ + const teamAccountSequences = await this.prisma.referralQueryView.findMany({ where: { - userId: { in: teamUserIds }, + userId: { in: teamMembers.map((m) => m.userId) }, }, - select: { effectiveTreeCount: true }, + select: { accountSequence: true }, }); - teamAdoptionCount = positions.reduce((sum, p) => sum + p.effectiveTreeCount, 0); + const count = await this.prisma.plantingOrderQueryView.count({ + where: { + accountSequence: { in: teamAccountSequences.map((t) => t.accountSequence) }, + status: 'MINING_ENABLED', + }, + }); + + teamAdoptionCount = count; } return { teamAddressCount, teamAdoptionCount };