This commit is contained in:
aaron 2025-03-21 14:27:03 +08:00
parent 03bc65e551
commit 40f060dfac
3 changed files with 24 additions and 1 deletions

View File

@ -5,7 +5,9 @@ from pydantic import BaseModel, Field
from typing import Optional, List
from datetime import datetime, date
from .database import Base
from sqlalchemy.orm import relationship
import enum
from app.core.utils import CommonUtils
from app.core.imageprocessor import process_image, ImageFormat
@ -23,6 +25,11 @@ class DeliveryTimeType(str, enum.Enum):
IMMEDIATE = "IMMEDIATE" # 立即送
SCHEDULED = "SCHEDULED" # 定时送
class OperationType(str, enum.Enum):
"""经营类型枚举"""
SELF_OPERATED = "SELF_OPERATED" # 自营
MERCHANT = "MERCHANT" # 商家
class MerchantProductDB(Base):
__tablename__ = "merchant_products"
@ -39,10 +46,12 @@ class MerchantProductDB(Base):
promotion_text = Column(String(100)) # 促销文本
product_detail = Column(Text, nullable=True) # 产品详细描述Markdown格式
purchase_note = Column(Text, nullable=True) # 购买须知,用于提供商品购买相关注意事项
operation_type = Column(Enum(OperationType), nullable=False, default=OperationType.MERCHANT) # 经营类型:自营或商家
qty = Column(Integer, nullable=False, default=0) # 库存
is_sellout = Column(Boolean, nullable=False, default=False) # 是否售罄
delivery_type = Column(Enum(DeliveryType), nullable=False, default=DeliveryType.DELIVERY) # 配送类型
pickup_place = Column(String(200), nullable=True) # 自提点
pickup_time = Column(DateTime(timezone=True), nullable=True) # 自提时间
delivery_time_type = Column(Enum(DeliveryTimeType), nullable=False, default=DeliveryTimeType.IMMEDIATE) # 配送时间类型
delivery_date = Column(Date, nullable=True) # 配送日期,仅对定时送有效
create_time = Column(DateTime(timezone=True), server_default=func.now())
@ -65,10 +74,12 @@ class MerchantProductCreate(BaseModel):
purchase_limit: int = Field(0, ge=0) # 限购次数默认0表示不限购
product_detail: Optional[str] = None # 产品详细描述Markdown格式
purchase_note: Optional[str] = None # 购买须知,用于提供商品购买相关注意事项
operation_type: OperationType = Field(OperationType.MERCHANT) # 经营类型:自营或商家
qty: int = Field(0, ge=0) # 库存
is_sellout: bool = Field(False) # 是否售罄
delivery_type: DeliveryType = Field(DeliveryType.DELIVERY) # 配送类型
pickup_place: Optional[str] = Field(None, max_length=200) # 自提点
pickup_time: Optional[datetime] = Field(None) # 自提时间
delivery_time_type: DeliveryTimeType = Field(DeliveryTimeType.IMMEDIATE) # 配送时间类型
delivery_date: Optional[date] = Field(None) # 配送日期
status: ProductStatus = ProductStatus.UNLISTING
@ -85,10 +96,12 @@ class MerchantProductUpdate(BaseModel):
purchase_limit: Optional[int] = Field(None, ge=0) # 限购次数,可选字段
product_detail: Optional[str] = None # 产品详细描述Markdown格式
purchase_note: Optional[str] = None # 购买须知,用于提供商品购买相关注意事项
operation_type: Optional[OperationType] = None # 经营类型:自营或商家
qty: Optional[int] = Field(None, ge=0) # 库存
is_sellout: Optional[bool] = None # 是否售罄
delivery_type: Optional[DeliveryType] = None # 配送类型
pickup_place: Optional[str] = Field(None, max_length=200) # 自提点
pickup_time: Optional[datetime] = None # 自提时间
delivery_time_type: Optional[DeliveryTimeType] = None # 配送时间类型
delivery_date: Optional[date] = None # 配送日期
status: Optional[ProductStatus] = None
@ -109,10 +122,12 @@ class MerchantProductInfo(BaseModel):
purchase_limit: int # 限购次数
product_detail: Optional[str] = None # 产品详细描述Markdown格式
purchase_note: Optional[str] = None # 购买须知,用于提供商品购买相关注意事项
operation_type: OperationType # 经营类型:自营或商家
qty: int # 库存
is_sellout: bool # 是否售罄
delivery_type: DeliveryType # 配送类型
pickup_place: Optional[str] = None # 自提点
pickup_time: Optional[datetime] = None # 自提时间
delivery_time_type: DeliveryTimeType # 配送时间类型
delivery_date: Optional[date] = None # 配送日期
gift_points_rate: float

View File

@ -34,4 +34,12 @@ ADD COLUMN product_detail TEXT COMMENT '产品详细描述Markdown格式';
-- 为merchant_products表添加purchase_note字段
ALTER TABLE merchant_products
ADD COLUMN purchase_note TEXT COMMENT '购买须知,用于提供商品购买相关注意事项';
ADD COLUMN purchase_note TEXT COMMENT '购买须知,用于提供商品购买相关注意事项';
-- 为merchant_products表添加pickup_time字段带时区信息
ALTER TABLE merchant_products
ADD COLUMN pickup_time DATETIME COMMENT '自提时间,用于指定商品自提的时间';
-- 为merchant_products表添加operation_type字段枚举类型
ALTER TABLE merchant_products
ADD COLUMN operation_type ENUM('SELF_OPERATED', 'MERCHANT') NOT NULL DEFAULT 'MERCHANT' COMMENT '经营类型:自营或商家';

Binary file not shown.