更新:增加“我的书单”功能

This commit is contained in:
2025-11-10 09:16:28 +08:00
parent 33f861fa14
commit 577e782cd8
25 changed files with 4515 additions and 37 deletions

204
api/modules/book.ts Normal file
View 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 }
})
}
}