logs.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from typing import Any, List
  2. from datetime import datetime
  3. from fastapi import APIRouter, Depends, HTTPException, Query
  4. from sqlalchemy.orm import Session
  5. from app.api.v1 import deps
  6. from app.models.user import User, UserRole
  7. from app.schemas.operation_log import OperationLogList, ActionType
  8. from app.services.log_service import LogService
  9. router = APIRouter()
  10. @router.get("/", response_model=OperationLogList, summary="查询操作日志")
  11. def read_logs(
  12. skip: int = 0,
  13. limit: int = 20,
  14. app_id: int = None, # Optional, filter by app
  15. action_type: ActionType = None,
  16. operator_id: int = None,
  17. keyword: str = None, # Search target mobile
  18. start_date: datetime = None,
  19. end_date: datetime = None,
  20. db: Session = Depends(deps.get_db),
  21. current_user: User = Depends(deps.get_current_active_user),
  22. ):
  23. """
  24. 查询操作日志。
  25. 只有超级管理员可以查看所有日志。
  26. """
  27. if current_user.role != UserRole.SUPER_ADMIN:
  28. raise HTTPException(status_code=403, detail="权限不足")
  29. total, items = LogService.get_logs(
  30. db=db,
  31. skip=skip,
  32. limit=limit,
  33. app_id=app_id,
  34. action_type=action_type,
  35. operator_id=operator_id,
  36. keyword=keyword,
  37. start_date=start_date,
  38. end_date=end_date
  39. )
  40. return {"total": total, "items": items}