""" 电商订单相关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