2026-03-18 17:18:23 +08:00
|
|
|
"""
|
|
|
|
|
订阅计划路由。
|
|
|
|
|
"""
|
2026-03-19 14:36:14 +08:00
|
|
|
|
2026-05-22 13:44:50 +08:00
|
|
|
from fastapi import APIRouter
|
2026-03-18 17:18:23 +08:00
|
|
|
|
2026-05-22 13:44:50 +08:00
|
|
|
from app.core.openapi import error_responses
|
|
|
|
|
from app.features.plan.deps import CurrentUserDep, PlanServiceDep
|
2026-03-18 17:18:23 +08:00
|
|
|
from app.features.plan.schemas import CurrentPlanResponse, PlanResponse
|
|
|
|
|
|
|
|
|
|
router = APIRouter(
|
|
|
|
|
prefix="/api/plans",
|
|
|
|
|
tags=["plans"],
|
2026-05-22 13:44:50 +08:00
|
|
|
responses=error_responses(401, 404),
|
2026-03-18 17:18:23 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2026-05-22 13:44:50 +08:00
|
|
|
@router.get("", response_model=list[PlanResponse])
|
|
|
|
|
def get_plans(service: PlanServiceDep) -> list[PlanResponse]:
|
2026-03-18 17:18:23 +08:00
|
|
|
"""获取所有可用的订阅计划(开发环境 ENABLE_TEST_PLAN=1 时包含「一分钱测试版」)。"""
|
2026-05-22 13:44:50 +08:00
|
|
|
return service.get_plans_for_api()
|
2026-03-18 17:18:23 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.get("/current", response_model=CurrentPlanResponse)
|
|
|
|
|
async def get_current_plan(
|
2026-05-22 13:44:50 +08:00
|
|
|
current_user: CurrentUserDep,
|
|
|
|
|
service: PlanServiceDep,
|
|
|
|
|
) -> CurrentPlanResponse:
|
2026-03-18 17:18:23 +08:00
|
|
|
"""获取当前用户的订阅计划信息"""
|
|
|
|
|
return await service.get_current_plan_response(current_user)
|