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