user.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. """用户Schema"""
  2. from typing import Optional, List
  3. from pydantic import BaseModel, Field
  4. class UserBase(BaseModel):
  5. """用户基础Schema"""
  6. username: str = Field(..., description="用户名")
  7. real_name: Optional[str] = Field(None, description="真实姓名")
  8. phone: Optional[str] = Field(None, description="联系电话")
  9. role: str = Field(..., description="角色")
  10. region_id: Optional[str] = Field(None, description="所属区域ID")
  11. is_active: bool = Field(True, description="是否激活")
  12. class UserCreate(UserBase):
  13. """创建用户"""
  14. pass
  15. class UserUpdate(BaseModel):
  16. """更新用户"""
  17. real_name: Optional[str] = Field(None, description="真实姓名")
  18. phone: Optional[str] = Field(None, description="联系电话")
  19. role: Optional[str] = Field(None, description="角色")
  20. region_id: Optional[str] = Field(None, description="所属区域ID")
  21. is_active: Optional[bool] = Field(None, description="是否激活")
  22. class UserResponse(UserBase):
  23. """用户响应"""
  24. id: str
  25. create_at: Optional[str] = None
  26. class Config:
  27. from_attributes = True
  28. class UserListResponse(BaseModel):
  29. """用户列表响应"""
  30. items: List[UserResponse]
  31. total: int
  32. page: int
  33. pageSize: int
  34. totalPages: int
  35. class LoginRequest(BaseModel):
  36. """登录请求"""
  37. username: str = Field(..., description="用户名")
  38. password: str = Field(..., description="密码")
  39. class LoginResponse(BaseModel):
  40. """登录响应"""
  41. token: str
  42. refreshToken: str
  43. expiresIn: int
  44. userInfo: dict
  45. class ChangePasswordRequest(BaseModel):
  46. """修改密码请求"""
  47. oldPassword: str = Field(..., description="旧密码")
  48. newPassword: str = Field(..., description="新密码")
  49. class ResetPasswordRequest(BaseModel):
  50. """重置密码请求"""
  51. userId: str = Field(..., description="用户ID")