""" 主播管理相关路由 """ from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from typing import List from ..core.database import get_db from ..schemas.user import UserResponse from ..schemas.game import ChestResponse, BetResponse from ..services.user_service import UserService from ..services.game_service import GameService from ..utils.deps import get_current_admin router = APIRouter(prefix="/api/streamers", tags=["streamers"]) @router.get("/", response_model=List[UserResponse]) def get_streamers( skip: int = 0, limit: int = 100, db: Session = Depends(get_db), current_user = Depends(get_current_admin) ): """ 获取主播列表(仅管理员) """ from ..models.user import User, UserRole return db.query(User).filter(User.role == UserRole.STREAMER).offset(skip).limit(limit).all() @router.get("/{streamer_id}/chests", response_model=List[ChestResponse]) def get_streamer_chests( streamer_id: int, skip: int = 0, limit: int = 100, db: Session = Depends(get_db), current_user = Depends(get_current_admin) ): """ 获取主播的宝箱列表(仅管理员) """ chests = db.query(GameService.Chest).filter(GameService.Chest.streamer_id == streamer_id).offset(skip).limit(limit).all() return chests @router.get("/{streamer_id}/bets", response_model=List[BetResponse]) def get_streamer_bets( streamer_id: int, skip: int = 0, limit: int = 100, db: Session = Depends(get_db), current_user = Depends(get_current_admin) ): """ 获取主播相关的下注列表(仅管理员) """ # 获取该主播的所有宝箱ID chest_ids = db.query(GameService.Chest.id).filter(GameService.Chest.streamer_id == streamer_id).all() chest_ids = [cid[0] for cid in chest_ids] if not chest_ids: return [] bets = db.query(GameService.Bet).filter(GameService.Bet.chest_id.in_(chest_ids)).offset(skip).limit(limit).all() return bets