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.
76 lines
2.1 KiB
76 lines
2.1 KiB
import { get, post as httpPost, put, del } from './request';
|
|
|
|
// 类型定义
|
|
export interface PostItem {
|
|
id: number;
|
|
title: string;
|
|
summary?: string; // Added: for post list item summary
|
|
content: string; // Existing: for post detail content
|
|
userId: number;
|
|
nickname: string;
|
|
avatar: string;
|
|
categoryId: number;
|
|
categoryName: string;
|
|
viewCount: number;
|
|
likeCount: number;
|
|
commentCount: number;
|
|
createdAt: string;
|
|
updatedAt: string;
|
|
isLiked?: boolean; // Added: for post detail, if current user liked it
|
|
}
|
|
|
|
export interface CategoryItem {
|
|
id: number;
|
|
name: string;
|
|
description?: string;
|
|
}
|
|
|
|
export interface CreatePostParams {
|
|
title: string;
|
|
content: string;
|
|
categoryId: number;
|
|
}
|
|
|
|
// API方法
|
|
export default {
|
|
// 获取帖子列表
|
|
getPosts(params: { pageNum?: number; pageSize?: number; categoryId?: number; sort?: string }) {
|
|
return get<{ code: number; data: { total: number; list: PostItem[]; pages: number; pageNum: number; pageSize: number } }>('/posts', params);
|
|
},
|
|
|
|
// 获取帖子详情
|
|
getPostDetail(id: number) {
|
|
return get<{ code: number; data: PostItem }>(`/posts/${id}`);
|
|
},
|
|
|
|
// 创建帖子
|
|
createPost(data: CreatePostParams) {
|
|
return httpPost<{ code: number; data: { postId: number } }>('/posts', data);
|
|
},
|
|
|
|
// 更新帖子
|
|
updatePost(id: number, data: CreatePostParams) {
|
|
return put<{ code: number; message: string }>(`/posts/${id}`, data);
|
|
},
|
|
|
|
// 删除帖子
|
|
deletePost(id: number) {
|
|
return del<{ code: number; message: string }>(`/posts/${id}`);
|
|
},
|
|
|
|
// 点赞/取消点赞帖子
|
|
likePost(id: number) {
|
|
return httpPost<{ code: number; message: string }>(`/posts/${id}/like`);
|
|
},
|
|
|
|
// 获取用户的帖子列表
|
|
getUserPosts(userId?: number) {
|
|
const params = userId ? { userId } : {};
|
|
return get<{ code: number; data: { total: number; list: PostItem[]; pages: number } }>('/posts', params);
|
|
},
|
|
|
|
// 获取所有帖子分类
|
|
getCategories() {
|
|
return get<{ code: number; message: string; data: { list: CategoryItem[], total: number } }>('/categories');
|
|
}
|
|
}; |