fix(admin-service): 修复团队统计查询使用错误的 userId
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 <noreply@anthropic.com>
This commit is contained in:
parent
bab30dbeba
commit
da5bb98cb7
|
|
@ -508,41 +508,33 @@ export class UserDetailQueryRepositoryImpl implements IUserDetailQueryRepository
|
||||||
}
|
}
|
||||||
|
|
||||||
async getTeamStats(accountSequence: string): Promise<{ teamAddressCount: number; teamAdoptionCount: number }> {
|
async getTeamStats(accountSequence: string): Promise<{ teamAddressCount: number; teamAdoptionCount: number }> {
|
||||||
// 先获取用户的 userId
|
// 从 referralQueryView 获取用户的 userId(而不是 userQueryView,因为两边的 userId 可能不一致)
|
||||||
const user = await this.prisma.userQueryView.findUnique({
|
const referral = await this.prisma.referralQueryView.findUnique({
|
||||||
where: { accountSequence },
|
where: { accountSequence },
|
||||||
select: { userId: true },
|
select: { userId: true },
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!user) return { teamAddressCount: 0, teamAdoptionCount: 0 };
|
if (!referral) return { teamAddressCount: 0, teamAdoptionCount: 0 };
|
||||||
|
|
||||||
// 1. 获取团队地址数:递归查找所有以当前用户为祖先的推荐关系
|
// 1. 获取团队地址数:递归查找所有以当前用户为祖先的推荐关系
|
||||||
// ancestorPath 包含所有祖先 userId,如果当前用户的 userId 在某用户的 ancestorPath 中,说明该用户是当前用户的下级
|
// ancestorPath 包含所有祖先 userId,如果当前用户的 userId 在某用户的 ancestorPath 中,说明该用户是当前用户的下级
|
||||||
const teamMembers = await this.prisma.referralQueryView.findMany({
|
const teamMembers = await this.prisma.referralQueryView.findMany({
|
||||||
where: {
|
where: {
|
||||||
ancestorPath: {
|
ancestorPath: {
|
||||||
has: user.userId,
|
has: referral.userId,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
select: { userId: true },
|
select: { accountSequence: true },
|
||||||
});
|
});
|
||||||
|
|
||||||
const teamAddressCount = teamMembers.length;
|
const teamAddressCount = teamMembers.length;
|
||||||
|
|
||||||
// 2. 获取团队认种量:汇总所有团队成员的有效认种订单数
|
// 2. 获取团队认种量:汇总所有团队成员的有效认种订单数
|
||||||
// 使用 PlantingOrderQueryView 而不是 PlantingPositionQueryView,保持与个人认种量一致
|
|
||||||
let teamAdoptionCount = 0;
|
let teamAdoptionCount = 0;
|
||||||
if (teamMembers.length > 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({
|
const count = await this.prisma.plantingOrderQueryView.count({
|
||||||
where: {
|
where: {
|
||||||
accountSequence: { in: teamAccountSequences.map((t) => t.accountSequence) },
|
accountSequence: { in: teamMembers.map((m) => m.accountSequence) },
|
||||||
status: 'MINING_ENABLED',
|
status: 'MINING_ENABLED',
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue