import apiService from './apiClient'; // 地址类型 interface Address { address_id: number; user_id: number; receiver_first_name: string; receiver_last_name: string; country: string; receiver_phone: string; whatsapp_phone: string; province: string | null; city: string | null; district: string | null; detail_address: string | null; is_default: number; create_time: string; update_time: string; } // 订单商品项类型 interface OrderItem { offer_id: number; cart_item_id: number; sku_id: number; product_name: string; sku_image_url: string; product_name_en: string; product_name_fr: string; product_name_ar: string; quantity: number; unit_price: number; total_price: number; attributes:{ attribute_name:string; attribute_name_trans:string, attribute_value:string, attribute_value_trans:string, value:string, value_trans:string, value_trans_ar:string, value_trans_fr:string, }[] } // 订单汇总类型 interface OrderSummary { total_amount: number; shipping_fee: number; discount_amount: number; actual_amount: number; currency: string; } // 完整订单数据类型 export interface OrderData { address: Address; items: OrderItem[]; total_amount: number; shipping_fee: number; discount_amount: number; actual_amount: number; currency: string; shipping_fee_sea: number; shipping_fee_air: number; shipping_fee_sea_time:number shipping_fee_air_time:number } interface CurrentCountryAddress { forwarder_name: string; contact_person: string; phone_number: string; transport_mode: number; shipping_fee: string; status: number; email: string; country: number; country_code: number; province: string; city: string; district: string; detail_address: string; postal_code: string; remarks: string; address_id: number; create_time: string; // or Date if you prefer to use Date objects update_time: string; // or Date if you prefer to use Date objects } export interface AddressDataItem { current_country_address: CurrentCountryAddress; other_addresses: any[]; // or specify a more specific type if you know the structure of other addresses } export interface OrderPreviewData { "items": { "cart_item_id": number }[], } export interface ShippingFeeData { items: { cart_item_id: number }[], country_code?: number } interface CartShippingFeeItem { cart_item_id: number; estimated_shipping_fee_air: number; estimated_shipping_fee_sea: number; shipping_fee_currency: string; } export interface CartShippingFeeData { items: CartShippingFeeItem[]; currency?: string; total_shipping_fee_air: number; total_shipping_fee_sea: number; } export interface DomesticShippingFeeData { currency?: string; total_shipping_fee: number; } // 创建订单请求参数类型 export interface CreateOrderRequest { address_id: number; items: { offer_id: number; cart_item_id: number; sku_id: number; product_name: string; product_name_en: string; product_name_ar: string; product_name_fr: string; product_image: string; sku_attributes: Record[]; quantity: number; unit_price: number; total_price: number; }[]; buyer_message: string; payment_method: string; create_payment: boolean; total_amount: number; actual_amount: number; discount_amount: number; shipping_fee: number; domestic_shipping_fee: number; currency: string; receiver_address: string; } // 创建订单响应类型 export interface CreateOrderResponse { order_id: number; order_no: string; status: string; payment_url?: string; } interface SkuAttribute { [key: string]: any; } interface OrderItem { offer_id: number; cart_item_id: number; sku_id: number; product_name: string; product_name_en: string; product_name_ar: string; product_name_fr: string; product_image: string; sku_attributes: SkuAttribute[]; quantity: number; unit_price: number; total_price: number; order_item_id: number; order_id: number; create_time: string; // or Date if you prefer to parse it update_time: string; // or Date } export interface Order { user_id: number; total_amount: number; actual_amount: number; discount_amount: number; shipping_fee: number; address_id: number; receiver_name: string; receiver_phone: string; receiver_address: string; buyer_message: string; pay_status: number; order_status: number; shipping_status: number; order_id: number; payment_method: string; order_no: string; items: OrderItem[]; create_time: string; // or Date pay_time: string; // or Date shipping_time: string; // or Date complete_time: string; // or Date update_time: string; // or Date } interface SkuAttributes { [key: string]: any; } interface OrderItem { offer_id: number; cart_item_id: number; sku_id: number; product_name: string; product_name_en: string; product_name_ar: string; product_name_fr: string; product_image: string; sku_attributes: SkuAttributes[]; quantity: number; unit_price: number; total_price: number; order_item_id: number; order_id: number; create_time: string; // or Date update_time: string; // or Date } interface Orders { user_id: number; total_amount: number; actual_amount: number; discount_amount: number; shipping_fee: number; address_id: number; receiver_name: string; receiver_phone: string; receiver_address: string; buyer_message: string; pay_status: number; order_status: number; shipping_status: number; order_id: number; order_no: string; items: OrderItem[]; create_time: string; // or Date pay_time: string; // or Date shipping_time: string; // or Date complete_time: string; // or Date update_time: string; // or Date } export interface PaginatedOrderResponse { items: Orders[]; total: number; page: number; page_size: number; } export interface PaginatedOrderRequest { status?: number | null; page: number; page_size: number; } export const ordersApi = { getOrders: (data:OrderPreviewData) => apiService.post("/api/orders/preview",data), // 获得价格 freightForwarderAddress: (transport_mode:number | null) => apiService.get(`/api/freight_forwarder_address/?transport_mode=${transport_mode}`), // 获得价格 calcShippingFee: (data:ShippingFeeData) => apiService.post(`/api/orders/calc_shipping_fee`,data), // 获得国内价格 calcDomesticShippingFee: (data:ShippingFeeData) => apiService.post(`/api/orders/calc_domestic_shipping`,data), // 创建订单 createOrder: (data: CreateOrderRequest) => apiService.post('/api/orders/cart', data), // 获取所有订单 getAllOrders: (data:PaginatedOrderRequest) => apiService.get(`/api/orders`,data), // 获取订单指定信息 getOrderDetails: (order_id:number) => apiService.get(`/api/orders/${order_id}`), };