29 lines
998 B
Python
29 lines
998 B
Python
"""会员模块路由(/membership/*,对应《03-接口文档》第 7 章)"""
|
|
from fastapi import APIRouter, Depends
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.core.response import ok
|
|
from app.database import get_db
|
|
from app.deps import Identity, require_user
|
|
from app.schemas.common import RedeemReq
|
|
from app.services import membership_service
|
|
|
|
router = APIRouter(prefix="/membership", tags=["会员"])
|
|
|
|
|
|
@router.get("/plans")
|
|
async def list_plans():
|
|
return ok(membership_service.list_plans())
|
|
|
|
|
|
@router.get("/me")
|
|
async def get_my_membership(db: AsyncSession = Depends(get_db),
|
|
identity: Identity = Depends(require_user)):
|
|
return ok(await membership_service.get_my_membership(db, identity.user_id))
|
|
|
|
|
|
@router.post("/redeem")
|
|
async def redeem(req: RedeemReq, db: AsyncSession = Depends(get_db),
|
|
identity: Identity = Depends(require_user)):
|
|
return ok(await membership_service.redeem(db, identity.user_id, req.plan_code))
|