File size: 2,444 Bytes
d5dffcf
 
 
d3ae963
 
 
 
 
c76aa8d
d3ae963
d5dffcf
 
 
 
 
 
 
d3ae963
d5dffcf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d3ae963
d5dffcf
d3ae963
 
 
d5dffcf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90d7999
 
 
 
 
 
71ce6d2
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
from pydantic import BaseModel
from typing import Optional

# 【新增】:发送验证码的请求模型
class SendCodeRequest(BaseModel):
    contact: str
    contact_type: str  # "email" 或 "phone"
    action_type: str   # "register" 或 "reset"
    account: Optional[str] = None  # 【新增】:仅重置密码时需要传,用于校验身份

class UserRegister(BaseModel):
    account: str   
    password: str  
    email: str     
    phone: 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
    verify_contact: str # 【新增】:接收验证码的邮箱或手机号
    verify_type: str    # 【新增】:"email" 或 "phone"
    code: str           # 【新增】:重置验证码

class InteractionToggle(BaseModel):
    item_id: str
    user_id: str 
    action_type: str 
    is_active: bool

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
    author: str 
    price: float = 0.0

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 ItemUpdate(BaseModel):
    title: Optional[str] = None
    shortDesc: Optional[str] = None
    fullDesc: Optional[str] = None
    link: Optional[str] = None
    coverUrl: Optional[str] = None
    price: Optional[float] = None