category_parameter.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. """Pydantic schemas - 分类参数关联"""
  2. from pydantic import BaseModel, Field, ConfigDict
  3. from typing import Optional, List
  4. from datetime import datetime
  5. class CategoryParameterBase(BaseModel):
  6. """分类参数关联基础字段"""
  7. model_config = ConfigDict(populate_by_name=True)
  8. category_id: str = Field(..., description="分类ID", alias="categoryId")
  9. parameter_id: str = Field(..., description="参数ID", alias="parameterId")
  10. is_required: int = Field(default=0, description="该分类下是否必填:0-否, 1-是", alias="isRequired")
  11. default_value: Optional[str] = Field(None, max_length=500, description="默认值", alias="defaultValue")
  12. sort_order: int = Field(default=0, description="排序", alias="sortOrder")
  13. class CategoryParameterItem(BaseModel):
  14. """批量更新中的单个参数项(不包含categoryId)"""
  15. model_config = ConfigDict(populate_by_name=True)
  16. parameter_id: str = Field(..., description="参数ID", alias="parameterId")
  17. is_required: int = Field(default=0, description="该分类下是否必填:0-否, 1-是", alias="isRequired")
  18. default_value: Optional[str] = Field(None, max_length=500, description="默认值", alias="defaultValue")
  19. sort_order: int = Field(default=0, description="排序", alias="sortOrder")
  20. class CategoryParameterCreate(CategoryParameterBase):
  21. """创建分类参数关联请求"""
  22. pass
  23. class CategoryParameterUpdate(BaseModel):
  24. """更新分类参数关联请求"""
  25. model_config = ConfigDict(populate_by_name=True)
  26. is_required: Optional[int] = Field(None, description="是否必填", alias="isRequired")
  27. default_value: Optional[str] = Field(None, max_length=500, description="默认值", alias="defaultValue")
  28. sort_order: Optional[int] = Field(None, description="排序", alias="sortOrder")
  29. class CategoryParameterBatchUpdate(BaseModel):
  30. """批量更新分类参数关联请求"""
  31. model_config = ConfigDict(populate_by_name=True)
  32. items: List[CategoryParameterItem] = Field(..., description="参数关联列表")
  33. class CategoryParameterResponse(CategoryParameterBase):
  34. """分类参数关联响应"""
  35. id: str
  36. create_at: datetime
  37. create_by: Optional[str] = None
  38. create_name: Optional[str] = None
  39. update_at: Optional[datetime] = None
  40. class Config:
  41. from_attributes = True
  42. class CategoryParameterWithDetailResponse(BaseModel):
  43. """带参数详情的分类参数关联响应"""
  44. id: str
  45. category_id: str
  46. parameter_id: str
  47. parameter_name: str
  48. parameter_code: str
  49. param_type: str
  50. options: Optional[str] = None
  51. placeholder: Optional[str] = None
  52. is_required: int
  53. default_value: Optional[str] = None
  54. sort_order: int
  55. class Config:
  56. from_attributes = True
  57. class CategoryParameterListResponse(BaseModel):
  58. """分类参数关联列表响应"""
  59. list: List[CategoryParameterWithDetailResponse]
  60. total: int