188 lines
4.5 KiB
TypeScript
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 };
|
||
|
|
}
|