Files
Mutual_Fund/api/advisor/audit.py
T

55 lines
1.9 KiB
Python
Raw Normal View History

2026-09-12 20:42:33 +08:00
"""审计台账路由(业务在 service/advisor/audit.py)。导出为 CSV 下载。"""
from datetime import datetime
from fastapi import APIRouter, Depends, Query
from fastapi.responses import Response
from sqlalchemy.ext.asyncio import AsyncSession
from api.deps import require_advisor
from config.deps import get_db
from model.sys_user import SysUser
from service.advisor import audit as audit_service
from utils.response import success
router = APIRouter()
@router.get("/audit/ledger", summary="本人审计台账筛选")
async def ledger(
action: str | None = Query(None, max_length=64),
2026-09-13 16:19:24 +08:00
customer_id: int | None = Query(None, gt=0),
2026-09-12 20:42:33 +08:00
keyword: str | None = Query(None, max_length=128),
start: datetime | None = Query(None),
end: datetime | None = Query(None),
page: int = Query(1, ge=1),
2026-09-13 22:21:49 +08:00
page_size: int = Query(10, ge=1, le=100),
2026-09-12 20:42:33 +08:00
user: SysUser = Depends(require_advisor),
db: AsyncSession = Depends(get_db),
):
return success(
await audit_service.list_ledger(
2026-09-13 16:19:24 +08:00
db, user, action=action, customer_id=customer_id, keyword=keyword, start=start, end=end,
2026-09-12 20:42:33 +08:00
page=page, page_size=page_size,
)
)
@router.get("/audit/export", summary="导出本人审计台账(CSV)")
async def export(
action: str | None = Query(None, max_length=64),
2026-09-13 16:19:24 +08:00
customer_id: int | None = Query(None, gt=0),
2026-09-12 20:42:33 +08:00
keyword: str | None = Query(None, max_length=128),
start: datetime | None = Query(None),
end: datetime | None = Query(None),
user: SysUser = Depends(require_advisor),
db: AsyncSession = Depends(get_db),
):
csv_text = await audit_service.export_ledger(
2026-09-13 16:19:24 +08:00
db, user, action=action, customer_id=customer_id, keyword=keyword, start=start, end=end
2026-09-12 20:42:33 +08:00
)
return Response(
content=csv_text,
media_type="text/csv; charset=utf-8",
headers={"Content-Disposition": 'attachment; filename="advisor_audit.csv"'},
)