feat(M08-B): 补结算转账状态筛选

This commit is contained in:
Codex
2026-07-05 14:55:22 +08:00
parent 983966561f
commit 08c152aecc
12 changed files with 94 additions and 18 deletions
@@ -8,6 +8,7 @@ export const cleaningTaskStatuses = [
] as const;
export type CleaningTaskStatus = typeof cleaningTaskStatuses[number];
export type CleaningSettlementStatus = 'DRAFT' | 'CONFIRMED' | 'PAID' | 'CANCELLED';
export type CleaningSettlementPayoutState = 'NONE' | 'SUCCESS' | 'FAIL' | 'PROCESSING' | 'WAIT_USER_CONFIRM';
export class CleaningTaskError extends Error {
constructor(public readonly code: string) { super(code); }
@@ -435,7 +436,8 @@ export class CleaningTaskRepository {
}
async listSettlements(input: CleaningActor & {
page: number; pageSize: number; status?: CleaningSettlementStatus; storeId?: string; cleanerUserId?: string;
page: number; pageSize: number; status?: CleaningSettlementStatus;
payoutState?: CleaningSettlementPayoutState; storeId?: string; cleanerUserId?: string;
}) {
this.assertSettlement(input.access, 'read');
const where = [
@@ -448,6 +450,14 @@ export class CleaningTaskRepository {
where.push('s.status = ?');
params.push(input.status);
}
if (input.payoutState) {
if (input.payoutState === 'NONE') {
where.push("s.payout_state = ''");
} else {
where.push('s.payout_state = ?');
params.push(input.payoutState);
}
}
if (input.storeId) {
where.push('s.store_id = ?');
params.push(input.storeId);
+4
View File
@@ -52,10 +52,14 @@ const memberRemoveSchema = z.object({
const completeSchema = z.object({ note: z.string().trim().max(512).optional() }).strict();
const rejectSchema = z.object({ reason: z.string().trim().min(1).max(512) }).strict();
const settlementStatusSchema = z.enum(['DRAFT', 'CONFIRMED', 'PAID', 'CANCELLED']);
const settlementPayoutStateSchema = z.enum([
'NONE', 'SUCCESS', 'FAIL', 'PROCESSING', 'WAIT_USER_CONFIRM'
]);
const settlementListSchema = z.object({
page: z.coerce.number().int().min(1).default(1),
pageSize: z.coerce.number().int().min(1).max(50).default(20),
status: settlementStatusSchema.optional(),
payoutState: settlementPayoutStateSchema.optional(),
storeId: z.string().regex(/^[1-9]\d{0,19}$/).optional(),
cleanerUserId: z.string().regex(/^[1-9]\d{0,19}$/).optional()
}).strict();