# models_sql.py from sqlalchemy import Column, Integer, String, DateTime from sqlalchemy.orm import declarative_base import datetime Base = declarative_base() class Wallet(Base): """用户钱包表""" __tablename__ = "wallets" account = Column(String, primary_key=True, index=True) balance = Column(Integer, default=0) # 用于消费的余额 (充值获得) earn_balance = Column(Integer, default=0) # 创作者销售收益余额 (别人购买获得) tip_balance = Column(Integer, default=0) # 【新增】创作者打赏收益余额 (粉丝赞助获得) frozen_balance = Column(Integer, default=0) # 提现审核冻结中的余额 # 乐观锁版本号,防止并发扣款被击穿 version = Column(Integer, default=1) class Ownership(Base): """资源所有权表""" __tablename__ = "ownerships" id = Column(Integer, primary_key=True, autoincrement=True) account = Column(String, index=True) item_id = Column(String, index=True) purchased_at = Column(DateTime, default=datetime.datetime.utcnow) class Transaction(Base): """交易流水表""" __tablename__ = "transactions" tx_id = Column(String, primary_key=True) account = Column(String, index=True) tx_type = Column(String) # 枚举: RECHARGE, PURCHASE, EARN, TIP_SEND, TIP_RECEIVE, WITHDRAW_APPLY amount = Column(Integer) related_account = Column(String, nullable=True) item_id = Column(String, nullable=True) created_at = Column(DateTime, default=datetime.datetime.utcnow) prev_hash = Column(String) # 上一笔订单的哈希 tx_hash = Column(String) # 本笔订单的哈希 (防篡改)