Files
juwan-backend/desc/api/community.api
T

128 lines
3.0 KiB
Plaintext

syntax = "v1"
import "common.api"
info (
title: "聚玩社区服务"
desc: "处理帖子、评论、点赞等社区互动。ID 字段(int64)以 string 传输"
author: "Asadz"
version: "1.0"
)
type (
PathId {
Id int64 `path:"id"`
}
Post {
Id int64 `json:"id,string"`
Title string `json:"title"`
Content string `json:"content"`
Images []string `json:"images"`
Tags []string `json:"tags"`
LinkedOrderId int64 `json:"linkedOrderId,string,optional"`
Pinned bool `json:"pinned"`
LikeCount int64 `json:"likeCount"`
CommentCount int64 `json:"commentCount"`
Liked bool `json:"liked"`
Author UserProfile `json:"author"`
CreatedAt string `json:"createdAt"`
}
CreatePostReq {
Title string `json:"title"`
Content string `json:"content"`
Images []string `json:"images"`
Tags []string `json:"tags"`
LinkedOrderId string `json:"linkedOrderId,optional"`
}
PostListReq {
PageReq
Tags string `form:"tags,optional"`
SortBy string `form:"sortBy,optional"`
}
PostListResp {
Items []Post `json:"items"`
Meta PageMeta `json:"meta"`
}
Comment {
Id int64 `json:"id,string"`
Content string `json:"content"`
Author UserProfile `json:"author"`
LikeCount int64 `json:"likeCount"`
Liked bool `json:"liked"`
CreatedAt string `json:"createdAt"`
}
CommentListResp {
Items []Comment `json:"items"`
Meta PageMeta `json:"meta"`
}
CreateCommentReq {
PostId int64 `json:"-"`
Content string `json:"content"`
}
ListCommentsReq {
PathId
PageReq
}
)
@server (
prefix: api/v1
group: community
)
service community-api {
@doc "获取帖子列表"
@handler ListPosts
get /posts (PostListReq) returns (PostListResp)
@doc "获取帖子详情"
@handler GetPost
get /posts/:id (PathId) returns (Post)
@doc "获取帖子评论"
@handler ListComments
get /posts/:id/comments (ListCommentsReq) returns (CommentListResp)
@doc "获取用户帖子"
@handler ListUserPosts
get /users/:id/posts (ListCommentsReq) returns (PostListResp)
}
@server (
prefix: api/v1
group: community
)
service community-api {
@doc "发布帖子"
@handler CreatePost
post /posts (CreatePostReq) returns (Post)
@doc "点赞帖子"
@handler LikePost
post /posts/:id/like (PathId) returns (EmptyResp)
@doc "取消点赞帖子"
@handler UnlikePost
delete /posts/:id/like (PathId) returns (EmptyResp)
@doc "置顶帖子"
@handler PinPost
post /posts/:id/pin (PathId) returns (EmptyResp)
@doc "取消置顶"
@handler UnpinPost
delete /posts/:id/pin (PathId) returns (EmptyResp)
@doc "发表评论"
@handler CreateComment
post /posts/:id/comments (CreateCommentReq) returns (Comment)
@doc "点赞评论"
@handler LikeComment
post /comments/:id/like (PathId) returns (EmptyResp)
@doc "取消点赞评论"
@handler UnlikeComment
delete /comments/:id/like (PathId) returns (EmptyResp)
}