import type { AxiosRequestConfig } from 'axios'; import type { ApiClient } from '../types'; import type { CreatePostRequest, CreatePostResponse, GetPostsRequest, GetPostsResponse, GetPostRequest, GetPostResponse, LikePostRequest, LikePostResponse, BookmarkPostRequest, BookmarkPostResponse, CreateCommentRequest, CreateCommentResponse, GetCommentsRequest, GetCommentsResponse, LikeCommentRequest, LikeCommentResponse, GetHotPostsRequest, GetHotPostsResponse, GetPostRankingRequest, GetPostRankingResponse } from '@/types/post/api'; // 帖子API服务工厂函数 export const postApi = (client: ApiClient) => ({ // 创建帖子 createPost: (data: CreatePostRequest): Promise => { return client.post('/posts', data); }, // 获取帖子列表 getPosts: (params: GetPostsRequest): Promise => { const config: AxiosRequestConfig = { params }; return client.get('/posts', config); }, // 获取帖子详情 getPost: ({ postId }: GetPostRequest): Promise => { return client.get(`/posts/${postId}`); }, // 点赞帖子 likePost: ({ postId }: LikePostRequest): Promise => { return client.put(`/posts/${postId}/like`); }, // 收藏帖子 bookmarkPost: ({ postId }: BookmarkPostRequest): Promise => { return client.put(`/posts/${postId}/bookmark`); }, // 创建评论 createComment: (data: CreateCommentRequest): Promise => { return client.post(`/posts/${data.postId}/comments`, data); }, // 获取评论列表 getComments: (params: GetCommentsRequest): Promise => { const { postId, ...queryParams } = params; return client.get(`/posts/${postId}/comments`, { params: queryParams }); }, // 点赞评论 likeComment: ({ commentId }: LikeCommentRequest): Promise => { return client.put(`/comments/${commentId}/like`); }, // 获取热门帖子 getHotPosts: (params: GetHotPostsRequest = {}): Promise => { return client.get('/posts/hot', { params }); }, // 获取帖子榜单 getPostRanking: (params: GetPostRankingRequest = {}): Promise => { return client.get('/posts/ranking', { params }); } });