import apiService from "./apiClient"; // 地址类型 export interface Address { address_id: number; user_id: number; forwarder_name: string; 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 { sku_image: string | undefined; 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: string | number; cart_item_id: number; sku_id: string | 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; currency: string; actual_amount: number; discount_amount: number; shipping_fee: number; address_id: number; domestic_shipping_fee: number; receiver_name: string; receiver_phone: string; receiver_address: string; whatsapp_number: number; buyer_message: string; pay_status: number; order_status: number; shipping_status: number; receiver_country: string; 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; currency:string, 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; sku_image: string; order_id: 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 } export interface PaginatedOrderResponse { items: Orders[]; total: number; page: number; page_size: number; } export interface PaginatedOrderRequest { status?: number | null; page: number; page_size: number; } interface SkuAttributesDetails { attribute_name: string; attribute_value: string; sku_image: string; } interface OrderItemDetails { offer_id: number; cart_item_id: number | null; sku_id: number; product_name: string; product_name_en: string; product_name_ar: string; product_name_fr: string; product_image: string; sku_attributes: SkuAttributesDetails[]; quantity: number; unit_price: number; total_price: number; sku_image: string; order_item_id: string; order_id: string; create_time: string; // or Date update_time: string; // or Date } export interface OrderDetailsType { user_id: number; total_amount: number; domestic_shipping_fee: number; actual_amount: number; currency:string, 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: string; order_no: string; items: OrderItemDetails[]; create_time: string; // or Date transport_type: number; payment_method: string; shipping_type: number; pay_time: string | null; // or Date | null shipping_time: string | null; // or Date | null complete_time: string | null; // or Date | null update_time: string; // or Date } export interface UpdateOrderShippingInfo { shipping_status: number; shipping_info: { shipping_company: string; shipping_no: string; shipping_info: {}; }; } export interface UpdateOrderPaymentMethod { order_id: string; payment_method: string; currency: string; total_amount: number; actual_amount: number; shipping_fee: number; domestic_shipping_fee: 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: string) => apiService.get(`/api/orders/${order_id}/`), // 删除订单 deleteOrder: (order_id: string) => apiService.delete(`/api/orders/${order_id}/`), // 修改订单 changeOrder: (order_id: string, status: number) => apiService.patch(`/api/orders/${order_id}/status/?status=${status}`), // 修改物流信息 updateOrderShippingInfo: (order_id: string, data: UpdateOrderShippingInfo) => apiService.patch(`/api/orders/${order_id}/shipping/`, data), // 修改支付方式 updateOrderPaymentMethod: (data: UpdateOrderPaymentMethod) => apiService.put(`/api/orders/edit/`, data), };