model.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from datetime import datetime
  2. from decimal import Decimal
  3. from sqlalchemy import DateTime, Numeric, String, Text
  4. from sqlalchemy.orm import Mapped, mapped_column
  5. from app.common.enums import PermissionFilterStrategy
  6. from app.core.base_model import PaymentModelMixin, TenantMixin, EnterpriseMixin
  7. from .enums import QuotaStatusEnum
  8. class QuotaModel(PaymentModelMixin, TenantMixin, EnterpriseMixin):
  9. """额度模型"""
  10. __tablename__ = "pay_expense_quota"
  11. __table_args__ = {"comment": "额度表"}
  12. __permission_strategy__ = PermissionFilterStrategy.ENTERPRISE_BASED
  13. employee_id: Mapped[str] = mapped_column(
  14. String(64), index=True, comment="员工ID"
  15. )
  16. institution_id: Mapped[str] = mapped_column(
  17. String(64), index=True, comment="制度ID"
  18. )
  19. out_biz_no: Mapped[str | None] = mapped_column(
  20. String(64), unique=True, index=True, comment="外部业务编号"
  21. )
  22. quota_id: Mapped[str | None] = mapped_column(
  23. String(64), comment="额度ID(支付宝返回)"
  24. )
  25. total_amount: Mapped[Decimal | None] = mapped_column(
  26. Numeric(12, 2), default=0, comment="总金额"
  27. )
  28. available_amount: Mapped[Decimal | None] = mapped_column(
  29. Numeric(12, 2), default=0, comment="可用金额"
  30. )
  31. valid_from: Mapped[datetime | None] = mapped_column(
  32. DateTime, comment="有效期开始"
  33. )
  34. valid_to: Mapped[datetime | None] = mapped_column(
  35. DateTime, comment="有效期结束"
  36. )
  37. status: Mapped[str] = mapped_column(
  38. String(32),
  39. default=QuotaStatusEnum.QUOTA_ACTIVE.value,
  40. comment="状态: QUOTA_ACTIVE/QUOTA_FROZEN/QUOTA_EXHAUSTED/QUOTA_EXPIRED"
  41. )