57 lines
1.4 KiB
TypeScript
57 lines
1.4 KiB
TypeScript
import request from '@/utils/request.ts'
|
|
import type { VideoInfo } from '@/types'
|
|
|
|
/**
|
|
* 推荐相关 API
|
|
*/
|
|
export const recommendApi = {
|
|
/**
|
|
* 获取首页推荐
|
|
* @param page 页码
|
|
* @param size 每页数量
|
|
*/
|
|
getHomeRecommend(page: number = 1, size: number = 20): Promise<VideoInfo[]> {
|
|
return request.get('/recommend/home', { page, size })
|
|
},
|
|
|
|
/**
|
|
* 获取热门推荐
|
|
* @param periodType 时间周期类型:1-日榜,2-周榜,3-月榜
|
|
* @param size 数量
|
|
*/
|
|
getHotRecommend(periodType: number = 1, size: number = 20): Promise<VideoInfo[]> {
|
|
return request.get('/recommend/hot', { periodType, size })
|
|
},
|
|
|
|
/**
|
|
* 获取相似视频推荐
|
|
*/
|
|
getSimilarVideos(videoId: number, limit?: number): Promise<VideoInfo[]> {
|
|
return request.get(`/recommend/similar/${videoId}`, { limit })
|
|
},
|
|
|
|
/**
|
|
* 获取标签视频推荐
|
|
*/
|
|
getTagVideos(tagId: number, params?: { page?: number; size?: number }): Promise<VideoInfo[]> {
|
|
return request.get(`/recommend/tag/${tagId}`, params)
|
|
},
|
|
|
|
/**
|
|
* 记录用户行为
|
|
*/
|
|
recordBehavior(params: {
|
|
videoId: number
|
|
actionType: 'view' | 'like' | 'coin' | 'favorite' | 'share' | 'comment'
|
|
}): Promise<void> {
|
|
return request.post('/recommend/behavior', params)
|
|
},
|
|
|
|
/**
|
|
* 更新用户兴趣
|
|
*/
|
|
updateInterest(params: { tagIds: number[] }): Promise<void> {
|
|
return request.post('/recommend/interest/update', params)
|
|
}
|
|
}
|