You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

382 lines
9.5 KiB

1 month ago
import apiService from './apiClient';
// 地址类型
export interface Address {
1 month ago
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;
1 month ago
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;
1 month ago
shipping_fee_sea: number;
shipping_fee_air: number;
shipping_fee_sea_time:number
shipping_fee_air_time:number
1 month ago
}
1 month ago
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
}
1 month ago
export interface OrderPreviewData {
"items":
{
"cart_item_id": number
}[],
}
1 month ago
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<string, any>[];
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;
}
1 month ago
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: string;
1 month ago
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;
}
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;
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;
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: string;
order_no: string;
items: OrderItemDetails[];
create_time: string; // or Date
transport_type: number;
payment_method: string;
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": {}
}
}
1 month ago
export const ordersApi = {
4 weeks ago
// 获得订单预览信息
4 weeks ago
getOrders: (data:OrderPreviewData) => apiService.post<OrderData>("/api/orders/preview/",data),
1 month ago
4 weeks ago
// 获取货代地址
1 month ago
freightForwarderAddress: (transport_mode:number | null) =>
apiService.get<AddressDataItem>(`/api/freight_forwarder_address/?transport_mode=${transport_mode}`),
4 weeks ago
// 获得物流价格
1 month ago
calcShippingFee: (data:ShippingFeeData) =>
4 weeks ago
apiService.post<CartShippingFeeData>(`/api/orders/calc_shipping_fee/`,data),
1 month ago
// 获得国内价格
calcDomesticShippingFee: (data:ShippingFeeData) =>
4 weeks ago
apiService.post<DomesticShippingFeeData>(`/api/orders/calc_domestic_shipping/`,data),
1 month ago
// 创建订单
createOrder: (data: CreateOrderRequest) =>
4 weeks ago
apiService.post<Order>('/api/orders/cart/', data),
1 month ago
// 获取所有订单
getAllOrders: (data:PaginatedOrderRequest) =>
4 weeks ago
apiService.get<PaginatedOrderResponse>(`/api/orders/`,data),
1 month ago
// 获取订单指定信息
getOrderDetails: (order_id:string) =>
4 weeks ago
apiService.get<OrderDetailsType>(`/api/orders/${order_id}/`),
// 删除订单
deleteOrder: (order_id:string) =>
4 weeks ago
apiService.delete<void>(`/api/orders/${order_id}/`),
// 修改订单
changeOrder: (order_id:string,status:number) =>
4 weeks ago
apiService.patch<void>(`/api/orders/${order_id}/status/?status=${status}`),
// 修改物流信息
updateOrderShippingInfo: (order_id:string,data:UpdateOrderShippingInfo) =>
4 weeks ago
apiService.patch<void>(`/api/orders/${order_id}/shipping/`,data),
1 month ago
};