feat(M08-B): 补保洁员绩效排行
This commit is contained in:
@@ -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)
|
||||
})),
|
||||
|
||||
@@ -200,6 +200,8 @@ const app = await buildApp({
|
||||
cleanerUserId: '31',
|
||||
cleanerName: 'Cleaner',
|
||||
taskCount: 3,
|
||||
completedTaskCount: 2,
|
||||
rejectedTaskCount: 1,
|
||||
pendingSettlementCents: 1200,
|
||||
settledRewardCents: 600
|
||||
}],
|
||||
@@ -317,6 +319,8 @@ assert.equal(calls.at(-1)[0], 'managerStatistics');
|
||||
assert.equal(calls.at(-1)[1].storeId, '11');
|
||||
assert.equal(calls.at(-1)[1].cleanerUserId, '31');
|
||||
assert.equal(managerStats.json().data.summary.pendingSettlementCents, 1200);
|
||||
assert.equal(managerStats.json().data.members[0].completedTaskCount, 2);
|
||||
assert.equal(managerStats.json().data.members[0].rejectedTaskCount, 1);
|
||||
assert.equal(managerStats.json().data.trend[0].paidSettlementCents, 600);
|
||||
|
||||
const claim = await app.inject({
|
||||
|
||||
Reference in New Issue
Block a user