model.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. from datetime import datetime
  2. from sqlalchemy import DateTime, Numeric, String, Text
  3. from sqlalchemy.orm import Mapped, mapped_column
  4. from app.common.enums import PermissionFilterStrategy
  5. from app.core.base_model import PaymentModelMixin, TenantMixin, EnterpriseMixin
  6. class ExpenseInstitutionModel(PaymentModelMixin, TenantMixin, EnterpriseMixin):
  7. """费控制度模型"""
  8. __tablename__ = "pay_expense_institution"
  9. __table_args__ = {"comment": "费控制度表"}
  10. __permission_strategy__ = PermissionFilterStrategy.ENTERPRISE_BASED
  11. institution_id: Mapped[str | None] = mapped_column(
  12. String(64), unique=True, index=True, comment="费控规则ID(创建后获取)"
  13. )
  14. institution_name: Mapped[str | None] = mapped_column(String(128), comment="制度名称")
  15. institution_desc: Mapped[str | None] = mapped_column(
  16. Text, comment="制度描述"
  17. )
  18. scene_type: Mapped[str | None] = mapped_column(
  19. String(32), default="GENERAL", comment="因公场景"
  20. )
  21. expense_type: Mapped[str] = mapped_column(
  22. String(32), default="GENERAL", comment="费用类型"
  23. )
  24. expense_sub_type: Mapped[str] = mapped_column(
  25. String(32), default="GENERAL", comment="费用类型子类"
  26. )
  27. status: Mapped[str] = mapped_column(
  28. String(32),
  29. default="INSTITUTION_CREATE",
  30. comment="状态: INSTITUTION_CREATE/INSTITUTION_EFFECTIVE/INSTITUTION_INVALID",
  31. )
  32. effective: Mapped[str | None] = mapped_column(
  33. String(32), default="1", comment="是否启用: 0(停用)/1(启用)"
  34. )
  35. effective_start_date: Mapped[datetime | None] = mapped_column(
  36. DateTime, comment="制度生效起始时间"
  37. )
  38. effective_end_date: Mapped[datetime | None] = mapped_column(
  39. DateTime, comment="制度生效结束时间"
  40. )
  41. consult_mode: Mapped[str | None] = mapped_column(
  42. String(32), default="0", comment="费控咨询模式: 0(支付宝内部计算)/1(咨询外部服务商)"
  43. )
  44. multi_employee_share_mode: Mapped[str | None] = mapped_column(
  45. String(32), default="0", comment="多员工分享模式: 0(不分享)/1(分享)"
  46. )
  47. grant_mode: Mapped[str | None] = mapped_column(
  48. String(32), comment="发放模式: manual(手动)/period(周期)"
  49. )
  50. period_type: Mapped[str | None] = mapped_column(
  51. String(32), comment="周期类型: daily/weekly/monthly/quarterly/yearly"
  52. )
  53. amount: Mapped[float | None] = mapped_column(
  54. Numeric(12, 2), default=0, comment="发放金额"
  55. )
  56. single_limit: Mapped[float | None] = mapped_column(
  57. Numeric(12, 2), default=0, comment="单次消费限额"
  58. )
  59. effective_time_type: Mapped[str | None] = mapped_column(
  60. String(32), default="unlimited", comment="有效时间类型: unlimited/all_day/workday/custom"
  61. )
  62. applicable_scope: Mapped[str | None] = mapped_column(
  63. String(32), default="none", comment="适用范围: none/all/employee/department"
  64. )
  65. currency: Mapped[str | None] = mapped_column(
  66. String(32), default="CNY", comment="货币类型"
  67. )