diff --git a/api-spec.yaml b/api-spec.yaml index cd5e09d..3a21e42 100644 --- a/api-spec.yaml +++ b/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' \ No newline at end of file diff --git a/backend/app/http/v1/dto/auth.go b/backend/app/http/v1/dto/auth.go index bf9fe53..3f3bef5 100644 --- a/backend/app/http/v1/dto/auth.go +++ b/backend/app/http/v1/dto/auth.go @@ -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 { diff --git a/backend/app/http/v1/dto/common.go b/backend/app/http/v1/dto/common.go index be435e7..6bf9ada 100644 --- a/backend/app/http/v1/dto/common.go +++ b/backend/app/http/v1/dto/common.go @@ -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"` } diff --git a/backend/app/http/v1/dto/content.go b/backend/app/http/v1/dto/content.go index 2929183..fe0910a 100644 --- a/backend/app/http/v1/dto/content.go +++ b/backend/app/http/v1/dto/content.go @@ -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"` -} \ No newline at end of file + 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"` +} diff --git a/backend/app/http/v1/dto/creator.go b/backend/app/http/v1/dto/creator.go index e96e5b2..6be26f8 100644 --- a/backend/app/http/v1/dto/creator.go +++ b/backend/app/http/v1/dto/creator.go @@ -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 diff --git a/backend/app/http/v1/dto/order.go b/backend/app/http/v1/dto/order.go index adc4e67..bc10a95 100644 --- a/backend/app/http/v1/dto/order.go +++ b/backend/app/http/v1/dto/order.go @@ -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 { diff --git a/backend/app/http/v1/dto/tenant.go b/backend/app/http/v1/dto/tenant.go index 5b8c70f..b6e20bd 100644 --- a/backend/app/http/v1/dto/tenant.go +++ b/backend/app/http/v1/dto/tenant.go @@ -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 { diff --git a/backend/app/http/v1/dto/user.go b/backend/app/http/v1/dto/user.go index a1b1396..24d3afb 100644 --- a/backend/app/http/v1/dto/user.go +++ b/backend/app/http/v1/dto/user.go @@ -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 {