forked from pizvue73f/unilife
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
3.4 KiB
149 lines
3.4 KiB
// api/post.ts
|
|
import request from './request'
|
|
import type { Post, PostListParams, PostListResponse } from '@/views/post'
|
|
|
|
export const postApi = {
|
|
// 获取我的帖子列表
|
|
getMyPosts(params: PostListParams): Promise<PostListResponse> {
|
|
return request({
|
|
url: '/posts/my-posts',
|
|
method: 'GET',
|
|
params
|
|
})
|
|
},
|
|
|
|
// 获取帖子详情
|
|
getPostDetail(id: number): Promise<Post> {
|
|
return request({
|
|
url: `/posts/${id}`,
|
|
method: 'GET'
|
|
})
|
|
},
|
|
|
|
// 创建帖子
|
|
createPost(data: Partial<Post>): Promise<Post> {
|
|
return request({
|
|
url: '/posts',
|
|
method: 'POST',
|
|
data
|
|
})
|
|
},
|
|
|
|
// 更新帖子
|
|
updatePost(id: number, data: Partial<Post>): Promise<Post> {
|
|
return request({
|
|
url: `/posts/${id}`,
|
|
method: 'PUT',
|
|
data
|
|
})
|
|
},
|
|
|
|
// 删除单个帖子
|
|
deletePost(id: number): Promise<void> {
|
|
return request({
|
|
url: `/posts/${id}`,
|
|
method: 'DELETE'
|
|
})
|
|
},
|
|
|
|
// 批量删除帖子
|
|
batchDeletePosts(ids: number[]): Promise<void> {
|
|
return request({
|
|
url: '/posts/batch-delete',
|
|
method: 'DELETE',
|
|
data: { ids }
|
|
})
|
|
},
|
|
|
|
// 发布帖子(从草稿状态发布)
|
|
publishPost(id: number): Promise<Post> {
|
|
return request({
|
|
url: `/posts/${id}/publish`,
|
|
method: 'POST'
|
|
})
|
|
},
|
|
|
|
// 将帖子设为草稿
|
|
draftPost(id: number): Promise<Post> {
|
|
return request({
|
|
url: `/posts/${id}/draft`,
|
|
method: 'POST'
|
|
})
|
|
},
|
|
|
|
// 获取帖子统计信息
|
|
getPostStats(): Promise<{
|
|
totalPosts: number
|
|
totalViews: number
|
|
totalLikes: number
|
|
totalComments: number
|
|
todayPosts: number
|
|
weekPosts: number
|
|
monthPosts: number
|
|
}> {
|
|
return request({
|
|
url: '/posts/stats',
|
|
method: 'GET'
|
|
})
|
|
},
|
|
|
|
// 点赞帖子
|
|
likePost(id: number): Promise<{ liked: boolean; likesCount: number }> {
|
|
return request({
|
|
url: `/posts/${id}/like`,
|
|
method: 'POST'
|
|
})
|
|
},
|
|
|
|
// 取消点赞
|
|
unlikePost(id: number): Promise<{ liked: boolean; likesCount: number }> {
|
|
return request({
|
|
url: `/posts/${id}/unlike`,
|
|
method: 'POST'
|
|
})
|
|
},
|
|
|
|
// 增加浏览量
|
|
increaseViews(id: number): Promise<{ views: number }> {
|
|
return request({
|
|
url: `/posts/${id}/view`,
|
|
method: 'POST'
|
|
})
|
|
},
|
|
|
|
// 搜索帖子
|
|
searchPosts(params: {
|
|
keyword: string
|
|
category?: string
|
|
page?: number
|
|
pageSize?: number
|
|
}): Promise<PostListResponse> {
|
|
return request({
|
|
url: '/posts/search',
|
|
method: 'GET',
|
|
params
|
|
})
|
|
},
|
|
|
|
// 获取热门帖子
|
|
getHotPosts(params: {
|
|
period?: 'day' | 'week' | 'month'
|
|
limit?: number
|
|
} = {}): Promise<Post[]> {
|
|
return request({
|
|
url: '/posts/hot',
|
|
method: 'GET',
|
|
params
|
|
})
|
|
},
|
|
|
|
// 获取推荐帖子
|
|
getRecommendedPosts(limit = 10): Promise<Post[]> {
|
|
return request({
|
|
url: '/posts/recommended',
|
|
method: 'GET',
|
|
params: { limit }
|
|
})
|
|
}
|
|
}
|
|
//
|