79 lines
2.8 KiB
Python
79 lines
2.8 KiB
Python
"""
|
|
电商订单相关Pydantic模型
|
|
"""
|
|
from datetime import datetime, date
|
|
from typing import Optional, List
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class OrderBase(BaseModel):
|
|
"""电商订单基础模型"""
|
|
platform_order_no: str = Field(..., description="平台订单号")
|
|
ecommerce_platform: str = Field(..., description="电商平台")
|
|
streamer_id: str = Field(..., description="主播ID")
|
|
streamer_name: str = Field(..., description="主播姓名")
|
|
product_id: str = Field(..., description="商品ID")
|
|
product_name: str = Field(..., description="商品名称")
|
|
quantity: int = Field(..., description="购买数量")
|
|
original_price: float = Field(..., description="原价")
|
|
sale_price: float = Field(..., description="售价")
|
|
total_amount: float = Field(..., description="总金额")
|
|
actual_payment: float = Field(..., description="实付金额")
|
|
commission_ratio: float = Field(..., description="佣金比例")
|
|
commission_amount: float = Field(..., description="佣金金额")
|
|
streamer_commission: float = Field(..., description="主播佣金")
|
|
buyer_id: str = Field(..., description="买家ID")
|
|
order_time: datetime = Field(..., description="下单时间")
|
|
settlement_time: Optional[datetime] = Field(None, description="结算时间")
|
|
order_status: str = Field(..., description="订单状态")
|
|
is_commission_settled: bool = Field(..., description="是否已结算佣金")
|
|
province: Optional[str] = Field(None, description="省份")
|
|
city: Optional[str] = Field(None, description="城市")
|
|
|
|
|
|
class OrderCreate(OrderBase):
|
|
"""创建电商订单"""
|
|
pass
|
|
|
|
|
|
class OrderUpdate(BaseModel):
|
|
"""更新电商订单"""
|
|
platform_order_no: Optional[str] = None
|
|
ecommerce_platform: Optional[str] = None
|
|
streamer_id: Optional[str] = None
|
|
streamer_name: Optional[str] = None
|
|
product_id: Optional[str] = None
|
|
product_name: Optional[str] = None
|
|
quantity: Optional[int] = None
|
|
original_price: Optional[float] = None
|
|
sale_price: Optional[float] = None
|
|
total_amount: Optional[float] = None
|
|
actual_payment: Optional[float] = None
|
|
commission_ratio: Optional[float] = None
|
|
commission_amount: Optional[float] = None
|
|
streamer_commission: Optional[float] = None
|
|
buyer_id: Optional[str] = None
|
|
order_time: Optional[datetime] = None
|
|
settlement_time: Optional[datetime] = None
|
|
order_status: Optional[str] = None
|
|
is_commission_settled: Optional[bool] = None
|
|
province: Optional[str] = None
|
|
city: Optional[str] = None
|
|
|
|
|
|
class OrderResponse(OrderBase):
|
|
"""电商订单响应模型"""
|
|
id: int
|
|
order_id: str
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class OrderListResponse(BaseModel):
|
|
"""电商订单列表响应模型"""
|
|
records: List[OrderResponse]
|
|
total: int
|
|
page: int
|
|
size: int
|