schema.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from datetime import datetime
  2. from decimal import Decimal
  3. from typing import Optional
  4. from pydantic import BaseModel, ConfigDict, Field
  5. class PointsCreateSchema(BaseModel):
  6. """创建积分账户请求"""
  7. tenant_id: int = Field(description="租户ID")
  8. points: Decimal = Field(default=Decimal("0.00"), max_digits=10, decimal_places=2, description="初始积分")
  9. class PointsUpdateSchema(BaseModel):
  10. """更新积分请求"""
  11. points: Decimal = Field(max_digits=10, decimal_places=2, description="积分余额")
  12. class PointsOutSchema(BaseModel):
  13. """积分详情响应"""
  14. model_config = ConfigDict(from_attributes=True)
  15. id: int = Field(description="主键ID")
  16. tenant_id: Optional[int] = Field(default=None, description="租户ID")
  17. points: Optional[Decimal] = Field(default=Decimal("0.00"), max_digits=10, decimal_places=2, description="积分余额")
  18. status: Optional[str] = Field(default=None, description="状态")
  19. created_time: Optional[datetime] = Field(default=None, description="创建时间")
  20. updated_time: Optional[datetime] = Field(default=None, description="更新时间")
  21. class PointsChangeSchema(BaseModel):
  22. """积分变动请求"""
  23. points: Decimal = Field(max_digits=10, decimal_places=2, gt=0, description="变动积分")
  24. change_type: str = Field(description="变动类型: ADD/DEDUCT")
  25. enterprise_id: Optional[str] = Field(default=None, description="企业ID")
  26. employee_id: Optional[str] = Field(default=None, description="员工ID")
  27. business_id: Optional[str] = Field(default=None, description="业务ID")
  28. business_type: Optional[str] = Field(default=None, description="业务类型")
  29. remark: Optional[str] = Field(default=None, description="备注")
  30. class PointsRecordOutSchema(BaseModel):
  31. """积分记录响应"""
  32. model_config = ConfigDict(from_attributes=True)
  33. tenant_id: Optional[int] = Field(default=None, description="租户ID")
  34. enterprise_id: Optional[str] = Field(default=None, description="企业ID")
  35. employee_id: Optional[str] = Field(default=None, description="员工ID")
  36. points: Optional[Decimal] = Field(default=Decimal("0.00"), max_digits=10, decimal_places=2, description="变动积分")
  37. balance: Optional[Decimal] = Field(default=Decimal("0.00"), max_digits=10, decimal_places=2, description="变动后余额")
  38. type: Optional[str] = Field(default=None, description="变动类型")
  39. business_type: Optional[str] = Field(default=None, description="业务类型")
  40. business_id: Optional[str] = Field(default=None, description="业务ID")
  41. remark: Optional[str] = Field(default=None, description="备注")
  42. created_time: Optional[datetime] = Field(default=None, description="创建时间")