feat:新增基金产品列表接口,历史业绩接口,客户注册提交接口,问卷提交接口

This commit is contained in:
2026-09-10 23:19:25 +08:00
parent 0a2f0cb146
commit 9cb0747303
15 changed files with 656 additions and 0 deletions
+49
View File
@@ -0,0 +1,49 @@
"""产品路由:列表 + 历史业绩(匿名可访问,业务在 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)
+23
View File
@@ -0,0 +1,23 @@
"""问卷路由:风险测评提交(需登录,业务在 service/questionnaire.py)。"""
from fastapi import APIRouter, Depends
from sqlalchemy.ext.asyncio import AsyncSession
from api.deps import get_current_user
from config.deps import get_db
from model.sys_user import SysUser
from schemas.questionnaire import RiskAssessmentSubmitReq
from service.questionnaire import submit_assessment
from utils.response import success
router = APIRouter()
@router.post("/risk-assessment/submit")
async def submit(
body: RiskAssessmentSubmitReq,
user: SysUser = Depends(get_current_user),
db: AsyncSession = Depends(get_db),
):
answers = [a.model_dump() for a in body.answers]
data = await submit_assessment(db, user.id, body.questionnaire_id, answers)
return success(data)