schema.py 7.4 KB

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