monitor.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. """监控模块接口(操作日志等)"""
  2. from __future__ import annotations
  3. from fastapi import APIRouter, Depends
  4. from sqlalchemy.orm import Session
  5. from app.core.database import get_db
  6. from app.core.menu_guard import require_admin_or_super_admin
  7. from app.core.response import error_response, success_response
  8. from app.crud.monitor.oper_log import get_oper_log, list_oper_logs
  9. from app.schemas.monitor.operlog import OperLogDetailBody, OperLogListBody
  10. router = APIRouter(prefix="/web/monitor", tags=["系统监控"])
  11. @router.post("/operlog/list")
  12. async def operlog_list(
  13. body: OperLogListBody = None,
  14. _user: dict = Depends(require_admin_or_super_admin),
  15. db: Session = Depends(get_db),
  16. ):
  17. """操作日志分页列表(基于 API 请求日志适配 RuoYi OperLog 结构)"""
  18. try:
  19. page = body.page if body else 1
  20. page_size = body.page_size if body else 10
  21. rows, total = list_oper_logs(
  22. db,
  23. page=page,
  24. page_size=page_size,
  25. title=body.title if body else None,
  26. business_type=body.business_type if body else None,
  27. oper_name=body.oper_name if body else None,
  28. status=body.status if body else None,
  29. )
  30. total_pages = (total + page_size - 1) // page_size if page_size else 0
  31. return success_response(
  32. {
  33. "rows": rows,
  34. "list": rows,
  35. "total": total,
  36. "page": page,
  37. "pageSize": page_size,
  38. "totalPages": total_pages,
  39. }
  40. )
  41. except Exception as e:
  42. return error_response(500, str(e))
  43. @router.post("/operlog/detail")
  44. async def operlog_detail(
  45. body: OperLogDetailBody,
  46. _user: dict = Depends(require_admin_or_super_admin),
  47. db: Session = Depends(get_db),
  48. ):
  49. """操作日志详情"""
  50. try:
  51. row = get_oper_log(db, body.id)
  52. if not row:
  53. return error_response(404, "操作日志不存在")
  54. return success_response(row)
  55. except Exception as e:
  56. return error_response(500, str(e))