schema.py 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. from datetime import datetime
  2. from typing import Optional
  3. from pydantic import BaseModel, ConfigDict, Field, model_validator
  4. class EmployeeCreateSchema(BaseModel):
  5. """
  6. 创建员工请求
  7. 必填字段:
  8. - enterprise_id: 企业ID
  9. - name: 员工姓名
  10. - employee_no: 员工工号
  11. - identity_type: 身份类型
  12. - identity: 身份标识
  13. """
  14. enterprise_id: Optional[str] = Field(default=None, description="企业ID")
  15. employee_id: Optional[str] = Field(default=None, description="员工ID")
  16. employee_name: Optional[str] = Field(default=None, max_length=128, description="员工姓名")
  17. employee_no: Optional[str] = Field(default=None, max_length=64, description="员工工号")
  18. identity_type: Optional[str] = Field(default=None, description="身份类型: ALIPAY_USER_ID/ALIPAY_LOGON_ID/ENTERPRISE_USER_ID")
  19. identity: Optional[str] = Field(default=None, description="身份标识")
  20. identity_open_id: Optional[str] = Field(default=None, description="员工openId")
  21. employee_mobile: Optional[str] = Field(default=None, max_length=32, description="员工手机号")
  22. employee_email: Optional[str] = Field(default=None, max_length=128, description="员工邮箱")
  23. employee_cert_type: Optional[str] = Field(default=None, description="证件类型: IDENTITY_CARD/PASSPORT/DRIVER_LICENSE")
  24. employee_cert_no: Optional[str] = Field(default=None, max_length=64, description="证件号码")
  25. iot_check_type: Optional[str] = Field(default=None, description="IoT核身方式")
  26. department_ids: Optional[list[str]] = Field(default=None, description="部门ID列表")
  27. accounting_entity_ids: Optional[list[str]] = Field(default=None, description="核算主体ID列表")
  28. label_names: Optional[list[str]] = Field(default=None, description="标签名称列表")
  29. sign_return_url: Optional[str] = Field(default=None, description="签约跳转URL")
  30. create_share_code: Optional[bool] = Field(default=False, description="是否创建分享码")
  31. sign_url_carry_info: Optional[bool] = Field(default=False, description="签约链接是否携带信息")
  32. profiles: Optional[dict] = Field(default=None, description="扩展参数")
  33. class EmployeeOutSchema(BaseModel):
  34. """员工响应模型"""
  35. model_config = ConfigDict(from_attributes=True)
  36. # id: int = Field(description="主键ID")
  37. employee_id: Optional[str] = Field(default=None, description="员工ID(业务主键)")
  38. enterprise_id: Optional[str] = Field(default=None, description="企业ID")
  39. employee_name: Optional[str] = Field(default=None, description="员工姓名")
  40. employee_no: Optional[str] = Field(default=None, description="员工工号")
  41. identity_type: Optional[str] = Field(default=None, description="身份类型")
  42. identity: Optional[str] = Field(default=None, description="身份标识")
  43. identity_open_id: Optional[str] = Field(default=None, description="员工openId")
  44. employee_mobile: Optional[str] = Field(default=None, description="员工手机号")
  45. employee_email: Optional[str] = Field(default=None, description="员工邮箱")
  46. employee_cert_type: Optional[str] = Field(default=None, description="证件类型")
  47. employee_cert_no: Optional[str] = Field(default=None, description="证件号码")
  48. status: str = Field(description="状态")
  49. iot_check_type: Optional[str] = Field(default=None, description="IoT核身方式")
  50. department_ids: Optional[list] = Field(default=None, description="部门ID列表")
  51. accounting_entity_ids: Optional[list] = Field(default=None, description="核算主体ID列表")
  52. label_names: Optional[list] = Field(default=None, description="标签名称列表")
  53. sign_return_url: Optional[str] = Field(default=None, description="签约跳转URL")
  54. create_share_code: Optional[bool] = Field(default=None, description="是否创建分享码")
  55. sign_url_carry_info: Optional[bool] = Field(default=None, description="签约链接是否携带信息")
  56. invite_url: Optional[str] = Field(default=None, description="邀请链接")
  57. share_code: Optional[str] = Field(default=None, description="分享码")
  58. profiles: Optional[dict] = Field(default=None, description="扩展参数")
  59. withholding_sign_str: Optional[str] = Field(default=None, description="代扣签约串")
  60. free_sign_token: Optional[str] = Field(default=None, description="免登签约token")
  61. created_time: Optional[datetime] = Field(default=None, description="创建时间")
  62. updated_time: Optional[datetime] = Field(default=None, description="更新时间")
  63. class EmployeeListOutSchema(BaseModel):
  64. """员工列表响应"""
  65. model_config = ConfigDict(from_attributes=True)
  66. id: int = Field(description="主键ID")
  67. employee_id: Optional[str] = Field(default=None, description="员工ID")
  68. enterprise_id: Optional[str] = Field(default=None, description="企业ID")
  69. employee_name: Optional[str] = Field(default=None, description="员工姓名")
  70. employee_no: Optional[str] = Field(default=None, description="员工工号")
  71. status: str = Field(description="状态")
  72. employee_mobile: Optional[str] = Field(default=None, description="员工手机号")
  73. user_id: Optional[int] = Field(default=None, description="关联的系统用户ID")
  74. created_time: Optional[datetime] = Field(default=None, description="创建时间")
  75. class EmployeeOperationOutSchema(BaseModel):
  76. """员工操作响应"""
  77. model_config = ConfigDict(from_attributes=True)
  78. employee_id: Optional[str] = Field(default=None, description="员工ID(业务主键)")
  79. sign_url: Optional[str] = Field(default=None, description="签约链接")
  80. share_code: Optional[str] = Field(default=None, description="分享码")
  81. iot_unique_id: Optional[str] = Field(default=None, description="IoT唯一ID")
  82. class EmployeeInviteQuerySchema(BaseModel):
  83. """获取员工签约激活链接请求"""
  84. enterprise_id: str = Field(description="企业ID")
  85. employee_id: Optional[str] = Field(default=None, description="员工ID")
  86. page_content_code: Optional[str] = Field(default=None, description="页面内容code")
  87. withholding_sign_str: Optional[str] = Field(default=None, description="代扣签约串")
  88. create_share_code: Optional[str] = Field(default="N", description="是否生成签约吱口令: Y/N")
  89. class EmployeeInviteQueryOutSchema(BaseModel):
  90. """获取员工签约激活链接响应"""
  91. enterprise_id: str = Field(description="企业ID")
  92. sign_url: str = Field(description="邀请链接")
  93. mini_app_sign_url: str = Field(description="支付宝其它小程序跳入企业码小程序签约链接")
  94. share_code: Optional[str] = Field(default=None, description="签约吱口令")