import request from '@/utils/request.ts' import type { VideoInfo, VideoCreateParams, VideoUpdateParams, VideoQueryParams, VideoUploadParams, VideoUploadResult, PlayRecord, PlayHistoryItem, PageResult } from '@/types' /** * 视频相关 API */ export const videoApi = { // ==================== 视频上传 ==================== /** * 上传视频文件 */ uploadVideo(params: VideoUploadParams): Promise { return request.upload('/content/video/upload', params.file, params.onProgress) }, /** * 创建视频记录 */ createVideo(params: VideoCreateParams): Promise { return request.post('/content/video', params) }, // ==================== 视频查询 ==================== /** * 获取视频详情(公开接口) */ getVideoPublic(id: number): Promise { return request.get(`/content/video/public/${id}`) }, /** * 获取视频列表(公开接口) */ getVideoPublicList(params?: VideoQueryParams): Promise> { return request.get('/content/video/public/list', params) }, /** * 获取视频详情(需登录) */ getVideo(id: number): Promise { return request.get(`/content/video/${id}`) }, /** * 获取视频列表(需登录) */ getVideoList(params?: VideoQueryParams): Promise> { return request.get('/content/video/list', params) }, /** * 获取用户视频列表 */ getUserVideos(userId: number, params?: VideoQueryParams): Promise> { return request.get(`/content/video/user/${userId}`, params) }, // ==================== 视频管理 ==================== /** * 更新视频信息 */ updateVideo(params: VideoUpdateParams): Promise { return request.put('/content/video', params) }, /** * 删除视频 */ deleteVideo(id: number): Promise { return request.delete(`/content/video/${id}`) }, // ==================== 视频互动 ==================== /** * 点赞视频 */ likeVideo(videoId: number): Promise { return request.post(`/content/video/like/${videoId}`) }, /** * 取消点赞 */ unlikeVideo(videoId: number): Promise { return request.delete(`/content/video/like/${videoId}`) }, /** * 投币 */ coinVideo(videoId: number, amount = 1): Promise { return request.post(`/content/video/coin/${videoId}?amount=${amount}`) }, /** * 收藏视频 */ favoriteVideo(videoId: number, favoriteId: number): Promise { return request.post('/content/video/favorite', { videoId, favoriteId }) }, /** * 取消收藏 */ unfavoriteVideo(videoId: number): Promise { return request.delete(`/content/video/favorite/${videoId}`) }, /** * 分享视频 */ shareVideo(videoId: number, platform = 'web'): Promise { return request.post(`/content/video/share/${videoId}?platform=${platform}`) }, /** * 记录播放 */ recordPlay(params: PlayRecord): Promise { return request.post('/content/video/play', params) }, /** * 获取播放历史 */ getPlayHistory(params?: { pageNum?: number; pageSize?: number }): Promise> { return request.get('/content/video/history', params) }, /** * 清空播放历史 */ clearPlayHistory(): Promise { return request.delete('/content/video/history') }, /** * 增加评论数量(内部接口) */ incrementCommentCount(videoId: number, count: number): Promise { return request.post(`/content/video/count/comment/${videoId}/${count}`) } }