schema.py 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. from datetime import datetime
  2. from typing import Optional
  3. from pydantic import BaseModel, ConfigDict, Field
  4. class StandardConditionInfoSchema(BaseModel):
  5. """使用规则因子"""
  6. rule_factor: str = Field(description="条件类型")
  7. rule_value: str = Field(description="条件值")
  8. rule_operator: Optional[str] = Field(
  9. default=None, description="操作符: LT(<)/LE(<=)/EQ(=)/NE(!=)/GE(>=)/GT(>)"
  10. )
  11. rule_name: Optional[str] = Field(default=None, description="条件名称")
  12. class AssetShareSourceInfoSchema(BaseModel):
  13. """资产共享源信息"""
  14. share_mode: str = Field(description="共享模式")
  15. source_id_list: list[str] = Field(description="源ID列表")
  16. class ExpenseRuleCreateSchema(BaseModel):
  17. """创建费控使用规则请求 (alipay.ebpp.invoice.institution.expenserule.create)"""
  18. institution_id: str = Field(description="制度ID (必填)")
  19. standard_name: str = Field(max_length=20, description="费控规则名称 (必填)")
  20. standard_desc: Optional[str] = Field(default=None, description="规则描述")
  21. expense_type_sub_category: str = Field(
  22. description="费用类型子类 (必填): TAKE_AWAY(外卖)/REACH_SHOP(到店)/METRO(地铁)"
  23. )
  24. standard_condition_info_list: list[StandardConditionInfoSchema] = Field(
  25. description="使用规则因子列表 (必填)"
  26. )
  27. enterprise_id: Optional[str] = Field(default=None, description="企业码ID")
  28. account_id: Optional[str] = Field(default=None, description="企业共同账户ID (已废弃)")
  29. agreement_no: Optional[str] = Field(default=None, description="授权签约协议号 (已废弃)")
  30. outer_source_id: Optional[str] = Field(default=None, description="外部唯一标识(幂等)")
  31. open_rule_id: Optional[str] = Field(default=None, description="开票规则ID")
  32. payment_policy: Optional[str] = Field(
  33. default=None, description="支付策略: PERSONAL(全部个人账户)/COMBINATION(组合支付)"
  34. )
  35. consume_mode: Optional[str] = Field(
  36. default=None, description="消费模式: COUPON_ONLY/COUPON_AND_CAP/DEFAULT"
  37. )
  38. expense_cert_type: Optional[str] = Field(default=None, description="费用凭证类型")
  39. personal_qrcode_mode: Optional[int] = Field(default=None, description="个人二维码模式")
  40. asset_share_source_info: Optional[AssetShareSourceInfoSchema] = Field(default=None, description="资产共享源信息")
  41. class ExpenseRuleDeleteSchema(BaseModel):
  42. """删除费控使用规则请求"""
  43. institution_id: str = Field(description="制度ID")
  44. standard_id_list: list[str] = Field(description="使用规则ID列表")
  45. enterprise_id: str = Field(description="企业ID")
  46. class ExpenseRuleModifySchema(BaseModel):
  47. """编辑费控使用规则请求"""
  48. institution_id: str = Field(description="制度ID")
  49. standard_id: str = Field(description="使用规则ID")
  50. action: str = Field(description="操作类型")
  51. standard_name: Optional[str] = Field(default=None, description="规则名称")
  52. standard_desc: Optional[str] = Field(default=None, description="规则描述")
  53. expense_type_sub_category: Optional[str] = Field(default=None, description="费用类型子类")
  54. standard_condition_info_list: Optional[list[StandardConditionInfoSchema]] = Field(
  55. default=None, description="使用规则因子列表"
  56. )
  57. enterprise_id: Optional[str] = Field(default=None, description="企业ID")
  58. outer_source_id: Optional[str] = Field(default=None, description="外部唯一标识")
  59. open_rule_id: Optional[str] = Field(default=None, description="开票规则ID")
  60. payment_policy: Optional[str] = Field(default=None, description="支付策略")
  61. consume_mode: Optional[str] = Field(default=None, description="消费模式")
  62. expense_cert_type: Optional[str] = Field(default=None, description="凭证类型")
  63. class RuleCreateSchema(BaseModel):
  64. """创建使用规则请求"""
  65. institution_id: str = Field(description="制度ID")
  66. standard_name: str = Field(max_length=20, description="规则名称")
  67. standard_desc: Optional[str] = Field(default=None, description="规则描述")
  68. expense_type_sub_category: str = Field(description="费用类型子类")
  69. enterprise_id: Optional[str] = Field(default=None, description="企业ID")
  70. class RuleOperationOutSchema(BaseModel):
  71. """使用规则操作响应"""
  72. out_biz_no: str = Field(description="外部业务编号")
  73. rule_id: Optional[str] = Field(default=None, description="规则ID")
  74. result: Optional[str] = Field(default=None, description="操作结果")
  75. class RuleListOutSchema(BaseModel):
  76. """使用规则列表响应"""
  77. model_config = ConfigDict(from_attributes=True)
  78. id: int = Field(description="主键ID")
  79. out_biz_no: str = Field(description="外部业务编号")
  80. institution_id: str = Field(description="制度ID")
  81. rule_id: Optional[str] = Field(default=None, description="规则ID")
  82. standard_name: Optional[str] = Field(default=None, description="规则名称")
  83. expense_type_sub_category: Optional[str] = Field(default=None, description="费用类型子类")
  84. status: Optional[str] = Field(default=None, description="状态")
  85. enterprise_id: Optional[str] = Field(default=None, description="企业ID")
  86. created_time: Optional[datetime] = Field(default=None, description="创建时间")
  87. updated_time: Optional[datetime] = Field(default=None, description="更新时间")
  88. class RuleOutSchema(BaseModel):
  89. """使用规则详情响应"""
  90. model_config = ConfigDict(from_attributes=True)
  91. out_biz_no: str = Field(description="外部业务编号")
  92. institution_id: str = Field(description="制度ID")
  93. rule_id: Optional[str] = Field(default=None, description="规则ID")
  94. standard_name: Optional[str] = Field(default=None, description="规则名称")
  95. standard_desc: Optional[str] = Field(default=None, description="规则描述")
  96. expense_type_sub_category: Optional[str] = Field(default=None, description="费用类型子类")
  97. enterprise_id: Optional[str] = Field(default=None, description="企业ID")
  98. status: Optional[str] = Field(default=None, description="状态")
  99. class RuleUpdateSchema(BaseModel):
  100. """更新使用规则请求"""
  101. institution_id: Optional[str] = Field(default=None, description="制度ID")
  102. standard_name: Optional[str] = Field(default=None, description="规则名称")
  103. standard_desc: Optional[str] = Field(default=None, description="规则描述")
  104. expense_type_sub_category: Optional[str] = Field(default=None, description="费用类型子类")
  105. status: Optional[str] = Field(default=None, description="状态")
  106. enterprise_id: Optional[str] = Field(default=None, description="企业ID")