| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- from datetime import datetime
- from decimal import Decimal
- from sqlalchemy import DateTime, String, Text, JSON, Numeric, ForeignKey
- from sqlalchemy.orm import Mapped, mapped_column, relationship
- from app.core.base_model import PaymentModelMixin, TenantMixin, EnterpriseMixin
- from app.common.enums import PermissionFilterStrategy
- from .enums import (
- AccountSignStatusEnum,
- AccountStatusEnum,
- TransferStatusEnum,
- DepositStatusEnum,
- WithdrawStatusEnum,
- )
- class AccountModel(PaymentModelMixin, TenantMixin, EnterpriseMixin):
- """资金专户模型"""
- __tablename__ = "pay_account"
- __table_args__ = {"comment": "资金专户表"}
- __permission_strategy__ = PermissionFilterStrategy.ENTERPRISE_BASED
- account_book_id: Mapped[str | None] = mapped_column(
- String(64), unique=True, index=True, comment="资金专户号"
- )
- account_name: Mapped[str | None] = mapped_column(
- String(128), comment="账户名称"
- )
- account_type: Mapped[str | None] = mapped_column(
- String(32),
- default="ALL",
- comment="账户类型: INCOME/DISBURSE/ALL"
- )
- scene: Mapped[str] = mapped_column(
- String(32),
- default="B2B_TRANS",
- comment="应用场景码: ENT_CREDIT/B2B_TRANS"
- )
- sign_status: Mapped[str] = mapped_column(
- String(32),
- default=AccountSignStatusEnum.PENDING.value,
- comment="签约状态: PENDING/AUTHORIZED/AUTHORIZE_FAILED/UNAUTHORIZED"
- )
- sign_time: Mapped[datetime | None] = mapped_column(
- DateTime, comment="签约时间"
- )
- status: Mapped[str] = mapped_column(
- String(32),
- default=AccountStatusEnum.ACTIVE.value,
- comment="专户状态: ACTIVE/FROZEN/CLOSED"
- )
- remark: Mapped[str | None] = mapped_column(Text, comment="备注")
- class TransferModel(PaymentModelMixin, TenantMixin, EnterpriseMixin):
- """转账记录模型"""
- __tablename__ = "pay_transfer"
- __table_args__ = {"comment": "转账记录表"}
- __permission_strategy__ = PermissionFilterStrategy.ENTERPRISE_BASED
- out_biz_no: Mapped[str | None] = mapped_column(
- String(64), unique=True, index=True, comment="商家侧订单号"
- )
- account_book_id: Mapped[str | None] = mapped_column(
- String(64), comment="付款方资金专户号"
- )
- amount: Mapped[Decimal | None] = mapped_column(
- Numeric(12, 2), comment="转账金额"
- )
- order_title: Mapped[str | None] = mapped_column(
- String(64), comment="转账标题"
- )
- payee_info: Mapped[dict | None] = mapped_column(
- JSON, comment="收款方信息"
- )
- payee_type: Mapped[str | None] = mapped_column(
- String(32), index=True, comment="收款方类型: ALIPAY_ACCOUNT/BANK_CARD/BOOK"
- )
- status: Mapped[str] = mapped_column(
- String(32),
- default=TransferStatusEnum.DEALING.value,
- comment="转账状态: DEALING/SUCCESS/FAIL/REFUND"
- )
- order_no: Mapped[str | None] = mapped_column(
- String(64), comment="支付宝转账单号"
- )
- fund_order_id: Mapped[str | None] = mapped_column(
- String(64), comment="宝支付资金流水号"
- )
- error_code: Mapped[str | None] = mapped_column(
- String(64), comment="错误码"
- )
- error_msg: Mapped[str | None] = mapped_column(
- Text, comment="错误信息"
- )
- ext_info: Mapped[dict | None] = mapped_column(
- JSON, comment="扩展信息"
- )
- remark: Mapped[str | None] = mapped_column(Text, comment="备注")
- class DepositModel(PaymentModelMixin, TenantMixin, EnterpriseMixin):
- """充值记录模型"""
- __tablename__ = "pay_deposit"
- __table_args__ = {"comment": "充值记录表"}
- __permission_strategy__ = PermissionFilterStrategy.ENTERPRISE_BASED
- out_biz_no: Mapped[str | None] = mapped_column(
- String(64), unique=True, index=True, comment="商家侧订单号"
- )
- account_book_id: Mapped[str | None] = mapped_column(
- String(64), comment="资金专户号"
- )
- amount: Mapped[Decimal | None] = mapped_column(
- Numeric(12, 2), comment="充值金额"
- )
- url: Mapped[str | None] = mapped_column(
- Text, comment="充值确认页面URL"
- )
- status: Mapped[str] = mapped_column(
- String(32),
- default=DepositStatusEnum.DEALING.value,
- comment="充值状态: DEALING/SUCCESS/FAIL"
- )
- notify_content: Mapped[dict | None] = mapped_column(
- JSON, comment="通知内容原始数据"
- )
- remark: Mapped[str | None] = mapped_column(Text, comment="备注")
- class WithdrawModel(PaymentModelMixin, TenantMixin, EnterpriseMixin):
- """提现记录模型"""
- __tablename__ = "pay_withdraw"
- __table_args__ = {"comment": "提现记录表"}
- __permission_strategy__ = PermissionFilterStrategy.ENTERPRISE_BASED
- out_biz_no: Mapped[str | None] = mapped_column(
- String(64), unique=True, index=True, comment="商家侧订单号"
- )
- account_book_id: Mapped[str | None] = mapped_column(
- String(64), comment="资金专户号"
- )
- amount: Mapped[Decimal | None] = mapped_column(
- Numeric(12, 2), comment="提现金额"
- )
- status: Mapped[str] = mapped_column(
- String(32),
- default=WithdrawStatusEnum.DEALING.value,
- comment="提现状态: DEALING/SUCCESS/FAIL"
- )
- order_no: Mapped[str | None] = mapped_column(
- String(64), comment="支付宝提现单号"
- )
- notify_content: Mapped[dict | None] = mapped_column(
- JSON, comment="通知内容原始数据"
- )
- error_code: Mapped[str | None] = mapped_column(
- String(64), comment="错误码"
- )
- error_msg: Mapped[str | None] = mapped_column(
- Text, comment="错误信息"
- )
- remark: Mapped[str | None] = mapped_column(Text, comment="备注")
|