dingdanquanliucheng/backend/app/schemas/orders.py
2026-06-19 23:03:14 +08:00

262 lines
6.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
订单模块请求模型
定义订单管理相关的请求体数据模型,供 orders 路由使用。
包含订单查询、创建、更新、取消、审批以及供应商对账等操作的请求体。
"""
from pydantic import BaseModel, Field
class OrderListQuery(BaseModel):
"""订单列表查询参数模型。被 GET /api/orders 路由使用。"""
order_no: str | None = None
"""订单编号,模糊匹配"""
order_status: str | None = None
"""订单状态筛选"""
customer_name: str | None = None
"""客户名称,模糊匹配"""
customer_mobile: str | None = None
"""客户手机号,模糊匹配"""
salesman_id: int | None = None
"""业务员 ID 筛选"""
factory_id: int | None = None
"""工厂 ID 筛选"""
order_source: str | None = None
"""订单来源筛选"""
start_time: str | None = None
"""查询起始时间ISO 格式)"""
end_time: str | None = None
"""查询截止时间ISO 格式)"""
page_no: int = 1
"""页码,从 1 开始"""
page_size: int = 20
"""每页条数"""
class OrderItemPayload(BaseModel):
"""订单商品明细载荷,用于创建/更新订单时携带商品行项。"""
product_id: int | None = None
"""产品 ID可选新建时可能尚未关联"""
product_name: str
"""产品名称"""
specification: str
"""规格"""
unit: str
"""单位"""
quantity: float = Field(gt=0)
"""数量,必须大于 0"""
sale_price: float = Field(ge=0)
"""销售单价"""
cost_price: float = Field(ge=0)
"""成本单价"""
rebate_amount: float = Field(default=0, ge=0)
"""返利金额"""
freight_amount: float = Field(default=0, ge=0)
"""运费"""
tax_amount: float = Field(default=0, ge=0)
"""税额"""
other_fee_amount: float = Field(default=0, ge=0)
"""其他费用"""
remark: str | None = None
"""备注"""
# 报价引擎快照字段
pricing_type: str | None = None
"""报价类型(创建订单时从报价引擎快照而来)"""
length_m: float | None = None
"""长度(米),报价快照"""
width_m: float | None = None
"""宽度(米),报价快照"""
area_sqm: float | None = None
"""面积(平方米),报价快照"""
surcharge_detail: str | None = None
"""附加费明细JSON 字符串"""
processing_detail: str | None = None
"""加工费明细JSON 字符串"""
supplier_id: int | None = None
"""供应商 ID报价快照"""
supplier_model: str | None = None
"""供应商型号,报价快照"""
price_tier: str | None = None
"""价格档位,报价快照"""
class CreateOrderRequest(BaseModel):
"""创建订单请求体。被 POST /api/orders 路由使用。"""
customer_name: str
"""客户名称"""
customer_mobile: str
"""客户联系电话"""
customer_address: str | None = None
"""配送地址"""
order_source: str | None = None
"""订单来源"""
delivery_type: str | None = None
"""配送方式"""
factory_id: int | None = None
"""生产工厂 ID"""
commission_amount: float = Field(default=0, ge=0)
"""佣金金额"""
rebate_total: float = Field(default=0, ge=0)
"""返利合计"""
freight_total: float = Field(default=0, ge=0)
"""运费合计"""
tax_total: float = Field(default=0, ge=0)
"""税额合计"""
other_fee_total: float = Field(default=0, ge=0)
"""其他费用合计"""
payment_method: str | None = None
"""收款渠道"""
tax_amount: float = Field(default=0, ge=0)
"""含税金额"""
remark: str | None = None
"""备注"""
items: list[OrderItemPayload] = Field(default_factory=list)
"""订单商品明细列表"""
class UpdateOrderRequest(BaseModel):
"""更新订单请求体。被 PUT /api/orders/{id} 路由使用。"""
customer_name: str
"""客户名称"""
customer_mobile: str
"""客户联系电话"""
customer_address: str | None = None
"""配送地址"""
order_source: str | None = None
"""订单来源"""
delivery_type: str | None = None
"""配送方式"""
factory_id: int | None = None
"""生产工厂 ID"""
commission_amount: float = Field(default=0, ge=0)
"""佣金金额"""
rebate_total: float = Field(default=0, ge=0)
"""返利合计"""
freight_total: float = Field(default=0, ge=0)
"""运费合计"""
tax_total: float = Field(default=0, ge=0)
"""税额合计"""
other_fee_total: float = Field(default=0, ge=0)
"""其他费用合计"""
payment_method: str | None = None
"""收款渠道"""
tax_amount: float = Field(default=0, ge=0)
"""含税金额"""
remark: str | None = None
"""备注"""
items: list[OrderItemPayload] = Field(default_factory=list)
"""订单商品明细列表(全量替换)"""
class CancelOrderRequest(BaseModel):
"""取消订单请求体。被 POST /api/orders/{id}/cancel 路由使用。"""
cancel_reason: str
"""取消原因"""
cancel_opinion: str | None = None
"""取消审批意见"""
class ApproveOrderRequest(BaseModel):
"""审批订单请求体。被 POST /api/orders/{id}/approve 路由使用。"""
approve_result: str
"""审批结果(如 approved / rejected"""
approve_opinion: str | None = None
"""审批意见"""
class SupplierTextRequest(BaseModel):
"""获取供应商对账文本请求体。被 POST /api/orders/supplier-text 路由使用。"""
supplier_id: int
"""供应商 ID"""
class ConfirmSupplierTextRequest(BaseModel):
"""确认供应商对账文本请求体。被 POST /api/orders/supplier-text/confirm 路由使用。"""
supplier_id: int
"""供应商 ID"""
text_content: str
"""对账文本内容"""
remark: str | None = None
"""备注"""
class ChangeOrderStatusRequest(BaseModel):
"""变更订单状态请求体。被 POST /api/orders/{id}/status 路由使用。"""
target_status: str
"""目标状态"""
remark: str | None = None
"""备注"""