feat(mining-admin): 增强系统账户算力明细信息
- 关联认种订单信息:树数、认种日期、状态、单价 - 关联用户信息:手机号(脱敏)、姓名 - 方便追溯每笔算力的来源 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
63aba087b6
commit
7c8ea7a9d7
|
|
@ -402,21 +402,66 @@ export class SystemAccountsService {
|
|||
}),
|
||||
]);
|
||||
|
||||
// 获取关联的认种订单和用户信息
|
||||
const adoptionIds = [...new Set(records.map(r => r.sourceAdoptionId))];
|
||||
const accountSequences = [...new Set(records.map(r => r.sourceAccountSequence))];
|
||||
|
||||
const [adoptions, users] = await Promise.all([
|
||||
this.prisma.syncedAdoption.findMany({
|
||||
where: { originalAdoptionId: { in: adoptionIds } },
|
||||
select: {
|
||||
originalAdoptionId: true,
|
||||
accountSequence: true,
|
||||
treeCount: true,
|
||||
adoptionDate: true,
|
||||
status: true,
|
||||
contributionPerTree: true,
|
||||
},
|
||||
}),
|
||||
this.prisma.syncedUser.findMany({
|
||||
where: { accountSequence: { in: accountSequences } },
|
||||
select: {
|
||||
accountSequence: true,
|
||||
phone: true,
|
||||
realName: true,
|
||||
nickname: true,
|
||||
},
|
||||
}),
|
||||
]);
|
||||
|
||||
// 构建映射
|
||||
const adoptionMap = new Map(adoptions.map(a => [a.originalAdoptionId.toString(), a]));
|
||||
const userMap = new Map(users.map(u => [u.accountSequence, u]));
|
||||
|
||||
return {
|
||||
records: records.map((record) => ({
|
||||
originalRecordId: record.originalRecordId.toString(),
|
||||
accountType: record.accountType,
|
||||
regionCode: record.regionCode,
|
||||
sourceAdoptionId: record.sourceAdoptionId.toString(),
|
||||
sourceAccountSequence: record.sourceAccountSequence,
|
||||
distributionRate: record.distributionRate.toString(),
|
||||
amount: record.amount.toString(),
|
||||
effectiveDate: record.effectiveDate,
|
||||
expireDate: record.expireDate,
|
||||
isExpired: record.isExpired,
|
||||
createdAt: record.createdAt,
|
||||
syncedAt: record.syncedAt,
|
||||
})),
|
||||
records: records.map((record) => {
|
||||
const adoption = adoptionMap.get(record.sourceAdoptionId.toString());
|
||||
const user = userMap.get(record.sourceAccountSequence);
|
||||
|
||||
return {
|
||||
originalRecordId: record.originalRecordId.toString(),
|
||||
accountType: record.accountType,
|
||||
regionCode: record.regionCode,
|
||||
sourceAdoptionId: record.sourceAdoptionId.toString(),
|
||||
sourceAccountSequence: record.sourceAccountSequence,
|
||||
// 认种订单详情
|
||||
adoptionTreeCount: adoption?.treeCount || 0,
|
||||
adoptionDate: adoption?.adoptionDate || null,
|
||||
adoptionStatus: adoption?.status || null,
|
||||
contributionPerTree: adoption?.contributionPerTree?.toString() || '0',
|
||||
// 用户信息
|
||||
sourceUserPhone: user?.phone ? this.maskPhone(user.phone) : null,
|
||||
sourceUserName: user?.realName || user?.nickname || null,
|
||||
// 分配信息
|
||||
distributionRate: record.distributionRate.toString(),
|
||||
amount: record.amount.toString(),
|
||||
effectiveDate: record.effectiveDate,
|
||||
expireDate: record.expireDate,
|
||||
isExpired: record.isExpired,
|
||||
createdAt: record.createdAt,
|
||||
syncedAt: record.syncedAt,
|
||||
};
|
||||
}),
|
||||
total,
|
||||
page,
|
||||
pageSize,
|
||||
|
|
@ -424,6 +469,14 @@ export class SystemAccountsService {
|
|||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 手机号脱敏
|
||||
*/
|
||||
private maskPhone(phone: string): string {
|
||||
if (!phone || phone.length < 7) return phone;
|
||||
return phone.substring(0, 3) + '****' + phone.substring(phone.length - 4);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取系统账户算力明细统计
|
||||
* 用于显示算力来源的汇总信息
|
||||
|
|
|
|||
Loading…
Reference in New Issue