更新:增加“我的书单”功能
This commit is contained in:
204
api/modules/book.ts
Normal file
204
api/modules/book.ts
Normal file
@@ -0,0 +1,204 @@
|
||||
// api/modules/book.ts
|
||||
import { createRequestClient } from '../request'
|
||||
import { SERVICE_MAP } from '../config'
|
||||
import type { IApiResponse } from '../types'
|
||||
import type {
|
||||
IBook,
|
||||
IBookDetail,
|
||||
IPageData,
|
||||
IChapter,
|
||||
IChapterContent,
|
||||
IComment,
|
||||
IReadProgress
|
||||
} from '@/types/book'
|
||||
|
||||
const client = createRequestClient({ baseURL: SERVICE_MAP.MAIN })
|
||||
|
||||
/**
|
||||
* 书籍相关API
|
||||
*/
|
||||
export const bookApi = {
|
||||
/**
|
||||
* 获取我的书单列表
|
||||
* @param current 当前页码
|
||||
* @param limit 每页数量
|
||||
*/
|
||||
getMyBooks(current: number, limit: number) {
|
||||
return client.request<IApiResponse<{ page: IPageData<IBook> }>>({
|
||||
url: 'bookAbroad/home/getMyBooks',
|
||||
method: 'POST',
|
||||
data: { current, limit }
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取书籍详情
|
||||
* @param bookId 书籍ID
|
||||
*/
|
||||
getBookInfo(bookId: number) {
|
||||
return client.request<IApiResponse<{ bookInfo: IBookDetail }>>({
|
||||
url: 'bookAbroad/home/getBookInfo',
|
||||
method: 'POST',
|
||||
data: { bookId }
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取书籍统计数据
|
||||
* @param bookId 书籍ID
|
||||
*/
|
||||
getBookReadCount(bookId: number) {
|
||||
return client.request<IApiResponse<{
|
||||
readCount: number
|
||||
listenCount: number
|
||||
buyCount: number
|
||||
}>>({
|
||||
url: 'bookAbroad/home/getBookReadCount',
|
||||
method: 'POST',
|
||||
data: { bookId }
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取推荐书籍
|
||||
* @param bookId 书籍ID
|
||||
*/
|
||||
getRecommendBook(bookId: number) {
|
||||
return client.request<IApiResponse<{ bookList: IBook[] }>>({
|
||||
url: 'bookAbroad/home/getRecommendBook',
|
||||
method: 'POST',
|
||||
data: { bookId }
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取评论列表
|
||||
* @param bookId 书籍ID
|
||||
* @param current 当前页码
|
||||
* @param limit 每页数量
|
||||
*/
|
||||
getBookComments(bookId: number, current: number, limit: number) {
|
||||
return client.request<IApiResponse<{
|
||||
commentsTree: IComment[]
|
||||
commentsCount: number
|
||||
}>>({
|
||||
url: 'bookAbroad/getBookAbroadCommentTree',
|
||||
method: 'POST',
|
||||
data: { bookId, current, limit }
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 发表评论
|
||||
* @param bookId 书籍ID
|
||||
* @param content 评论内容
|
||||
* @param pid 父评论ID,默认为0表示顶级评论
|
||||
*/
|
||||
insertComment(bookId: number, content: string, pid: number = 0) {
|
||||
return client.request<IApiResponse>({
|
||||
url: 'bookAbroad/insertBookAbroadComment',
|
||||
method: 'POST',
|
||||
data: { bookId, content, pid }
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 点赞评论
|
||||
* @param commentId 评论ID
|
||||
*/
|
||||
likeComment(commentId: number) {
|
||||
return client.request<IApiResponse>({
|
||||
url: 'bookAbroad/insertBookAbroadCommentLike',
|
||||
method: 'POST',
|
||||
data: { commentId }
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 取消点赞
|
||||
* @param commentId 评论ID
|
||||
*/
|
||||
unlikeComment(commentId: number) {
|
||||
return client.request<IApiResponse>({
|
||||
url: 'bookAbroad/delBookAbroadCommentLike',
|
||||
method: 'POST',
|
||||
data: { commentId }
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 删除评论
|
||||
* @param commentId 评论ID
|
||||
*/
|
||||
deleteComment(commentId: number) {
|
||||
return client.request<IApiResponse>({
|
||||
url: 'bookAbroad/delBookAbroadComment',
|
||||
method: 'POST',
|
||||
data: { commentId }
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取章节列表
|
||||
* @param bookId 书籍ID
|
||||
*/
|
||||
getBookChapter(data: { bookId: number; language: string }) {
|
||||
return client.request<IApiResponse<{ chapterList: IChapter[] }>>({
|
||||
url: 'bookAbroad/home/getBookChapter',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取章节内容
|
||||
* @param chapterId 章节ID
|
||||
*/
|
||||
getChapterContent(chapterId: number) {
|
||||
return client.request<IApiResponse<{ contentPage: IChapterContent[] }>>({
|
||||
url: 'bookAbroad/home/getBookChapterContent',
|
||||
method: 'POST',
|
||||
data: { chapterId }
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取阅读进度
|
||||
* @param bookId 书籍ID
|
||||
*/
|
||||
getReadProgress(bookId: number) {
|
||||
return client.request<IApiResponse<{ bookReadRate: IReadProgress | null }>>({
|
||||
url: 'bookAbroad/home/getBookReadRate',
|
||||
method: 'POST',
|
||||
data: { bookId }
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 保存阅读进度
|
||||
* @param bookId 书籍ID
|
||||
* @param chapterId 章节ID
|
||||
* @param contentId 内容ID
|
||||
*/
|
||||
saveReadProgress(bookId: number, chapterId: number, contentId: number) {
|
||||
return client.request<IApiResponse>({
|
||||
url: 'bookAbroad/home/insertBookReadRate',
|
||||
method: 'POST',
|
||||
data: { bookId, chapterId, contentId }
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取书籍语言列表
|
||||
* @param bookId 书籍ID
|
||||
* @param chapterId 章节ID
|
||||
* @param contentId 内容ID
|
||||
*/
|
||||
getBookLanguages(bookId: number) {
|
||||
return client.request<IApiResponse>({
|
||||
url: 'bookAbroad/home/getBookLanguage',
|
||||
method: 'POST',
|
||||
data: { bookId }
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user