✨ 添加注册自动审核功能
- 系统配置新增:自动审核开关、每小时注册限制、赠送VIP天数 - 数据库:添加 auto_approve_enabled, auto_approve_hourly_limit, auto_approve_vip_days 字段 - 后端API:支持保存和读取自动审核配置 - 管理后台:新增注册自动审核配置区域(绿色背景) - 注册逻辑:支持自动审核通过并赠送VIP 功能说明: 1. 启用自动审核后,新用户注册自动通过,无需管理员审批 2. 每小时注册限制防止恶意注册 3. 可配置注册赠送VIP天数(设为0则不赠送) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
48
database.py
48
database.py
@@ -111,6 +111,9 @@ def init_database():
|
||||
proxy_api_url TEXT DEFAULT '',
|
||||
proxy_expire_minutes INTEGER DEFAULT 3,
|
||||
enable_screenshot INTEGER DEFAULT 1,
|
||||
auto_approve_enabled INTEGER DEFAULT 0,
|
||||
auto_approve_hourly_limit INTEGER DEFAULT 10,
|
||||
auto_approve_vip_days INTEGER DEFAULT 7,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
)
|
||||
''')
|
||||
@@ -236,8 +239,9 @@ def init_database():
|
||||
INSERT INTO system_config (
|
||||
id, max_concurrent_global, max_concurrent_per_account, max_screenshot_concurrent,
|
||||
schedule_enabled, schedule_time, schedule_browse_type, schedule_weekdays,
|
||||
proxy_enabled, proxy_api_url, proxy_expire_minutes, enable_screenshot
|
||||
) VALUES (1, 2, 1, 3, 0, '02:00', '应读', '1,2,3,4,5,6,7', 0, '', 3, 1)
|
||||
proxy_enabled, proxy_api_url, proxy_expire_minutes, enable_screenshot,
|
||||
auto_approve_enabled, auto_approve_hourly_limit, auto_approve_vip_days
|
||||
) VALUES (1, 2, 1, 3, 0, '02:00', '应读', '1,2,3,4,5,6,7', 0, '', 3, 1, 0, 10, 7)
|
||||
''')
|
||||
conn.commit()
|
||||
print("✓ 已创建系统配置(默认并发2,定时任务关闭)")
|
||||
@@ -325,6 +329,15 @@ def _migrate_to_v1(conn):
|
||||
if 'max_concurrent_per_account' not in columns:
|
||||
cursor.execute('ALTER TABLE system_config ADD COLUMN max_concurrent_per_account INTEGER DEFAULT 1')
|
||||
print(" ✓ 添加 max_concurrent_per_account 字段")
|
||||
if 'auto_approve_enabled' not in columns:
|
||||
cursor.execute('ALTER TABLE system_config ADD COLUMN auto_approve_enabled INTEGER DEFAULT 0')
|
||||
print(" ✓ 添加 auto_approve_enabled 字段")
|
||||
if 'auto_approve_hourly_limit' not in columns:
|
||||
cursor.execute('ALTER TABLE system_config ADD COLUMN auto_approve_hourly_limit INTEGER DEFAULT 10')
|
||||
print(" ✓ 添加 auto_approve_hourly_limit 字段")
|
||||
if 'auto_approve_vip_days' not in columns:
|
||||
cursor.execute('ALTER TABLE system_config ADD COLUMN auto_approve_vip_days INTEGER DEFAULT 7')
|
||||
print(" ✓ 添加 auto_approve_vip_days 字段")
|
||||
|
||||
# 检查并添加 duration 字段到 task_logs
|
||||
cursor.execute("PRAGMA table_info(task_logs)")
|
||||
@@ -980,14 +993,18 @@ def get_system_config():
|
||||
'proxy_enabled': 0,
|
||||
'proxy_api_url': '',
|
||||
'proxy_expire_minutes': 3,
|
||||
'enable_screenshot': 1
|
||||
'enable_screenshot': 1,
|
||||
'auto_approve_enabled': 0,
|
||||
'auto_approve_hourly_limit': 10,
|
||||
'auto_approve_vip_days': 7
|
||||
}
|
||||
|
||||
|
||||
def update_system_config(max_concurrent=None, schedule_enabled=None, schedule_time=None,
|
||||
schedule_browse_type=None, schedule_weekdays=None,
|
||||
max_concurrent_per_account=None, max_screenshot_concurrent=None, proxy_enabled=None,
|
||||
proxy_api_url=None, proxy_expire_minutes=None):
|
||||
proxy_api_url=None, proxy_expire_minutes=None,
|
||||
auto_approve_enabled=None, auto_approve_hourly_limit=None, auto_approve_vip_days=None):
|
||||
"""更新系统配置"""
|
||||
with db_pool.get_db() as conn:
|
||||
cursor = conn.cursor()
|
||||
@@ -1034,6 +1051,18 @@ def update_system_config(max_concurrent=None, schedule_enabled=None, schedule_ti
|
||||
updates.append('proxy_expire_minutes = ?')
|
||||
params.append(proxy_expire_minutes)
|
||||
|
||||
if auto_approve_enabled is not None:
|
||||
updates.append('auto_approve_enabled = ?')
|
||||
params.append(auto_approve_enabled)
|
||||
|
||||
if auto_approve_hourly_limit is not None:
|
||||
updates.append('auto_approve_hourly_limit = ?')
|
||||
params.append(auto_approve_hourly_limit)
|
||||
|
||||
if auto_approve_vip_days is not None:
|
||||
updates.append('auto_approve_vip_days = ?')
|
||||
params.append(auto_approve_vip_days)
|
||||
|
||||
if updates:
|
||||
updates.append('updated_at = CURRENT_TIMESTAMP')
|
||||
sql = f"UPDATE system_config SET {', '.join(updates)} WHERE id = 1"
|
||||
@@ -1044,6 +1073,17 @@ def update_system_config(max_concurrent=None, schedule_enabled=None, schedule_ti
|
||||
return False
|
||||
|
||||
|
||||
def get_hourly_registration_count():
|
||||
"""获取最近一小时内的注册用户数"""
|
||||
with db_pool.get_db() as conn:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute('''
|
||||
SELECT COUNT(*) FROM users
|
||||
WHERE created_at >= datetime('now', '-1 hour')
|
||||
''')
|
||||
return cursor.fetchone()[0]
|
||||
|
||||
|
||||
# ==================== 任务日志管理 ====================
|
||||
|
||||
def create_task_log(user_id, account_id, username, browse_type, status,
|
||||
|
||||
Reference in New Issue
Block a user