| // @ts-ignore |
| import { request } from '@umijs/max'; |
| |
| export interface PostListParams { |
| pageNum?: number; |
| pageSize?: number; |
| title?: string; |
| status?: string; |
| tags?: string; |
| } |
| |
| export interface PostDetailResponse { |
| post: API.Post.PostInfo; |
| tags: API.Post.PostTag[]; |
| comments: any[]; |
| authorPosts: API.Post.PostInfo[]; |
| similarPosts: API.Post.PostInfo[]; |
| recommendedPosts: API.Post.PostInfo[]; |
| favorited: boolean; |
| } |
| |
| export interface CommentAddParams { |
| postId: number; |
| content: string; |
| parentId?: number; |
| } |
| |
| // 获取帖子列表 |
| export async function getPostList(params: PostListParams) { |
| console.log('getPostList', params); |
| return request<API.TableDataInfo>('/api/post-center/list', { |
| method: 'GET', |
| params, |
| }); |
| } |
| |
| // 获取帖子详情 |
| export async function getPostDetail(postId: number) { |
| console.log('getPostDetail', postId); |
| return request<API.AjaxResult<PostDetailResponse>>(`/api/post-center/${postId}`, { |
| method: 'GET', |
| }); |
| } |
| |
| // 添加评论 |
| export async function addComment(data: CommentAddParams) { |
| console.log('addComment', data); |
| return request<API.AjaxResult>('/api/post-center/comment', { |
| method: 'POST', |
| data, |
| }); |
| } |
| |
| // 收藏/取消收藏帖子 |
| export async function toggleFavorite(postId: number, favorite: boolean) { |
| console.log('toggleFavorite', postId, favorite); |
| return request<API.AjaxResult>(`/api/post-center/favorite/${postId}`, { |
| method: 'POST', |
| params: { favorite }, |
| }); |
| } |
| |
| // 获取热门标签 |
| export async function getHotTags(): Promise<API.AjaxResult<API.Post.PostTag[]>> { |
| return request('/api/post-center/tags/hot', { |
| method: 'GET', |
| }); |
| } |
| |
| // 根据标签获取帖子 |
| export async function getPostsByTag(tagId: number) { |
| console.log('getPostsByTag', tagId); |
| return request<API.TableDataInfo>(`/api/post-center/bytag/${tagId}`, { |
| method: 'GET', |
| }); |
| } |
| |
| // 发布帖子 |
| export async function publishPost(data: { |
| title: string; |
| content: string; |
| summary: string; |
| tags: string; |
| promotionPlan?: number; |
| }): Promise<API.AjaxResult> { |
| return request('/api/post-center/publish', { |
| method: 'POST', |
| data, |
| }); |
| } |
| |
| // 获取我的帖子列表 |
| export async function getMyPosts(params: { |
| pageNum?: number; |
| pageSize?: number; |
| }): Promise<API.TableDataInfo<API.Post.PostInfo>> { |
| return request('/api/post-center/my-posts', { |
| method: 'GET', |
| params, |
| }); |
| } |
| |
| // 获取我的收藏列表 |
| export async function getMyFavorites(params: { |
| pageNum?: number; |
| pageSize?: number; |
| }): Promise<API.TableDataInfo<API.Post.PostInfo>> { |
| return request('/api/post-center/my-favorites', { |
| method: 'GET', |
| params, |
| }); |
| } |
| |
| // 更新帖子 |
| export async function updatePost(data: API.Post.PostInfo): Promise<API.AjaxResult> { |
| return request('/api/post-center/update', { |
| method: 'PUT', |
| data, |
| }); |
| } |
| |
| // 删除帖子 |
| export async function deletePost(postId: number): Promise<API.AjaxResult> { |
| return request(`/api/post-center/delete/${postId}`, { |
| method: 'DELETE', |
| }); |
| } |
| |
| // 获取可用标签列表(用于下拉选择) |
| export async function getAvailableTags(): Promise<API.AjaxResult<API.Post.PostTag[]>> { |
| return request('/api/post-center/tags/available', { |
| method: 'GET', |
| }); |
| } |
| |
| // 上传图片 |
| export async function uploadImage(file: FormData): Promise<API.AjaxResult<{url: string}>> { |
| return request('/api/post-center/upload', { |
| method: 'POST', |
| data: file, |
| }); |
| } |
| |
| // 删除图片 |
| export async function deleteImage(filename: string): Promise<API.AjaxResult> { |
| return request('/api/post-center/upload', { |
| method: 'DELETE', |
| params: { filename }, |
| }); |
| } |
| |
| // 获取推广计划列表 |
| export async function getPromotionPlans(): Promise<API.AjaxResult<any[]>> { |
| return request('/api/post-center/promotion-plans', { |
| method: 'GET', |
| }); |
| } |
| |
| // 创建支付记录 |
| export async function createPayment(data: { |
| postId: number; |
| planId: number; |
| amount: number; |
| }): Promise<API.AjaxResult> { |
| return request('/api/post-center/payment', { |
| method: 'POST', |
| data, |
| }); |
| } |
| |
| // 点赞/取消点赞帖子 |
| export async function toggleLike(postId: number, like: boolean) { |
| console.log('toggleLike', postId, like); |
| return request<API.AjaxResult>(`/api/post-center/like/${postId}`, { |
| method: 'POST', |
| params: { like }, |
| }); |
| } |
| |
| // 获取推广帖子列表(用于轮播展示) |
| export async function getPromotionPosts(): Promise<API.AjaxResult<API.Post.PostInfo[]>> { |
| return request('/api/post-center/promotion', { |
| method: 'GET', |
| }); |
| } |
| |
| // 点赞/取消点赞评论 |
| export async function toggleCommentLike(commentId: number, like: boolean) { |
| console.log('toggleCommentLike', commentId, like); |
| return request<API.AjaxResult>(`/api/post-center/comment/like/${commentId}`, { |
| method: 'POST', |
| params: { like }, |
| }); |
| } |
| |
| // 获取待审核帖子列表 |
| export async function getReviewPosts(params: PostListParams): Promise<API.TableDataInfo<API.Post.PostInfo>> { |
| return request('/api/post/review/list', { |
| method: 'GET', |
| params, |
| }); |
| } |
| |
| // 审核帖子(通过/拒绝) |
| export async function reviewPost(postId: number, action: 'approve' | 'reject', reason?: string): Promise<API.AjaxResult> { |
| return request(`/api/post/review/${postId}`, { |
| method: 'PUT', |
| data: { action, reason }, |
| }); |
| } |
| |
| // 强制下架帖子 |
| export async function takeDownPost(postId: number, reason?: string): Promise<API.AjaxResult> { |
| return request(`/api/post/takedown/${postId}`, { |
| method: 'PUT', |
| data: { reason }, |
| }); |
| } |
| |
| // 检查帖子推广状态 |
| export async function getPromotionStatus(postId: number): Promise<API.AjaxResult> { |
| return request(`/api/post-center/promotion-status/${postId}`, { |
| method: 'GET', |
| }); |
| } |
| |
| // 确认支付成功 |
| export async function confirmPayment(paymentId: number): Promise<API.AjaxResult> { |
| return request(`/api/post-center/payment/confirm/${paymentId}`, { |
| method: 'POST', |
| }); |
| } |
| |
| // 取消支付 |
| export async function cancelPayment(paymentId: number): Promise<API.AjaxResult> { |
| return request(`/api/post-center/payment/cancel/${paymentId}`, { |
| method: 'POST', |
| }); |
| } |
| |
| // 举报帖子 |
| export async function reportPost(postId: number, reason: string): Promise<API.AjaxResult> { |
| return request(`/api/post-center/report/${postId}`, { |
| method: 'POST', |
| data: { reason }, |
| }); |
| } |
| |
| // 获取举报列表 |
| export async function getReportList(params: PostListParams): Promise<API.TableDataInfo> { |
| return request('/api/post/report/list', { |
| method: 'GET', |
| params, |
| }); |
| } |
| |
| // 处理举报 |
| export async function handleReport(reportId: number, action: 'approve' | 'reject', postId: number, reason?: string): Promise<API.AjaxResult> { |
| return request(`/api/post/report/handle/${reportId}`, { |
| method: 'PUT', |
| data: { action, postId, reason }, |
| }); |
| } |