feat(M08-B): 补保洁员绩效排行

This commit is contained in:
Codex
2026-07-07 14:41:35 +08:00
parent ee39e98418
commit 38410b1185
10 changed files with 183 additions and 14 deletions
@@ -146,6 +146,8 @@ interface ManagerMemberStatsRow extends RowDataPacket {
cleanerUserId: string;
cleanerName: string;
taskCount: number;
completedTaskCount: number;
rejectedTaskCount: number;
pendingSettlementCents: number | null;
settledRewardCents: number | null;
}
@@ -920,6 +922,8 @@ export class CleaningTaskRepository {
const [memberRows] = await this.pool.execute<ManagerMemberStatsRow[]>(
`SELECT m.user_id AS cleanerUserId, u.nickname AS cleanerName,
COUNT(DISTINCT m.task_id) AS taskCount,
SUM(CASE WHEN t.status IN ('COMPLETED', 'SETTLED') THEN 1 ELSE 0 END) AS completedTaskCount,
SUM(CASE WHEN t.status = 'REJECTED' THEN 1 ELSE 0 END) AS rejectedTaskCount,
COALESCE(SUM(CASE
WHEN m.removed_at IS NULL AND m.settled_at IS NULL AND t.status IN ('SUBMITTED', 'COMPLETED')
THEN m.reward_cents ELSE 0 END), 0) AS pendingSettlementCents,
@@ -1450,6 +1454,8 @@ function publicManagerStatistics(
cleanerUserId: String(row.cleanerUserId),
cleanerName: row.cleanerName,
taskCount: Number(row.taskCount),
completedTaskCount: Number(row.completedTaskCount ?? 0),
rejectedTaskCount: Number(row.rejectedTaskCount ?? 0),
pendingSettlementCents: Number(row.pendingSettlementCents ?? 0),
settledRewardCents: Number(row.settledRewardCents ?? 0)
})),