first commit

This commit is contained in:
xuyong
2026-04-15 21:35:26 +08:00
commit 7097fa6b44
69 changed files with 5642 additions and 0 deletions

42
app/api/v1/wallet.py Normal file
View File

@@ -0,0 +1,42 @@
from typing import List
from fastapi import APIRouter, Depends, Query
from sqlalchemy.ext.asyncio import AsyncSession
from app.core.database import get_db
from app.core.dependencies import get_current_user
from app.models import User
from app.services.wallet_service import WalletService
from app.datamodels.schemas import (
BalanceResponse, RedeemCodeRequest, TransactionResponse,
)
router = APIRouter(prefix="/wallet", tags=["wallet"])
@router.get("/balance", response_model=BalanceResponse)
async def get_balance(
user: User = Depends(get_current_user),
db: AsyncSession = Depends(get_db),
):
balance = await WalletService.get_balance(db, user.id)
return {"balance": balance}
@router.post("/redeem", response_model=TransactionResponse)
async def redeem_code(
body: RedeemCodeRequest,
user: User = Depends(get_current_user),
db: AsyncSession = Depends(get_db),
):
return await WalletService.redeem_code(db, user.id, body.code)
@router.get("/transactions", response_model=List[TransactionResponse])
async def list_transactions(
page: int = Query(1, ge=1),
size: int = Query(20, ge=1, le=100),
user: User = Depends(get_current_user),
db: AsyncSession = Depends(get_db),
):
return await WalletService.list_transactions(db, user.id, page, size)