region.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. """区域Schema"""
  2. from typing import Optional, List
  3. from pydantic import BaseModel, Field, ConfigDict
  4. class RegionBase(BaseModel):
  5. """区域基础Schema"""
  6. model_config = ConfigDict(populate_by_name=True)
  7. name: str = Field(..., description="区域名称")
  8. code: str = Field(..., description="区域编码")
  9. description: Optional[str] = Field(None, description="区域描述")
  10. sort_order: int = Field(0, alias="sortOrder", description="排序")
  11. is_active: bool = Field(True, alias="isActive", description="是否启用")
  12. expected_delivery_minutes: Optional[int] = Field(
  13. None, alias="expectedDeliveryMinutes", description="预计配送时长(分钟)"
  14. )
  15. delivery_warn_advance_minutes: Optional[int] = Field(
  16. None,
  17. alias="deliveryWarnAdvanceMinutes",
  18. description="计划到货前未送达时预警提前时间(分钟)",
  19. )
  20. class RegionCreate(RegionBase):
  21. """创建区域"""
  22. pass
  23. class RegionUpdate(BaseModel):
  24. """更新区域"""
  25. model_config = ConfigDict(populate_by_name=True)
  26. name: Optional[str] = Field(None, description="区域名称")
  27. code: Optional[str] = Field(None, description="区域编码")
  28. description: Optional[str] = Field(None, description="区域描述")
  29. sort_order: Optional[int] = Field(None, alias="sortOrder", description="排序")
  30. is_active: Optional[bool] = Field(None, alias="isActive", description="是否启用")
  31. expected_delivery_minutes: Optional[int] = Field(
  32. None, alias="expectedDeliveryMinutes", description="预计配送时长(分钟)"
  33. )
  34. delivery_warn_advance_minutes: Optional[int] = Field(
  35. None,
  36. alias="deliveryWarnAdvanceMinutes",
  37. description="计划到货前未送达时预警提前时间(分钟)",
  38. )
  39. class RegionResponse(RegionBase):
  40. """区域响应"""
  41. model_config = ConfigDict(from_attributes=True, populate_by_name=True)
  42. id: str
  43. create_at: Optional[str] = None
  44. create_by: Optional[str] = None
  45. create_name: Optional[str] = None
  46. update_at: Optional[str] = None
  47. update_by: Optional[str] = None
  48. class RegionListResponse(BaseModel):
  49. """区域列表响应"""
  50. items: List[RegionResponse]
  51. total: int
  52. page: int
  53. pageSize: int
  54. totalPages: int