baoxiang/backend/app/models/streamer.py
2025-12-16 18:06:50 +08:00

50 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
主播相关模型
"""
from sqlalchemy import Column, Integer, String, BigInteger, Enum, DateTime, Text, DECIMAL, ForeignKey, func
from sqlalchemy.dialects.mysql import TINYINT
from enum import Enum as PyEnum
from .base import Base
class StreamerStatus(PyEnum):
"""主播状态"""
ACTIVE = "ACTIVE"
SUSPENDED = "SUSPENDED"
BANNED = "BANNED"
class StreamerProfile(Base):
"""主播配置表"""
__tablename__ = "streamer_profiles"
id = Column(Integer, primary_key=True, autoincrement=True, index=True)
user_id = Column(Integer, unique=True, nullable=False, comment="用户ID")
display_name = Column(String(64), comment="主播展示名称")
avatar_url = Column(String(255), comment="主播头像")
bio = Column(Text, comment="主播简介")
commission_rate = Column(DECIMAL(5, 2), default=5.00, comment="主播抽成比例(%)")
max_active_chests = Column(Integer, default=10, comment="最大活跃宝箱数")
total_chests = Column(Integer, default=0, comment="历史宝箱总数")
total_winnings = Column(DECIMAL(15, 2), default=0.00, comment="历史获奖总额(分)")
status = Column(Enum(StreamerStatus, native_enum=True), default=StreamerStatus.ACTIVE, comment="主播状态")
created_at = Column(DateTime, server_default=func.now(), comment="创建时间")
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now(), comment="更新时间")
# 外键关系
# user = relationship("User", back_populates="streamer_profile", uselist=False)
class UserOperationLog(Base):
"""用户操作日志表"""
__tablename__ = "user_operation_logs"
id = Column(Integer, primary_key=True, autoincrement=True, index=True)
user_id = Column(Integer, nullable=False, comment="操作用户ID")
operator_id = Column(Integer, comment="操作人ID管理员")
operation_type = Column(String(64), nullable=False, comment="操作类型")
operation_details = Column(Text, comment="操作详情(JSON格式)")
ip_address = Column(String(45), comment="IP地址")
created_at = Column(DateTime, server_default=func.now(), comment="创建时间")