/** * 钱包交易明细假数据 * 对应接口:GET /admin/finance/wallet/page * * type: 1=报名入账, 2=提现出账, 3=退款出账 * status(由 freezeAmount/freezeTime 推导): 1=已解冻, 2=冻结中, 3=正常 */ import type { WalletTransactionVO, WalletTransactionQueryParams, PageData } from '@/api/wallet'; const MOCK_TRANSACTIONS: (WalletTransactionVO & { status: number })[] = [ { type: 1, amount: '+100.00', afterAmount: '600.00', withdrawAmount: '500.00', freezeAmount: '100.00', status: 1, freezeTime: '2026-06-10 08:00', unfreezeTime: '2026-06-12 08:00', orderNo: 'SN20260610001', createDate: '2026-06-10 08:00', }, { type: 2, amount: '-500.00', afterAmount: '1100.00', withdrawAmount: '500.00', freezeAmount: '600.00', status: 2, freezeTime: '2026-06-10 06:00', unfreezeTime: '', orderNo: 'SN20260610002', createDate: '2026-06-10 06:00', }, { type: 3, amount: '-100.00', afterAmount: '500.00', withdrawAmount: '500.00', freezeAmount: '0.00', status: 3, freezeTime: '', unfreezeTime: '', orderNo: 'SN20260610003', createDate: '2026-06-10 05:00', }, { type: 1, amount: '+350.00', afterAmount: '850.00', withdrawAmount: '750.00', freezeAmount: '100.00', status: 3, freezeTime: '', unfreezeTime: '', orderNo: 'SN20260609001', createDate: '2026-06-09 17:30', }, { type: 2, amount: '-250.00', afterAmount: '600.00', withdrawAmount: '500.00', freezeAmount: '100.00', status: 1, freezeTime: '2026-06-08 10:00', unfreezeTime: '2026-06-09 08:00', orderNo: 'SN20260608001', createDate: '2026-06-08 10:00', }, { type: 1, amount: '+800.00', afterAmount: '2000.00', withdrawAmount: '1800.00', freezeAmount: '200.00', status: 3, freezeTime: '', unfreezeTime: '', orderNo: 'SN20260607001', createDate: '2026-06-07 14:00', }, { type: 2, amount: '-300.00', afterAmount: '1200.00', withdrawAmount: '1000.00', freezeAmount: '200.00', status: 2, freezeTime: '2026-06-06 09:00', unfreezeTime: '', orderNo: 'SN20260606001', createDate: '2026-06-06 09:00', }, { type: 3, amount: '-50.00', afterAmount: '1500.00', withdrawAmount: '1300.00', freezeAmount: '200.00', status: 1, freezeTime: '2026-06-05 10:00', unfreezeTime: '2026-06-07 10:00', orderNo: 'SN20260605001', createDate: '2026-06-05 10:00', }, { type: 1, amount: '+200.00', afterAmount: '1550.00', withdrawAmount: '1350.00', freezeAmount: '200.00', status: 3, freezeTime: '', unfreezeTime: '', orderNo: 'SN20260604001', createDate: '2026-06-04 08:30', }, { type: 2, amount: '-600.00', afterAmount: '950.00', withdrawAmount: '750.00', freezeAmount: '200.00', status: 1, freezeTime: '2026-06-03 16:00', unfreezeTime: '2026-06-05 16:00', orderNo: 'SN20260603001', createDate: '2026-06-03 16:00', }, { type: 1, amount: '+450.00', afterAmount: '1050.00', withdrawAmount: '850.00', freezeAmount: '200.00', status: 1, freezeTime: '2026-06-02 11:00', unfreezeTime: '2026-06-04 11:00', orderNo: 'SN20260602001', createDate: '2026-06-02 11:00', }, { type: 3, amount: '-120.00', afterAmount: '600.00', withdrawAmount: '400.00', freezeAmount: '200.00', status: 3, freezeTime: '', unfreezeTime: '', orderNo: 'SN20260601001', createDate: '2026-06-01 15:00', }, ]; function inDateRange(date: string, begin?: string, end?: string): boolean { if (!begin && !end) return true; const d = date.slice(0, 10); if (begin && d < begin) return false; if (end && d > end) return false; return true; } export function buildMockWalletTransactionPage( page: number, limit: number, params: WalletTransactionQueryParams, ): PageData { let filtered = [...MOCK_TRANSACTIONS]; if (params.type) { filtered = filtered.filter((item) => item.type === Number(params.type)); } if (params.status) { filtered = filtered.filter((item) => item.status === Number(params.status)); } filtered = filtered.filter((item) => inDateRange(item.createDate, params.createDateBegin, params.createDateEnd), ); const total = filtered.length; const start = (page - 1) * limit; const list = filtered.slice(start, start + limit).map(({ status, ...rest }) => rest); return { total, list }; }