This commit is contained in:
2026-08-04 13:32:08 +08:00
parent 6354f5ca66
commit 2192aed125
17 changed files with 711 additions and 354 deletions
@@ -50,6 +50,21 @@ describe('platform first-leg order API', () => {
})
})
it('normalizes string pagination fields returned by the gateway', async () => {
vi.mocked(http.get).mockResolvedValue({
code: '200',
message: 'success',
data: { records: [], page: '1', size: '20', total: '6', pages: '1' },
})
await expect(listPlatformFirstLegOrders({ status: 'SUBMITTED', page: 1, size: 20 })).resolves.toMatchObject({
page: 1,
size: 20,
total: 6,
pages: 1,
})
})
it('uses the platform lifecycle routes and target tenant query parameter', async () => {
vi.mocked(http.get).mockResolvedValue({ code: '200', message: 'success', data: { order: {} } })
vi.mocked(http.post).mockResolvedValue({ code: '200', message: 'success', data: null })
@@ -105,6 +105,13 @@ export interface PlatformFirstLegOrderPageResource {
pages: number
}
type PlatformFirstLegOrderPagePayload = Omit<PlatformFirstLegOrderPageResource, 'page' | 'size' | 'total' | 'pages'> & {
page: number | string
size: number | string
total: number | string
pages: number | string
}
export interface PlatformFirstLegOrderQuery {
tenantId?: string
keyword?: string
@@ -127,8 +134,20 @@ async function postData<T>(path: string, body?: unknown, params?: Record<string,
return unwrapApiResponse(response)
}
export function listPlatformFirstLegOrders(query: PlatformFirstLegOrderQuery) {
return getData<PlatformFirstLegOrderPageResource>('/platform/v1/orders/first-leg', { ...query })
function paginationNumber(value: number | string, fallback: number) {
const parsed = Number(value)
return Number.isFinite(parsed) && parsed >= 0 ? Math.trunc(parsed) : fallback
}
export async function listPlatformFirstLegOrders(query: PlatformFirstLegOrderQuery) {
const result = await getData<PlatformFirstLegOrderPagePayload>('/platform/v1/orders/first-leg', { ...query })
return {
...result,
page: paginationNumber(result.page, query.page),
size: paginationNumber(result.size, query.size),
total: paginationNumber(result.total, 0),
pages: paginationNumber(result.pages, 0),
} satisfies PlatformFirstLegOrderPageResource
}
export function getPlatformFirstLegOrder(tenantId: string, orderId: string) {