feat: 统一字段命名风格,使用下划线格式替代驼峰式命名
This commit is contained in:
125
api-spec.yaml
125
api-spec.yaml
@@ -24,15 +24,18 @@ components:
|
||||
message:
|
||||
type: string
|
||||
|
||||
Pagination:
|
||||
Pager:
|
||||
type: object
|
||||
properties:
|
||||
page:
|
||||
type: integer
|
||||
pageSize:
|
||||
limit:
|
||||
type: integer
|
||||
total:
|
||||
type: integer
|
||||
items:
|
||||
type: array
|
||||
items: {} # Generic placeholder
|
||||
|
||||
# --- User Models ---
|
||||
User:
|
||||
@@ -67,7 +70,7 @@ components:
|
||||
points:
|
||||
type: integer
|
||||
readOnly: true
|
||||
isRealNameVerified:
|
||||
is_real_name_verified:
|
||||
type: boolean
|
||||
readOnly: true
|
||||
|
||||
@@ -111,17 +114,17 @@ components:
|
||||
enum: [video, audio, article]
|
||||
price:
|
||||
type: number
|
||||
authorId:
|
||||
author_id:
|
||||
type: string
|
||||
authorName:
|
||||
author_name:
|
||||
type: string
|
||||
authorAvatar:
|
||||
author_avatar:
|
||||
type: string
|
||||
views:
|
||||
type: integer
|
||||
likes:
|
||||
type: integer
|
||||
isPurchased:
|
||||
is_purchased:
|
||||
type: boolean
|
||||
description: User specific state
|
||||
|
||||
@@ -134,7 +137,7 @@ components:
|
||||
type: string
|
||||
body:
|
||||
type: string # HTML/Markdown
|
||||
mediaUrls:
|
||||
media_urls:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
@@ -154,10 +157,10 @@ components:
|
||||
type: string
|
||||
beat:
|
||||
type: string
|
||||
isLiked:
|
||||
is_liked:
|
||||
type: boolean
|
||||
description: User specific state
|
||||
isFavorited:
|
||||
is_favorited:
|
||||
type: boolean
|
||||
description: User specific state
|
||||
|
||||
@@ -168,19 +171,19 @@ components:
|
||||
type: string
|
||||
content:
|
||||
type: string
|
||||
userId:
|
||||
user_id:
|
||||
type: string
|
||||
userNickname:
|
||||
user_nickname:
|
||||
type: string
|
||||
userAvatar:
|
||||
user_avatar:
|
||||
type: string
|
||||
createTime:
|
||||
create_time:
|
||||
type: string
|
||||
likes:
|
||||
type: integer
|
||||
isLiked:
|
||||
is_liked:
|
||||
type: boolean
|
||||
replyTo:
|
||||
reply_to:
|
||||
type: string # Comment ID
|
||||
|
||||
# --- Tenant/Creator Public Profile ---
|
||||
@@ -199,7 +202,7 @@ components:
|
||||
type: string
|
||||
description:
|
||||
type: string
|
||||
certType:
|
||||
cert_type:
|
||||
type: string
|
||||
enum: [personal, enterprise]
|
||||
stats:
|
||||
@@ -211,7 +214,7 @@ components:
|
||||
type: integer
|
||||
likes:
|
||||
type: integer
|
||||
isFollowing:
|
||||
is_following:
|
||||
type: boolean
|
||||
|
||||
# --- Order Models ---
|
||||
@@ -220,10 +223,10 @@ components:
|
||||
properties:
|
||||
id:
|
||||
type: string
|
||||
createTime:
|
||||
create_time:
|
||||
type: string
|
||||
format: date-time
|
||||
payTime:
|
||||
pay_time:
|
||||
type: string
|
||||
format: date-time
|
||||
status:
|
||||
@@ -237,18 +240,18 @@ components:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/ContentItem'
|
||||
tenantId:
|
||||
tenant_id:
|
||||
type: string
|
||||
tenantName:
|
||||
tenant_name:
|
||||
type: string
|
||||
isVirtual:
|
||||
is_virtual:
|
||||
type: boolean
|
||||
|
||||
# --- Creator Dashboard Models ---
|
||||
CreatorStats:
|
||||
type: object
|
||||
properties:
|
||||
totalFollowers:
|
||||
total_followers:
|
||||
type: object
|
||||
properties:
|
||||
value:
|
||||
@@ -256,16 +259,16 @@ components:
|
||||
trend:
|
||||
type: number
|
||||
description: Percentage change (e.g. 1.2 for +1.2%)
|
||||
totalRevenue:
|
||||
total_revenue:
|
||||
type: object
|
||||
properties:
|
||||
value:
|
||||
type: number
|
||||
trend:
|
||||
type: number
|
||||
pendingRefunds:
|
||||
pending_refunds:
|
||||
type: integer
|
||||
newMessages:
|
||||
new_messages:
|
||||
type: integer
|
||||
|
||||
PayoutAccount:
|
||||
@@ -295,7 +298,7 @@ components:
|
||||
type: string
|
||||
size:
|
||||
type: integer
|
||||
mimeType:
|
||||
mime_type:
|
||||
type: string
|
||||
|
||||
security:
|
||||
@@ -367,7 +370,7 @@ paths:
|
||||
in: query
|
||||
schema:
|
||||
type: string
|
||||
- name: tenantId
|
||||
- name: tenant_id
|
||||
in: query
|
||||
schema:
|
||||
type: string
|
||||
@@ -387,14 +390,14 @@ paths:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
data:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/ContentItem'
|
||||
pagination:
|
||||
$ref: '#/components/schemas/Pagination'
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/Pager'
|
||||
- type: object
|
||||
properties:
|
||||
items:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/ContentItem'
|
||||
|
||||
/contents/{id}:
|
||||
get:
|
||||
@@ -433,14 +436,14 @@ paths:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
data:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/Comment'
|
||||
pagination:
|
||||
$ref: '#/components/schemas/Pagination'
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/Pager'
|
||||
- type: object
|
||||
properties:
|
||||
items:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/Comment'
|
||||
post:
|
||||
summary: Post a comment
|
||||
requestBody:
|
||||
@@ -451,7 +454,7 @@ paths:
|
||||
properties:
|
||||
content:
|
||||
type: string
|
||||
replyTo:
|
||||
reply_to:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
@@ -573,7 +576,7 @@ paths:
|
||||
properties:
|
||||
realname:
|
||||
type: string
|
||||
idCard:
|
||||
id_card:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
@@ -630,9 +633,9 @@ paths:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
payParams:
|
||||
pay_params:
|
||||
type: string # QR code or SDK params
|
||||
orderId:
|
||||
order_id:
|
||||
type: string
|
||||
|
||||
/me/orders:
|
||||
@@ -695,7 +698,7 @@ paths:
|
||||
post:
|
||||
summary: Add to favorites
|
||||
parameters:
|
||||
- name: contentId
|
||||
- name: content_id
|
||||
in: query
|
||||
required: true
|
||||
schema:
|
||||
@@ -704,11 +707,11 @@ paths:
|
||||
'200':
|
||||
description: Added
|
||||
|
||||
/me/favorites/{contentId}:
|
||||
/me/favorites/{content_id}:
|
||||
delete:
|
||||
summary: Remove from favorites
|
||||
parameters:
|
||||
- name: contentId
|
||||
- name: content_id
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
@@ -731,7 +734,7 @@ paths:
|
||||
post:
|
||||
summary: Like content
|
||||
parameters:
|
||||
- name: contentId
|
||||
- name: content_id
|
||||
in: query
|
||||
required: true
|
||||
schema:
|
||||
@@ -740,11 +743,11 @@ paths:
|
||||
'200':
|
||||
description: Liked
|
||||
|
||||
/me/likes/{contentId}:
|
||||
/me/likes/{content_id}:
|
||||
delete:
|
||||
summary: Unlike content
|
||||
parameters:
|
||||
- name: contentId
|
||||
- name: content_id
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
@@ -796,7 +799,7 @@ paths:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
contentId:
|
||||
content_id:
|
||||
type: string
|
||||
sku:
|
||||
type: string
|
||||
@@ -810,7 +813,7 @@ paths:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
orderId:
|
||||
order_id:
|
||||
type: string
|
||||
|
||||
/orders/{id}/pay:
|
||||
@@ -838,7 +841,7 @@ paths:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
payParams:
|
||||
pay_params:
|
||||
type: string
|
||||
|
||||
/orders/{id}/status:
|
||||
@@ -931,7 +934,7 @@ paths:
|
||||
type: string
|
||||
price:
|
||||
type: number
|
||||
mediaIds:
|
||||
media_ids:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
@@ -1093,7 +1096,7 @@ paths:
|
||||
method:
|
||||
type: string
|
||||
enum: [wallet, external]
|
||||
accountId:
|
||||
account_id:
|
||||
type: string # Required if method is external
|
||||
responses:
|
||||
'200':
|
||||
@@ -1122,4 +1125,4 @@ paths:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/UploadResult'
|
||||
$ref: '#/components/schemas/UploadResult'
|
||||
@@ -27,7 +27,7 @@ type User struct {
|
||||
Location *Location `json:"location"`
|
||||
Balance float64 `json:"balance"`
|
||||
Points int64 `json:"points"`
|
||||
IsRealNameVerified bool `json:"isRealNameVerified"`
|
||||
IsRealNameVerified bool `json:"is_real_name_verified"`
|
||||
}
|
||||
|
||||
type Location struct {
|
||||
|
||||
@@ -5,5 +5,5 @@ type UploadResult struct {
|
||||
URL string `json:"url"`
|
||||
Filename string `json:"filename"`
|
||||
Size int64 `json:"size"`
|
||||
MimeType string `json:"mimeType"`
|
||||
MimeType string `json:"mime_type"`
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package dto
|
||||
|
||||
import "quyun/v2/app/requests"
|
||||
|
||||
type ContentItem struct {
|
||||
ID string `json:"id"`
|
||||
Title string `json:"title"`
|
||||
@@ -9,22 +7,22 @@ type ContentItem struct {
|
||||
Genre string `json:"genre"`
|
||||
Type string `json:"type"` // video, audio, article
|
||||
Price float64 `json:"price"`
|
||||
AuthorID string `json:"authorId"`
|
||||
AuthorName string `json:"authorName"`
|
||||
AuthorAvatar string `json:"authorAvatar"`
|
||||
AuthorID string `json:"author_id"`
|
||||
AuthorName string `json:"author_name"`
|
||||
AuthorAvatar string `json:"author_avatar"`
|
||||
Views int `json:"views"`
|
||||
Likes int `json:"likes"`
|
||||
IsPurchased bool `json:"isPurchased"`
|
||||
IsPurchased bool `json:"is_purchased"`
|
||||
}
|
||||
|
||||
type ContentDetail struct {
|
||||
ContentItem
|
||||
Description string `json:"description"`
|
||||
Body string `json:"body"`
|
||||
MediaUrls []MediaURL `json:"mediaUrls"`
|
||||
MediaUrls []MediaURL `json:"media_urls"`
|
||||
Meta Meta `json:"meta"`
|
||||
IsLiked bool `json:"isLiked"`
|
||||
IsFavorited bool `json:"isFavorited"`
|
||||
IsLiked bool `json:"is_liked"`
|
||||
IsFavorited bool `json:"is_favorited"`
|
||||
}
|
||||
|
||||
type MediaURL struct {
|
||||
@@ -42,18 +40,18 @@ type Meta struct {
|
||||
type Comment struct {
|
||||
ID string `json:"id"`
|
||||
Content string `json:"content"`
|
||||
UserID string `json:"userId"`
|
||||
UserNickname string `json:"userNickname"`
|
||||
UserAvatar string `json:"userAvatar"`
|
||||
CreateTime string `json:"createTime"`
|
||||
UserID string `json:"user_id"`
|
||||
UserNickname string `json:"user_nickname"`
|
||||
UserAvatar string `json:"user_avatar"`
|
||||
CreateTime string `json:"create_time"`
|
||||
Likes int `json:"likes"`
|
||||
IsLiked bool `json:"isLiked"`
|
||||
ReplyTo string `json:"replyTo"`
|
||||
IsLiked bool `json:"is_liked"`
|
||||
ReplyTo string `json:"reply_to"`
|
||||
}
|
||||
|
||||
type CommentCreateForm struct {
|
||||
Content string `json:"content"`
|
||||
ReplyTo string `json:"replyTo"`
|
||||
ReplyTo string `json:"reply_to"`
|
||||
}
|
||||
|
||||
type Topic struct {
|
||||
@@ -66,9 +64,9 @@ type Topic struct {
|
||||
|
||||
type ContentPrice struct {
|
||||
Currency string `json:"currency"`
|
||||
PriceAmount float64 `json:"priceAmount"`
|
||||
DiscountType string `json:"discountType"`
|
||||
DiscountValue float64 `json:"discountValue"`
|
||||
DiscountStartAt string `json:"discountStartAt"`
|
||||
DiscountEndAt string `json:"discountEndAt"`
|
||||
}
|
||||
PriceAmount float64 `json:"price_amount"`
|
||||
DiscountType string `json:"discount_type"`
|
||||
DiscountValue float64 `json:"discount_value"`
|
||||
DiscountStartAt string `json:"discount_start_at"`
|
||||
DiscountEndAt string `json:"discount_end_at"`
|
||||
}
|
||||
|
||||
@@ -7,10 +7,10 @@ type ApplyForm struct {
|
||||
}
|
||||
|
||||
type DashboardStats struct {
|
||||
TotalFollowers IntStatItem `json:"totalFollowers"`
|
||||
TotalRevenue FloatStatItem `json:"totalRevenue"`
|
||||
PendingRefunds int `json:"pendingRefunds"`
|
||||
NewMessages int `json:"newMessages"`
|
||||
TotalFollowers IntStatItem `json:"total_followers"`
|
||||
TotalRevenue FloatStatItem `json:"total_revenue"`
|
||||
PendingRefunds int `json:"pending_refunds"`
|
||||
NewMessages int `json:"new_messages"`
|
||||
}
|
||||
|
||||
type IntStatItem struct {
|
||||
@@ -27,14 +27,14 @@ type ContentCreateForm struct {
|
||||
Title string `json:"title"`
|
||||
Genre string `json:"genre"`
|
||||
Price float64 `json:"price"`
|
||||
MediaIDs []string `json:"mediaIds"`
|
||||
MediaIDs []string `json:"media_ids"`
|
||||
}
|
||||
|
||||
type ContentUpdateForm struct {
|
||||
Title string `json:"title"`
|
||||
Genre string `json:"genre"`
|
||||
Price float64 `json:"price"`
|
||||
MediaIDs []string `json:"mediaIds"`
|
||||
MediaIDs []string `json:"media_ids"`
|
||||
}
|
||||
|
||||
type RefundForm struct {
|
||||
@@ -61,7 +61,7 @@ type PayoutAccount struct {
|
||||
type WithdrawForm struct {
|
||||
Amount float64 `json:"amount"`
|
||||
Method string `json:"method"` // wallet, external
|
||||
AccountID string `json:"accountId"`
|
||||
AccountID string `json:"account_id"`
|
||||
}
|
||||
|
||||
// Re-export or Wrap
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package dto
|
||||
|
||||
type OrderCreateForm struct {
|
||||
ContentID string `json:"contentId"`
|
||||
ContentID string `json:"content_id"`
|
||||
Sku string `json:"sku"`
|
||||
Quantity int `json:"quantity"`
|
||||
}
|
||||
|
||||
type OrderCreateResponse struct {
|
||||
OrderID string `json:"orderId"`
|
||||
OrderID string `json:"order_id"`
|
||||
}
|
||||
|
||||
type OrderPayForm struct {
|
||||
@@ -15,7 +15,7 @@ type OrderPayForm struct {
|
||||
}
|
||||
|
||||
type OrderPayResponse struct {
|
||||
PayParams string `json:"payParams"`
|
||||
PayParams string `json:"pay_params"`
|
||||
}
|
||||
|
||||
type OrderStatusResponse struct {
|
||||
|
||||
@@ -7,9 +7,9 @@ type TenantProfile struct {
|
||||
Cover string `json:"cover"`
|
||||
Bio string `json:"bio"`
|
||||
Description string `json:"description"`
|
||||
CertType string `json:"certType"` // personal, enterprise
|
||||
CertType string `json:"cert_type"` // personal, enterprise
|
||||
Stats Stats `json:"stats"`
|
||||
IsFollowing bool `json:"isFollowing"`
|
||||
IsFollowing bool `json:"is_following"`
|
||||
}
|
||||
|
||||
type Stats struct {
|
||||
|
||||
@@ -13,7 +13,7 @@ type UserUpdate struct {
|
||||
|
||||
type RealNameForm struct {
|
||||
Realname string `json:"realname"`
|
||||
IDCard string `json:"idCard"`
|
||||
IDCard string `json:"id_card"`
|
||||
}
|
||||
|
||||
type WalletResponse struct {
|
||||
@@ -35,21 +35,21 @@ type RechargeForm struct {
|
||||
}
|
||||
|
||||
type RechargeResponse struct {
|
||||
PayParams string `json:"payParams"`
|
||||
OrderID string `json:"orderId"`
|
||||
PayParams string `json:"pay_params"`
|
||||
OrderID string `json:"order_id"`
|
||||
}
|
||||
|
||||
type Order struct {
|
||||
ID string `json:"id"`
|
||||
CreateTime string `json:"createTime"`
|
||||
PayTime string `json:"payTime"`
|
||||
CreateTime string `json:"create_time"`
|
||||
PayTime string `json:"pay_time"`
|
||||
Status string `json:"status"`
|
||||
Amount float64 `json:"amount"`
|
||||
Quantity int `json:"quantity"`
|
||||
Items []ContentItem `json:"items"`
|
||||
TenantID string `json:"tenantId"`
|
||||
TenantName string `json:"tenantName"`
|
||||
IsVirtual bool `json:"isVirtual"`
|
||||
TenantID string `json:"tenant_id"`
|
||||
TenantName string `json:"tenant_name"`
|
||||
IsVirtual bool `json:"is_virtual"`
|
||||
}
|
||||
|
||||
type Notification struct {
|
||||
|
||||
Reference in New Issue
Block a user