import { apiRequest } from '@/api/http' export interface PageResult { records: T[] total: number page: number size: number pages: number } export interface FinanceAccount { currencyCode: 'CNY' actualBalance: string frozenBalance: string availableBalance: string version: number updatedAt: string } export type AccountChangeType = 'RECHARGE' | 'DEDUCTION' | 'FREEZE' | 'UNFREEZE' | 'CONSUMPTION' export interface AccountLedgerEntry { ledgerId: string businessNo: string changeType: AccountChangeType amount: string actualBalanceAfter: string frozenBalanceAfter: string availableBalanceAfter: string sourceType: 'CLIENT_RECHARGE' | 'MANUAL_RECHARGE' | 'MANUAL_DEDUCTION' sourceNo: string operatorName: string | null remark: string | null createdAt: string } export type RechargePaymentMethod = 'WECHAT' | 'ALIPAY' export type RechargeStatus = 'PENDING' | 'APPROVED' | 'REJECTED' export interface RechargeRequest { requestId: string requestNo: string amount: string paymentMethod: RechargePaymentMethod voucherFileId: string voucherFileName: string status: RechargeStatus version: number submittedByName: string | null reviewedByName: string | null reviewRemark: string | null createdAt: string reviewedAt: string | null } export interface RechargeChannel { paymentMethod: RechargePaymentMethod displayName: string enabled: boolean qrCodeUrl: string | null } export function getFinanceAccount() { return apiRequest({ method: 'GET', url: '/client/finance/v1/account' }) } export function getAccountLedger(page: number, size: number) { return apiRequest>({ method: 'GET', url: '/client/finance/v1/account/ledger', params: { page, size }, }) } export function getRechargeRequests(page: number, size: number) { return apiRequest>({ method: 'GET', url: '/client/finance/v1/recharge-requests', params: { page, size }, }) } export function getRechargeChannels() { return apiRequest({ method: 'GET', url: '/client/finance/v1/recharge-channels' }) } export function createRechargeRequest(amount: string, paymentMethod: RechargePaymentMethod, file: File, idempotencyKey: string) { const formData = new FormData() formData.append('amount', amount) formData.append('paymentMethod', paymentMethod) formData.append('file', file, file.name) return apiRequest({ method: 'POST', url: '/client/finance/v1/recharge-requests', headers: { 'Idempotency-Key': idempotencyKey }, data: formData, }) }