schema.py 4.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. from datetime import datetime
  2. from typing import Optional
  3. from pydantic import BaseModel, ConfigDict, Field, model_validator
  4. class FacetofaceApplySchema(BaseModel):
  5. """当面付代开通申请请求"""
  6. enterprise_id: str = Field(description="关联企业ID")
  7. account: str = Field(description="商户支付宝账号或pid(2088开头)")
  8. contact_name: str = Field(description="联系人名称")
  9. contact_mobile: str = Field(description="联系人手机号")
  10. contact_email: Optional[str] = Field(default=None, description="联系人邮箱")
  11. order_ticket: Optional[str] = Field(default=None, description="订单授权凭证(预授权模式)")
  12. sign_and_auth: bool = Field(default=False, description="是否签约且授权")
  13. rate: Optional[str] = Field(default=None, description="费率(sign_and_auth=true时必填)")
  14. remark: Optional[str] = Field(default=None, description="备注")
  15. @model_validator(mode="after")
  16. def validate_rate(self):
  17. if self.sign_and_auth and not self.rate:
  18. raise ValueError("签约且授权时费率不能为空")
  19. return self
  20. class FacetofaceOrderOutSchema(BaseModel):
  21. """当面付申请单详情响应"""
  22. model_config = ConfigDict(from_attributes=True)
  23. id: int = Field(description="主键ID")
  24. enterprise_id: Optional[str] = Field(default=None, description="关联企业ID")
  25. batch_no: Optional[str] = Field(default=None, description="事务编号")
  26. order_no: Optional[str] = Field(default=None, description="签约单号")
  27. order_status: str = Field(description="申请单状态")
  28. account: Optional[str] = Field(default=None, description="商户支付宝账号/pid")
  29. contact_name: Optional[str] = Field(default=None, description="联系人名称")
  30. contact_mobile: Optional[str] = Field(default=None, description="联系人手机号")
  31. contact_email: Optional[str] = Field(default=None, description="联系人邮箱")
  32. order_ticket: Optional[str] = Field(default=None, description="订单授权凭证")
  33. rate: Optional[str] = Field(default=None, description="费率")
  34. sign_and_auth: bool = Field(default=False, description="是否签约且授权")
  35. merchant_pid: Optional[str] = Field(default=None, description="商户pid")
  36. confirm_url: Optional[str] = Field(default=None, description="商家确认链接")
  37. app_auth_token: Optional[str] = Field(default=None, description="应用授权令牌")
  38. app_refresh_token: Optional[str] = Field(default=None, description="刷新令牌")
  39. auth_app_id: Optional[str] = Field(default=None, description="授权商户appId")
  40. user_id: Optional[str] = Field(default=None, description="授权商户userId")
  41. open_id: Optional[str] = Field(default=None, description="授权商户openId")
  42. expires_in: Optional[str] = Field(default=None, description="授权令牌过期秒数")
  43. re_expires_in: Optional[str] = Field(default=None, description="刷新令牌过期秒数")
  44. reject_reason: Optional[str] = Field(default=None, description="驳回原因")
  45. remark: Optional[str] = Field(default=None, description="备注")
  46. last_query_time: Optional[datetime] = Field(default=None, description="最后查询时间")
  47. next_query_time: Optional[datetime] = Field(default=None, description="下次查询时间")
  48. query_count: int = Field(default=0, description="已查询次数")
  49. created_time: datetime = Field(description="创建时间")
  50. updated_time: datetime = Field(description="更新时间")
  51. class FacetofaceOrderListOutSchema(BaseModel):
  52. """当面付申请单列表响应"""
  53. model_config = ConfigDict(from_attributes=True)
  54. id: int = Field(description="主键ID")
  55. enterprise_id: Optional[str] = Field(default=None, description="关联企业ID")
  56. batch_no: Optional[str] = Field(default=None, description="事务编号")
  57. order_status: str = Field(description="申请单状态")
  58. account: Optional[str] = Field(default=None, description="商户支付宝账号")
  59. contact_name: Optional[str] = Field(default=None, description="联系人")
  60. sign_and_auth: bool = Field(default=False, description="是否授权")
  61. confirm_url: Optional[str] = Field(default=None, description="商家确认链接")
  62. reject_reason: Optional[str] = Field(default=None, description="驳回原因")
  63. created_time: datetime = Field(description="创建时间")
  64. updated_time: datetime = Field(description="更新时间")