File size: 2,844 Bytes
13f2c73
d5dffcf
2814e79
d5dffcf
d3ae963
 
13f2c73
 
 
d3ae963
d5dffcf
 
 
 
13f2c73
d5dffcf
 
13f2c73
d5dffcf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13f2c73
d5dffcf
13f2c73
 
 
 
d5dffcf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2814e79
d5dffcf
85494ee
4c9deec
d5dffcf
13f2c73
 
 
 
 
 
2814e79
13f2c73
 
 
d5dffcf
 
 
 
 
 
 
 
90d7999
 
 
 
 
 
71ce6d2
 
13f2c73
 
 
 
 
85494ee
13f2c73
85494ee
13f2c73
85494ee
13f2c73
 
85494ee
 
 
012c1d3
 
 
 
 
 
13f2c73
 
 
 
 
 
 
 
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# 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