user_software_subscription.py 1.4 KB

123456789101112131415161718192021222324252627
  1. """
  2. 用户-软件订阅关系模型(多软件共用一套用户表)
  3. 同一用户在不同软件下可有独立的卡密与到期时间。
  4. """
  5. from datetime import datetime
  6. from app.utils.timezone import beijing_now_naive
  7. from sqlalchemy import Column, Integer, DateTime, Boolean, UniqueConstraint, ForeignKey
  8. from app.database import Base
  9. class UserSoftwareSubscription(Base):
  10. """用户软件订阅表:user_id + software_id 唯一,存储该用户在该软件下的卡密与到期时间"""
  11. __tablename__ = "user_software_subscription"
  12. id = Column(Integer, primary_key=True, autoincrement=True, comment="主键ID")
  13. user_id = Column(Integer, ForeignKey("users.id"), nullable=False, comment="用户ID")
  14. software_id = Column(Integer, ForeignKey("software.id"), nullable=False, comment="软件ID")
  15. card_id = Column(Integer, nullable=True, comment="当前卡密ID")
  16. expire_time = Column(DateTime, nullable=True, comment="到期时间")
  17. is_deleted = Column(Boolean, default=False, comment="是否删除: 0-否, 1-是")
  18. created_at = Column(DateTime, default=beijing_now_naive, comment="创建时间")
  19. updated_at = Column(DateTime, default=beijing_now_naive, onupdate=beijing_now_naive, comment="更新时间")
  20. __table_args__ = (UniqueConstraint("user_id", "software_id", name="uq_user_software"),)
  21. def __repr__(self):
  22. return f"<UserSoftwareSubscription(user_id={self.user_id}, software_id={self.software_id})>"