96 lines
2.6 KiB
TypeScript
96 lines
2.6 KiB
TypeScript
import httpService from "./httpService";
|
|
import type { ApiResponse } from "./httpService";
|
|
|
|
// 评论项接口定义
|
|
export interface CommentActivity {
|
|
id: number;
|
|
type: "comment" | "reply";
|
|
activity_type: string;
|
|
game_id: number;
|
|
parent_id: number | null;
|
|
content: string;
|
|
like_count: number;
|
|
reply_count: number;
|
|
create_time: string;
|
|
user: {
|
|
id: number;
|
|
nickname: string;
|
|
province: string;
|
|
avatar_url: string;
|
|
};
|
|
game: {
|
|
id: number;
|
|
title: string;
|
|
start_time: string;
|
|
location_name: string;
|
|
image?: string;
|
|
image_list?: string[];
|
|
};
|
|
reply_to_user: {
|
|
id: number;
|
|
nickname: string;
|
|
avatar_url: string;
|
|
} | null;
|
|
parent_comment: {
|
|
id: number;
|
|
content: string;
|
|
user_id: number;
|
|
user_nickname: string;
|
|
} | null;
|
|
}
|
|
|
|
// 获取评论动态请求参数
|
|
export interface GetMyActivitiesParams {
|
|
page?: number;
|
|
pageSize?: number;
|
|
}
|
|
|
|
// 评论动态列表响应
|
|
export interface CommentActivitiesResponse {
|
|
rows: CommentActivity[];
|
|
count: number;
|
|
page: number;
|
|
pageSize: number;
|
|
totalPages: number;
|
|
}
|
|
|
|
class CommentService {
|
|
// 获取当前用户的评论和回复动态
|
|
async getMyActivities(params: GetMyActivitiesParams = {}): Promise<ApiResponse<CommentActivitiesResponse>> {
|
|
const { page = 1, pageSize = 10 } = params;
|
|
return httpService.post("/comments/my_activities", { page, pageSize }, { showLoading: false });
|
|
}
|
|
|
|
// 发表评论
|
|
async createComment(game_id: number, content: string): Promise<ApiResponse<any>> {
|
|
return httpService.post("/comments/create", { game_id, content });
|
|
}
|
|
|
|
// 回复评论
|
|
async replyComment(parent_id: number, reply_to_user_id: number, content: string): Promise<ApiResponse<any>> {
|
|
return httpService.post("/comments/reply", { parent_id, reply_to_user_id, content });
|
|
}
|
|
|
|
// 获取评论列表
|
|
async getCommentList(game_id: number, page: number = 1, pageSize: number = 10): Promise<ApiResponse<any>> {
|
|
return httpService.post("/comments/list", { game_id, page, pageSize });
|
|
}
|
|
|
|
// 点赞/取消点赞评论
|
|
async likeComment(comment_id: number): Promise<ApiResponse<any>> {
|
|
return httpService.post("/comments/like", { comment_id });
|
|
}
|
|
|
|
// 删除评论
|
|
async deleteComment(comment_id: number): Promise<ApiResponse<any>> {
|
|
return httpService.post("/comments/delete", { comment_id });
|
|
}
|
|
|
|
// 获取评论的所有回复
|
|
async getCommentReplies(comment_id: number, page: number = 1, pageSize: number = 10): Promise<ApiResponse<any>> {
|
|
return httpService.post("/comments/replies", { comment_id, page, pageSize });
|
|
}
|
|
}
|
|
|
|
export default new CommentService();
|