fix: normalize finance page metadata
This commit is contained in:
@@ -8,6 +8,23 @@ export interface PageResult<T> {
|
|||||||
pages: number
|
pages: number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface PageResultWire<T> extends Omit<PageResult<T>, 'total' | 'page' | 'size' | 'pages'> {
|
||||||
|
total: number | string
|
||||||
|
page: number | string
|
||||||
|
size: number | string
|
||||||
|
pages: number | string
|
||||||
|
}
|
||||||
|
|
||||||
|
function normalizePageResult<T>(result: PageResultWire<T>): PageResult<T> {
|
||||||
|
return {
|
||||||
|
...result,
|
||||||
|
total: Number(result.total),
|
||||||
|
page: Number(result.page),
|
||||||
|
size: Number(result.size),
|
||||||
|
pages: Number(result.pages),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export interface FinanceAccount {
|
export interface FinanceAccount {
|
||||||
currencyCode: 'CNY'
|
currencyCode: 'CNY'
|
||||||
actualBalance: string
|
actualBalance: string
|
||||||
@@ -71,20 +88,22 @@ export function getFinanceAccount() {
|
|||||||
return apiRequest<FinanceAccount>({ method: 'GET', url: '/client/finance/v1/account' })
|
return apiRequest<FinanceAccount>({ method: 'GET', url: '/client/finance/v1/account' })
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getAccountLedger(page: number, size: number) {
|
export async function getAccountLedger(page: number, size: number) {
|
||||||
return apiRequest<PageResult<AccountLedgerEntry>>({
|
const result = await apiRequest<PageResultWire<AccountLedgerEntry>>({
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
url: '/client/finance/v1/account/ledger',
|
url: '/client/finance/v1/account/ledger',
|
||||||
params: { page, size },
|
params: { page, size },
|
||||||
})
|
})
|
||||||
|
return normalizePageResult(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getRechargeRequests(page: number, size: number) {
|
export async function getRechargeRequests(page: number, size: number) {
|
||||||
return apiRequest<PageResult<RechargeRequest>>({
|
const result = await apiRequest<PageResultWire<RechargeRequest>>({
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
url: '/client/finance/v1/recharge-requests',
|
url: '/client/finance/v1/recharge-requests',
|
||||||
params: { page, size },
|
params: { page, size },
|
||||||
})
|
})
|
||||||
|
return normalizePageResult(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getRechargeChannels() {
|
export function getRechargeChannels() {
|
||||||
|
|||||||
@@ -42,6 +42,8 @@ test('renders server balances, ledger and recharge states without internal ident
|
|||||||
assert.match(viewSource, /:default-current-page="ledgerPage"/)
|
assert.match(viewSource, /:default-current-page="ledgerPage"/)
|
||||||
assert.match(viewSource, /:default-current-page="rechargePage"/)
|
assert.match(viewSource, /:default-current-page="rechargePage"/)
|
||||||
assert.doesNotMatch(viewSource, /<el-pagination (?:v-model:current-page|:current-page)=/)
|
assert.doesNotMatch(viewSource, /<el-pagination (?:v-model:current-page|:current-page)=/)
|
||||||
|
assert.match(apiSource, /function normalizePageResult<[\s\S]*total: Number\(result\.total\)/)
|
||||||
|
assert.match(apiSource, /page: Number\(result\.page\)/)
|
||||||
assert.doesNotMatch(viewSource, /requestId|ledgerId|customerId|tenantId/)
|
assert.doesNotMatch(viewSource, /requestId|ledgerId|customerId|tenantId/)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user