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

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');
}
};