# models.py from pydantic import BaseModel from typing import Optional, List class SendCodeRequest(BaseModel): contact: str contact_type: str action_type: str account: Optional[str] = None class UserRegister(BaseModel): account: str password: str email: str phone: Optional[str] = "" name: str gender: str code: str avatarDataUrl: Optional[str] = None age: Optional[int] = None country: Optional[str] = None region: Optional[str] = None intro: Optional[str] = None class UserLogin(BaseModel): account: str password: str class UserUpdate(BaseModel): name: Optional[str] = None intro: Optional[str] = None age: Optional[int] = None country: Optional[str] = None region: Optional[str] = None gender: Optional[str] = None avatarDataUrl: Optional[str] = None class PasswordReset(BaseModel): old_password: Optional[str] = None new_password: str verifyContact: str verifyType: str code: str account: str class CommentCreate(BaseModel): item_id: str author: str content: str reply_to_user: Optional[str] = None parent_id: Optional[str] = None class ItemCreate(BaseModel): type: str title: str shortDesc: str fullDesc: str link: str coverUrl: Optional[str] = None imageUrls: Optional[List[str]] = [] # 🟢 新增:支持多图展示画廊 author: str price: int = 0 github_token: Optional[str] = None class ItemUpdate(BaseModel): title: Optional[str] = None shortDesc: Optional[str] = None fullDesc: Optional[str] = None link: Optional[str] = None coverUrl: Optional[str] = None imageUrls: Optional[List[str]] = [] # 🟢 新增:支持多图展示画廊 price: Optional[int] = None github_token: Optional[str] = None class FollowToggle(BaseModel): user_id: str target_account: str is_active: bool class PrivateMessage(BaseModel): sender: str receiver: str content: str class PrivacySettings(BaseModel): follows: bool likes: bool favorites: bool downloads: bool class InteractionToggle(BaseModel): item_id: str user_id: str action_type: str is_active: bool # === 资金与钱包专有模型 === class RechargeRequest(BaseModel): account: str amount: int method: Optional[str] = "alipay" class PurchaseRequest(BaseModel): account: str item_id: str class TipRequest(BaseModel): sender_account: str target_account: str amount: int is_anonymous: bool class WithdrawRequest(BaseModel): account: str amount: int alipayAccount: str real_name: str code: str