""" 卡密模型 """ from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, SmallInteger, Numeric from sqlalchemy.orm import relationship from app.database import Base class Card(Base): """卡密表""" __tablename__ = "cards" id = Column(Integer, primary_key=True, index=True, comment="主键ID") card_code = Column(String(32), unique=True, nullable=False, index=True, comment="卡密代码") software_code = Column(String(50), nullable=False, index=True, comment="软件特征码") days = Column(Integer, nullable=False, comment="天数") discount = Column(Numeric(5, 2), default=1.00, comment="折扣") user_id = Column(Integer, ForeignKey("users.id"), index=True, comment="激活用户ID") activated_at = Column(DateTime, comment="激活时间") expire_time = Column(DateTime, index=True, comment="到期时间") status = Column(SmallInteger, default=0, index=True, comment="状态:0-未激活,1-已激活,2-已过期") is_gift = Column(SmallInteger, default=0, index=True, comment="是否赠送卡密:0-收费,1-赠送") is_extracted = Column(SmallInteger, default=0, index=True, comment="是否已提取:0-未提取,1-已提取") special_close = Column(SmallInteger, default=0, index=True, comment="特殊关闭:0-关闭,1-打开") issue_price = Column(Numeric(10, 2), nullable=True, comment="发放价格") issued_to = Column(String(200), nullable=True, comment="发放给谁(文本)") issue_remark = Column(String(500), nullable=True, comment="发放备注") issued_at = Column(DateTime, index=True, nullable=True, comment="发放时间") issued_admin_id = Column(Integer, index=True, nullable=True, comment="发放管理员ID") remark = Column(String(500), nullable=True, comment="备注") is_deleted = Column(SmallInteger, default=0, index=True, comment="是否删除:0-否,1-是") is_revoked = Column(SmallInteger, default=0, index=True, comment="是否已注销:0-否,1-是") revoked_at = Column(DateTime, index=True, nullable=True, comment="注销时间") revoked_reason = Column(String(500), nullable=True, comment="注销原因") revoked_admin_id = Column(Integer, index=True, nullable=True, comment="注销管理员ID") created_at = Column(DateTime, comment="创建时间") updated_at = Column(DateTime, comment="更新时间") # 关系 user = relationship("User", foreign_keys=[user_id]) # 激活该卡密的用户(多对一) recharge_records = relationship("RechargeRecord", back_populates="card")