"""监控模块接口(操作日志等)""" from __future__ import annotations from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.core.database import get_db from app.core.menu_guard import require_admin_or_super_admin from app.core.response import error_response, success_response from app.crud.monitor.oper_log import get_oper_log, list_oper_logs from app.schemas.monitor.operlog import OperLogDetailBody, OperLogListBody router = APIRouter(prefix="/web/monitor", tags=["系统监控"]) @router.post("/operlog/list") async def operlog_list( body: OperLogListBody = None, _user: dict = Depends(require_admin_or_super_admin), db: Session = Depends(get_db), ): """操作日志分页列表(基于 API 请求日志适配 RuoYi OperLog 结构)""" try: page = body.page if body else 1 page_size = body.page_size if body else 10 rows, total = list_oper_logs( db, page=page, page_size=page_size, title=body.title if body else None, business_type=body.business_type if body else None, oper_name=body.oper_name if body else None, status=body.status if body else None, ) total_pages = (total + page_size - 1) // page_size if page_size else 0 return success_response( { "rows": rows, "list": rows, "total": total, "page": page, "pageSize": page_size, "totalPages": total_pages, } ) except Exception as e: return error_response(500, str(e)) @router.post("/operlog/detail") async def operlog_detail( body: OperLogDetailBody, _user: dict = Depends(require_admin_or_super_admin), db: Session = Depends(get_db), ): """操作日志详情""" try: row = get_oper_log(db, body.id) if not row: return error_response(404, "操作日志不存在") return success_response(row) except Exception as e: return error_response(500, str(e))