支持提号完成后财务调整

This commit is contained in:
yml2213
2026-08-16 19:52:12 +08:00
parent 786d20e9cd
commit 80e55ba281
15 changed files with 1272 additions and 111 deletions
@@ -4,6 +4,7 @@ import type { ApiResponse, PaginatedResult } from '@/shared/types/types'
export type PickupAccountSource = 'internal' | 'external_platform_managed'
export type PickupSettlementMode = 'owner_wallet' | 'platform_managed'
export type PickupOfflineSettlementStatus = 'none' | 'pending' | 'settled'
export type PickupFinancialAdjustmentStatus = 'settled' | 'pending' | 'recovery_pending'
export type AvailableListingSourceType = '' | 'external' | 'internal'
export interface AdminPickup {
@@ -27,10 +28,14 @@ export interface AdminPickup {
owner_price_cent: number
website_profit_cent: number
profit_amount_cent: number
profit_adjustment_cent: number
effective_profit_amount_cent: number
seller_ratio: number
buyer_ratio: number
account_snapshot?: Record<string, unknown>
settle_amount_cent: number
settle_adjustment_cent: number
effective_settle_amount_cent: number
status: string
offline_settlement_status: PickupOfflineSettlementStatus
offline_settlement_remark: string
@@ -43,6 +48,21 @@ export interface AdminPickup {
cancelled_at?: string
}
export interface AdminPickupFinancialAdjustment {
id: number
pickup_id: number
profit_delta_cent: number
settle_delta_cent: number
settlement_mode: PickupSettlementMode
status: PickupFinancialAdjustmentStatus
reason: string
created_by: number
settled_by?: number
settled_at?: string
settlement_remark: string
created_at: string
}
export interface AvailableListing {
id: number
listing_no: string
@@ -90,6 +110,16 @@ export interface AdminPickupOfflineSettlementRequest {
remark?: string
}
export interface AdminPickupFinancialAdjustmentRequest {
profit_amount_cent?: number
settle_amount_cent?: number
reason: string
}
export interface AdminPickupFinancialAdjustmentSettlementRequest {
remark?: string
}
export interface AdminPickupListQuery {
page?: number
page_size?: number
@@ -177,6 +207,35 @@ export async function updateAdminPickupProfit(id: number, req: AdminPickupProfit
return data.data
}
export async function createAdminPickupFinancialAdjustment(
id: number,
req: AdminPickupFinancialAdjustmentRequest
) {
const { data } = await apiClient.post<ApiResponse<AdminPickup>>(
`/admin/pickups/${id}/financial-adjustments`,
req
)
return data.data
}
export async function fetchAdminPickupFinancialAdjustments(id: string | number) {
const { data } = await apiClient.get<ApiResponse<AdminPickupFinancialAdjustment[]>>(
`/admin/pickups/${id}/financial-adjustments`
)
return Array.isArray(data.data) ? data.data : []
}
export async function settleAdminPickupFinancialAdjustment(
id: number,
req: AdminPickupFinancialAdjustmentSettlementRequest = {}
) {
const { data } = await apiClient.post<ApiResponse<{ settled: boolean }>>(
`/admin/pickup-financial-adjustments/${id}/settle`,
req
)
return data.data
}
export async function cancelAdminPickup(id: number, reason: string) {
const { data } = await apiClient.post<ApiResponse<{ cancelled: boolean }>>(
`/admin/pickups/${id}/cancel`,