|
|
|
|
@ -61,8 +61,9 @@ def get_user_detail(user_id):
|
|
|
|
|
total_tasks = Task.query.filter_by(user_id=user_id).count()
|
|
|
|
|
# 查找用户的所有图片
|
|
|
|
|
user_tasks = Task.query.filter_by(user_id=user_id).all()
|
|
|
|
|
task_ids = [task.task_id for task in user_tasks]
|
|
|
|
|
total_images = Image.query.filter_by(task_id in (task_ids)).count()
|
|
|
|
|
task_ids = [task.tasks_id for task in user_tasks]
|
|
|
|
|
total_images = Image.query.filter(Image.task_id.in_(task_ids)).count() if task_ids else 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
user_dict = user.to_dict()
|
|
|
|
|
user_dict['stats'] = {
|
|
|
|
|
@ -101,11 +102,15 @@ def create_user():
|
|
|
|
|
if email and User.query.filter_by(email=email).first():
|
|
|
|
|
return jsonify({'error': '邮箱已被使用'}), 400
|
|
|
|
|
|
|
|
|
|
# 角色映射
|
|
|
|
|
role_map = {'admin': 1, 'vip': 2, 'normal': 3, 'user': 3}
|
|
|
|
|
role_id = role_map.get(role_code, 3)
|
|
|
|
|
|
|
|
|
|
# 创建用户
|
|
|
|
|
user = User(
|
|
|
|
|
username=username,
|
|
|
|
|
email=email,
|
|
|
|
|
role_id=User.role_to_id(role),
|
|
|
|
|
role_id=role_id,
|
|
|
|
|
)
|
|
|
|
|
user.set_password(password)
|
|
|
|
|
|
|
|
|
|
@ -200,17 +205,25 @@ def delete_user(user_id):
|
|
|
|
|
def get_system_stats():
|
|
|
|
|
"""获取系统统计信息"""
|
|
|
|
|
try:
|
|
|
|
|
from app.database import EvaluationResult
|
|
|
|
|
from app.database import TaskStatus
|
|
|
|
|
|
|
|
|
|
total_users = User.query.count()
|
|
|
|
|
active_users = User.query.filter_by(is_active = True).count()
|
|
|
|
|
admin_users = User.query.filter_by(role_id = 0).count()
|
|
|
|
|
active_users = User.query.filter_by(is_active=True).count()
|
|
|
|
|
admin_users = User.query.filter_by(role_id=1).count()
|
|
|
|
|
|
|
|
|
|
total_tasks = Task.query.count()
|
|
|
|
|
completed_tasks = Task.query.filter_by(status='completed').count()
|
|
|
|
|
processing_tasks = Task.query.filter_by(status='processing').count()
|
|
|
|
|
failed_tasks = Task.query.filter_by(status='failed').count()
|
|
|
|
|
waiting_tasks = Task.query.filter_by(status='waiting').count()
|
|
|
|
|
|
|
|
|
|
# 通过 TaskStatus 表查询各状态的任务数
|
|
|
|
|
def count_tasks_by_status(status_code):
|
|
|
|
|
status = TaskStatus.query.filter_by(task_status_code=status_code).first()
|
|
|
|
|
if status:
|
|
|
|
|
return Task.query.filter_by(tasks_status_id=status.task_status_id).count()
|
|
|
|
|
return 0
|
|
|
|
|
|
|
|
|
|
completed_tasks = count_tasks_by_status('completed')
|
|
|
|
|
processing_tasks = count_tasks_by_status('processing')
|
|
|
|
|
failed_tasks = count_tasks_by_status('failed')
|
|
|
|
|
waiting_tasks = count_tasks_by_status('waiting')
|
|
|
|
|
|
|
|
|
|
total_images = Image.query.count()
|
|
|
|
|
|
|
|
|
|
|