Files
Mutual_Fund/api/routers/product.py
T

50 lines
1.5 KiB
Python

"""产品路由:列表 + 历史业绩(匿名可访问,业务在 service/product.py)。"""
from datetime import date
from fastapi import APIRouter, Depends, Query
from sqlalchemy.ext.asyncio import AsyncSession
from config.deps import get_db
from service.product import get_history, list_products
from utils.response import success
router = APIRouter()
@router.get("/products")
async def products(
page: int = Query(1, ge=1),
page_size: int = Query(10, ge=1, le=100),
keyword: str | None = Query(None, max_length=64),
product_type: str | None = Query(None, max_length=32),
risk_level: str | None = Query(None, max_length=8),
status: str = Query("在售", max_length=16),
sort_by: str = Query("create_time", max_length=32),
sort_order: str = Query("desc", max_length=4),
db: AsyncSession = Depends(get_db),
):
data = await list_products(
db,
page=page,
page_size=page_size,
keyword=keyword,
product_type=product_type,
risk_level=risk_level,
status=status,
sort_by=sort_by,
sort_order=sort_order,
)
return success(data)
@router.get("/products/{product_code}/history")
async def history(
product_code: str,
start_date: date | None = Query(None),
end_date: date | None = Query(None),
series: str = Query("nav", max_length=16),
db: AsyncSession = Depends(get_db),
):
data = await get_history(db, product_code, start_date, end_date, series)
return success(data)