product_parameter.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. """Pydantic schemas - 商品参数模板"""
  2. from pydantic import BaseModel, Field, ConfigDict
  3. from typing import Optional, List
  4. from datetime import datetime
  5. class ProductParameterBase(BaseModel):
  6. """商品参数基础字段"""
  7. model_config = ConfigDict(populate_by_name=True)
  8. name: str = Field(..., max_length=100, description="参数名称", alias="name")
  9. code: str = Field(..., max_length=50, description="参数编码", alias="code")
  10. param_type: str = Field(default="text", description="参数类型:text-文本输入, select-单选下拉, multi_select-多选", alias="paramType")
  11. options: Optional[str] = Field(None, description="可选值列表,JSON数组格式", alias="options")
  12. placeholder: Optional[str] = Field(None, max_length=100, description="输入提示文字", alias="placeholder")
  13. is_required: int = Field(default=0, description="是否必填:0-否, 1-是", alias="isRequired")
  14. is_active: int = Field(default=1, description="是否启用:0-禁用, 1-启用", alias="isActive")
  15. sort_order: int = Field(default=0, description="排序", alias="sortOrder")
  16. remark: Optional[str] = Field(None, max_length=500, description="备注说明", alias="remark")
  17. class ProductParameterCreate(ProductParameterBase):
  18. """创建商品参数请求"""
  19. pass
  20. class ProductParameterUpdate(BaseModel):
  21. """更新商品参数请求"""
  22. model_config = ConfigDict(populate_by_name=True)
  23. name: Optional[str] = Field(None, max_length=100, description="参数名称", alias="name")
  24. code: Optional[str] = Field(None, max_length=50, description="参数编码", alias="code")
  25. param_type: Optional[str] = Field(None, description="参数类型", alias="paramType")
  26. options: Optional[str] = Field(None, description="可选值列表", alias="options")
  27. placeholder: Optional[str] = Field(None, max_length=100, description="输入提示文字", alias="placeholder")
  28. is_required: Optional[int] = Field(None, description="是否必填", alias="isRequired")
  29. is_active: Optional[int] = Field(None, description="是否启用", alias="isActive")
  30. sort_order: Optional[int] = Field(None, description="排序", alias="sortOrder")
  31. remark: Optional[str] = Field(None, max_length=500, description="备注说明", alias="remark")
  32. class ProductParameterResponse(ProductParameterBase):
  33. """商品参数响应"""
  34. id: str
  35. create_at: datetime
  36. create_by: Optional[str] = None
  37. create_name: Optional[str] = None
  38. update_at: Optional[datetime] = None
  39. class Config:
  40. from_attributes = True
  41. class ProductParameterListResponse(BaseModel):
  42. """商品参数列表响应"""
  43. list: List[ProductParameterResponse]
  44. total: int
  45. page: int
  46. pageSize: int
  47. class ProductParameterSimpleResponse(BaseModel):
  48. """商品参数简洁响应(用于下拉选择)"""
  49. id: str
  50. name: str
  51. code: str
  52. param_type: str
  53. options: Optional[str] = None
  54. class Config:
  55. from_attributes = True