| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- from datetime import datetime
- from decimal import Decimal
- from sqlalchemy import JSON, DateTime, String, Text, Boolean, Numeric
- from sqlalchemy.orm import Mapped, mapped_column
- from app.core.base_model import PaymentModelMixin, TenantMixin, EnterpriseMixin
- from app.common.enums import PermissionFilterStrategy
- class AlipayNotifyLogModel(PaymentModelMixin):
- """支付宝通知日志模型"""
- __tablename__ = "pay_alipay_notify_log"
- __table_args__ = {"comment": "支付宝通知日志表"}
- notify_id: Mapped[str | None] = mapped_column(
- String(50), nullable=False, comment="通知ID"
- )
- msg_method: Mapped[str] = mapped_column(
- String(100), nullable=False, comment="消息接口名称"
- )
- notify_type: Mapped[str | None] = mapped_column(
- String(100), comment="通知类型"
- )
- message: Mapped[dict] = mapped_column(
- JSON, nullable=False, comment="完整的消息数据"
- )
- verify_result: Mapped[bool] = mapped_column(
- Boolean, nullable=False, comment="验签结果"
- )
- process_result: Mapped[bool | None] = mapped_column(
- Boolean, comment="处理结果"
- )
- error: Mapped[str | None] = mapped_column(
- Text, comment="错误信息"
- )
- received_at: Mapped[datetime] = mapped_column(
- DateTime, default=datetime.now, nullable=False, comment="接收时间"
- )
- class PayBillModel(PaymentModelMixin, TenantMixin, EnterpriseMixin):
- """账单主表"""
- __tablename__ = "pay_bill"
- __table_args__ = {"comment": "企业码账单表"}
- __permission_strategy__ = PermissionFilterStrategy.ENTERPRISE_BASED
- pay_no: Mapped[str] = mapped_column(
- String(64), unique=True, index=True, comment="支付宝账单号"
- )
- account_id: Mapped[str] = mapped_column(String(64), comment="共同账户ID")
- employee_id: Mapped[str] = mapped_column(String(64), comment="员工ID")
- consume_type: Mapped[str] = mapped_column(
- String(32), comment="账单类型: CONSUME/REFUND/TRANSFER"
- )
- consume_amount: Mapped[Decimal] = mapped_column(
- Numeric(12, 2), comment="账单金额"
- )
- gmt_biz_create: Mapped[datetime] = mapped_column(
- DateTime, comment="账单创建时间"
- )
- gmt_recieve_pay: Mapped[datetime | None] = mapped_column(
- DateTime, comment="支付时间"
- )
- peer_pay_amount: Mapped[Decimal | None] = mapped_column(
- Numeric(12, 2), comment="企业代付金额"
- )
- notify_reason: Mapped[str] = mapped_column(String(255), comment="通知原因")
- notify_msg: Mapped[str | None] = mapped_column(Text, comment="通知描述")
- related_pay_no: Mapped[str | None] = mapped_column(
- String(64), comment="关联账单号"
- )
- expense_rule_group_id: Mapped[str | None] = mapped_column(
- String(64), comment="费控规则ID"
- )
- expense_scene_code: Mapped[str | None] = mapped_column(
- String(32), comment="费用场景"
- )
- expense_type: Mapped[str | None] = mapped_column(
- String(64), comment="费用类型"
- )
- status: Mapped[str] = mapped_column(
- String(32), default="NEW", comment="状态: NEW/PROCESSED/FAILED"
- )
- ext_infos: Mapped[dict | None] = mapped_column(JSON, comment="扩展信息")
- class PayBillOrderModel(PaymentModelMixin, TenantMixin, EnterpriseMixin):
- """订单明细表"""
- __tablename__ = "pay_bill_order"
- __table_args__ = {"comment": "账单订单明细表"}
- __permission_strategy__ = PermissionFilterStrategy.ENTERPRISE_BASED
- pay_no: Mapped[str] = mapped_column(
- String(64), index=True, comment="关联账单号"
- )
- order_no: Mapped[str] = mapped_column(
- String(64), unique=True, index=True, comment="支付宝订单号"
- )
- trade_no: Mapped[str | None] = mapped_column(
- String(64), comment="支付宝交易号"
- )
- product_code: Mapped[str | None] = mapped_column(
- String(64), comment="产品码"
- )
- order_title: Mapped[str | None] = mapped_column(
- String(255), comment="订单标题"
- )
- order_amount: Mapped[Decimal | None] = mapped_column(
- Numeric(12, 2), comment="订单金额"
- )
- order_status: Mapped[str | None] = mapped_column(
- String(32), comment="订单状态"
- )
- merchant_name: Mapped[str | None] = mapped_column(
- String(255), comment="商户名称"
- )
- merchant_id: Mapped[str | None] = mapped_column(
- String(64), comment="商户ID"
- )
- shop_name: Mapped[str | None] = mapped_column(
- String(255), comment="门店名称"
- )
- gmt_payment: Mapped[datetime | None] = mapped_column(
- DateTime, comment="支付时间"
- )
- fund_channel: Mapped[str | None] = mapped_column(
- String(64), comment="资金渠道"
- )
- class PayBillVoucherModel(PaymentModelMixin, TenantMixin, EnterpriseMixin):
- """凭证信息表"""
- __tablename__ = "pay_bill_voucher"
- __table_args__ = {"comment": "账单凭证信息表"}
- __permission_strategy__ = PermissionFilterStrategy.ENTERPRISE_BASED
- pay_no: Mapped[str] = mapped_column(
- String(64), index=True, comment="关联账单号"
- )
- voucher_id: Mapped[str] = mapped_column(
- String(64), index=True, comment="凭证ID"
- )
- voucher_type: Mapped[str | None] = mapped_column(
- String(32), comment="凭证类型"
- )
- voucher_status: Mapped[str | None] = mapped_column(
- String(32), comment="凭证状态"
- )
- invoice_code: Mapped[str | None] = mapped_column(
- String(64), comment="发票代码"
- )
- invoice_no: Mapped[str | None] = mapped_column(
- String(64), comment="发票号码"
- )
- invoice_amount: Mapped[Decimal | None] = mapped_column(
- Numeric(12, 2), comment="发票金额"
- )
- tax_amount: Mapped[Decimal | None] = mapped_column(
- Numeric(12, 2), comment="税额"
- )
- issue_date: Mapped[datetime | None] = mapped_column(
- DateTime, comment="开票日期"
- )
- check_code: Mapped[str | None] = mapped_column(
- String(64), comment="校验码"
- )
- pdf_url: Mapped[str | None] = mapped_column(Text, comment="PDF下载地址")
|