Files
shanxia2.0/backend/app/api/monitor.py
T
2026-06-01 08:21:21 +08:00

64 lines
2.1 KiB
Python

"""监控模块接口(操作日志等)"""
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))