Files
zkxw/backend/app/schemas/product_parameter.py
T
2026-05-12 16:35:07 +08:00

72 lines
2.9 KiB
Python

"""Pydantic schemas - 商品参数模板"""
from pydantic import BaseModel, Field, ConfigDict
from typing import Optional, List
from datetime import datetime
class ProductParameterBase(BaseModel):
"""商品参数基础字段"""
model_config = ConfigDict(populate_by_name=True)
name: str = Field(..., max_length=100, description="参数名称", alias="name")
code: str = Field(..., max_length=50, description="参数编码", alias="code")
param_type: str = Field(default="text", description="参数类型:text-文本输入, select-单选下拉, multi_select-多选", alias="paramType")
options: Optional[str] = Field(None, description="可选值列表,JSON数组格式", alias="options")
placeholder: Optional[str] = Field(None, max_length=100, description="输入提示文字", alias="placeholder")
is_required: int = Field(default=0, description="是否必填:0-否, 1-是", alias="isRequired")
is_active: int = Field(default=1, description="是否启用:0-禁用, 1-启用", alias="isActive")
sort_order: int = Field(default=0, description="排序", alias="sortOrder")
remark: Optional[str] = Field(None, max_length=500, description="备注说明", alias="remark")
class ProductParameterCreate(ProductParameterBase):
"""创建商品参数请求"""
pass
class ProductParameterUpdate(BaseModel):
"""更新商品参数请求"""
model_config = ConfigDict(populate_by_name=True)
name: Optional[str] = Field(None, max_length=100, description="参数名称", alias="name")
code: Optional[str] = Field(None, max_length=50, description="参数编码", alias="code")
param_type: Optional[str] = Field(None, description="参数类型", alias="paramType")
options: Optional[str] = Field(None, description="可选值列表", alias="options")
placeholder: Optional[str] = Field(None, max_length=100, description="输入提示文字", alias="placeholder")
is_required: Optional[int] = Field(None, description="是否必填", alias="isRequired")
is_active: Optional[int] = Field(None, description="是否启用", alias="isActive")
sort_order: Optional[int] = Field(None, description="排序", alias="sortOrder")
remark: Optional[str] = Field(None, max_length=500, description="备注说明", alias="remark")
class ProductParameterResponse(ProductParameterBase):
"""商品参数响应"""
id: str
create_at: datetime
create_by: Optional[str] = None
create_name: Optional[str] = None
update_at: Optional[datetime] = None
class Config:
from_attributes = True
class ProductParameterListResponse(BaseModel):
"""商品参数列表响应"""
list: List[ProductParameterResponse]
total: int
page: int
pageSize: int
class ProductParameterSimpleResponse(BaseModel):
"""商品参数简洁响应(用于下拉选择)"""
id: str
name: str
code: str
param_type: str
options: Optional[str] = None
class Config:
from_attributes = True