feat(pickup): support platform managed offline settlement

This commit is contained in:
yml2213
2026-08-09 20:20:39 +08:00
parent 14bc91b007
commit 8fb7d3bac0
12 changed files with 499 additions and 128 deletions
@@ -2,6 +2,8 @@ import { apiClient } from '@/shared/api/client'
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 AvailableListingSourceType = '' | 'external' | 'internal'
export interface AdminPickup {
@@ -20,6 +22,7 @@ export interface AdminPickup {
shop_name: string
account_source: PickupAccountSource
source_channel: string
settlement_mode: PickupSettlementMode
listing_price_cent: number
owner_price_cent: number
website_profit_cent: number
@@ -29,6 +32,10 @@ export interface AdminPickup {
account_snapshot?: Record<string, unknown>
settle_amount_cent: number
status: string
offline_settlement_status: PickupOfflineSettlementStatus
offline_settlement_remark: string
offline_settled_by?: number
offline_settled_at?: string
remark: string
complete_remark: string
created_at: string
@@ -79,6 +86,10 @@ export interface AdminPickupProfitUpdateRequest {
reason?: string
}
export interface AdminPickupOfflineSettlementRequest {
remark?: string
}
export interface AdminPickupListQuery {
page?: number
page_size?: number
@@ -150,6 +161,17 @@ export async function completeAdminPickup(id: number, req: AdminPickupCompleteRe
return data.data
}
export async function confirmAdminPickupOfflineSettlement(
id: number,
req: AdminPickupOfflineSettlementRequest = {}
) {
const { data } = await apiClient.post<ApiResponse<AdminPickup>>(
`/admin/pickups/${id}/offline-settlement`,
req
)
return data.data
}
export async function updateAdminPickupProfit(id: number, req: AdminPickupProfitUpdateRequest) {
const { data } = await apiClient.put<ApiResponse<AdminPickup>>(`/admin/pickups/${id}/profit`, req)
return data.data