48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import { apiClient } from '@/shared/api/client'
|
|
|
|
import type { ApiResponse, PaginatedResult } from '@/shared/types/types'
|
|
import type { BalanceType, LedgerDirection } from '@/shared/types/status'
|
|
|
|
export interface AdminWalletLedger {
|
|
id: number
|
|
ledger_no: string
|
|
user_id: number
|
|
user_phone: string
|
|
user_nickname: string
|
|
order_id?: number
|
|
order_no: string
|
|
direction: LedgerDirection
|
|
amount_cent: number
|
|
balance_after_cent: number
|
|
balance_type: BalanceType
|
|
biz_type: string
|
|
biz_no: string
|
|
remark: string
|
|
created_at: string
|
|
}
|
|
|
|
export interface AdminWalletLedgerQuery {
|
|
user_id?: string
|
|
order_id?: string
|
|
biz_type?: string
|
|
page?: number
|
|
page_size?: number
|
|
}
|
|
|
|
export async function fetchAdminWalletLedger(query: AdminWalletLedgerQuery = {}) {
|
|
const params = Object.fromEntries(
|
|
Object.entries(query).filter(([, value]) => value !== '' && value !== undefined)
|
|
)
|
|
const { data } = await apiClient.get<ApiResponse<PaginatedResult<AdminWalletLedger>>>(
|
|
'/admin/wallet/ledger',
|
|
{ params }
|
|
)
|
|
const result = data.data
|
|
return {
|
|
items: Array.isArray(result?.items) ? result.items : [],
|
|
total: Number(result?.total ?? 0),
|
|
page: Number(result?.page ?? query.page ?? 1),
|
|
page_size: Number(result?.page_size ?? query.page_size ?? 20),
|
|
}
|
|
}
|