Files
Mutual_Fund/api/advisor/audit.py
T
2026-09-13 22:21:49 +08:00

55 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""审计台账路由(业务在 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),
customer_id: int | None = Query(None, gt=0),
keyword: str | None = Query(None, max_length=128),
start: datetime | None = Query(None),
end: datetime | None = Query(None),
page: int = Query(1, ge=1),
page_size: int = Query(10, ge=1, le=100),
user: SysUser = Depends(require_advisor),
db: AsyncSession = Depends(get_db),
):
return success(
await audit_service.list_ledger(
db, user, action=action, customer_id=customer_id, keyword=keyword, start=start, end=end,
page=page, page_size=page_size,
)
)
@router.get("/audit/export", summary="导出本人审计台账(CSV)")
async def export(
action: str | None = Query(None, max_length=64),
customer_id: int | None = Query(None, gt=0),
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(
db, user, action=action, customer_id=customer_id, keyword=keyword, start=start, end=end
)
return Response(
content=csv_text,
media_type="text/csv; charset=utf-8",
headers={"Content-Disposition": 'attachment; filename="advisor_audit.csv"'},
)