baoxiang/backend/app/schemas/streamer.py

74 lines
1.5 KiB
Python
Raw Normal View History

2025-12-16 18:06:50 +08:00
"""
主播相关Schema
"""
from pydantic import BaseModel, Field
from typing import Optional
from datetime import datetime
from decimal import Decimal
class StreamerProfileBase(BaseModel):
display_name: Optional[str] = None
bio: Optional[str] = None
commission_rate: Optional[Decimal] = Field(default=5.00, ge=0, le=100, description="主播抽成比例(%)")
max_active_chests: Optional[int] = Field(default=10, ge=1, le=100, description="最大活跃宝箱数")
class StreamerProfileCreate(StreamerProfileBase):
user_id: int
class StreamerProfileUpdate(StreamerProfileBase):
status: Optional[str] = None
class StreamerProfileResponse(StreamerProfileBase):
id: int
user_id: int
avatar_url: Optional[str] = None
total_chests: int
total_winnings: Decimal
status: str
created_at: datetime
class Config:
from_attributes = True
class StreamerStatistics(BaseModel):
total_chests: int
active_chests: int
total_winnings: int
total_commission: int
average_chest_value: int
success_rate: float
class StreamerChestList(BaseModel):
"""主播宝箱列表项"""
id: int
title: str
status: str
pool_a: int
pool_b: int
total_bets: int
created_at: datetime
class Config:
from_attributes = True
class StreamerBetRecord(BaseModel):
"""主播下注记录"""
id: int
user_id: int
chest_id: int
option: str
amount: int
payout: int
status: str
created_at: datetime
class Config:
from_attributes = True