65 lines
2.0 KiB
Python
65 lines
2.0 KiB
Python
|
|
"""
|
|||
|
|
主播管理相关路由
|
|||
|
|
"""
|
|||
|
|
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
|