feat: 新增平台
This commit is contained in:
@@ -159,3 +159,73 @@ class HealthCheckLog(db.Model):
|
||||
response_time = db.Column(db.Integer)
|
||||
error_message = db.Column(db.Text)
|
||||
checked_at = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
|
||||
|
||||
class UserApiKey(db.Model):
|
||||
"""用户 API Key"""
|
||||
__tablename__ = 'user_api_keys'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
|
||||
name = db.Column(db.String(100), nullable=False) # Key 名称,方便用户区分
|
||||
api_key = db.Column(db.String(64), unique=True, nullable=False) # API Key
|
||||
is_active = db.Column(db.Boolean, default=True)
|
||||
daily_limit = db.Column(db.Integer, default=100) # 每日调用限制
|
||||
total_calls = db.Column(db.Integer, default=0) # 总调用次数
|
||||
last_used_at = db.Column(db.DateTime) # 最后使用时间
|
||||
last_used_ip = db.Column(db.String(45)) # 最后使用IP
|
||||
created_at = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
||||
|
||||
user = db.relationship('User', backref='api_keys')
|
||||
|
||||
|
||||
class ApiKeyDailyStat(db.Model):
|
||||
"""API Key 每日统计"""
|
||||
__tablename__ = 'api_key_daily_stats'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
api_key_id = db.Column(db.Integer, db.ForeignKey('user_api_keys.id'), nullable=False)
|
||||
date = db.Column(db.Date, nullable=False)
|
||||
call_count = db.Column(db.Integer, default=0)
|
||||
success_count = db.Column(db.Integer, default=0)
|
||||
fail_count = db.Column(db.Integer, default=0)
|
||||
created_at = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
||||
|
||||
api_key = db.relationship('UserApiKey', backref='daily_stats')
|
||||
|
||||
|
||||
class RedeemCode(db.Model):
|
||||
"""兑换码"""
|
||||
__tablename__ = 'redeem_codes'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
code = db.Column(db.String(32), unique=True, nullable=False) # 兑换码
|
||||
batch_id = db.Column(db.String(32)) # 批次ID,用于批量管理
|
||||
target_group_id = db.Column(db.Integer, db.ForeignKey('user_groups.id'), nullable=False) # 兑换后的用户组
|
||||
duration_days = db.Column(db.Integer, default=30) # 有效期天数
|
||||
is_used = db.Column(db.Boolean, default=False) # 是否已使用
|
||||
used_by = db.Column(db.Integer, db.ForeignKey('users.id')) # 使用者
|
||||
used_at = db.Column(db.DateTime) # 使用时间
|
||||
expires_at = db.Column(db.DateTime) # 兑换码过期时间
|
||||
remark = db.Column(db.String(255)) # 备注
|
||||
created_at = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
|
||||
target_group = db.relationship('UserGroup', backref='redeem_codes')
|
||||
user = db.relationship('User', backref='redeemed_codes')
|
||||
|
||||
|
||||
class UserGroupExpiry(db.Model):
|
||||
"""用户组到期时间记录"""
|
||||
__tablename__ = 'user_group_expiry'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False, unique=True)
|
||||
group_id = db.Column(db.Integer, db.ForeignKey('user_groups.id'), nullable=False)
|
||||
expires_at = db.Column(db.DateTime, nullable=False) # 到期时间
|
||||
created_at = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
||||
|
||||
user = db.relationship('User', backref='group_expiry')
|
||||
group = db.relationship('UserGroup')
|
||||
|
||||
Reference in New Issue
Block a user