Files
cpms_operation_platform/src/config/mock/walletTransactions.ts
T

188 lines
4.5 KiB
TypeScript

/**
* 钱包交易明细假数据
* 对应接口: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<WalletTransactionVO> {
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 };
}