小说网站前端代码仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

156 lines
4.1 KiB

  1. import api from './index.js';
  2. /**
  3. * 首页相关接口
  4. */
  5. export const homeApi = {
  6. /**
  7. * 获取首页banner
  8. */
  9. getBanner() {
  10. return api.get('/all_index/getBanner');
  11. },
  12. /**
  13. * 获取书城区域列表
  14. */
  15. getBookAreaList() {
  16. return api.get('/all_index/getBookAreaList');
  17. },
  18. /**
  19. * 根据目录查询章节小说信息明细
  20. * @param {string} id 目录ID
  21. */
  22. getBookCatalogDetail(id) {
  23. return api.get('/all_index/getBookCatalogDetail', {
  24. params: { id }
  25. });
  26. },
  27. /**
  28. * 根据书本标识获取书本目录列表
  29. * @param {Object} params 查询参数
  30. * @param {string} params.bookId 书本ID
  31. * @param {string} params.orderBy 排序方式
  32. * @param {number} params.pageNo 当前页
  33. * @param {number} params.pageSize 显示条数
  34. */
  35. getBookCatalogList(params) {
  36. return api.get('/all_index/getBookCatalogList', { params });
  37. },
  38. /**
  39. * 根据书本标识获取书本详细信息
  40. * @param {Object} params 查询参数
  41. * @param {string} params.id 书本ID
  42. * @param {string} params.token token
  43. */
  44. getBookDetail(params) {
  45. return api.get('/all_index/getBookDetail', { params });
  46. },
  47. /**
  48. * 获取书城分类列表
  49. */
  50. getCategoryList() {
  51. return api.get('/all_index/getCategoryList');
  52. },
  53. /**
  54. * 获取亲密度排行版
  55. * @param {Object} params 查询参数
  56. * @param {string} params.bookId 书本ID
  57. * @param {number} params.pageNo 当前页
  58. * @param {number} params.pageSize 显示条数
  59. */
  60. getIntimacyRankList(params) {
  61. return api.get('/all_index/getIntimacyRankList', { params });
  62. },
  63. /**
  64. * 获取首页最新小说列表带分页
  65. * @param {Object} params 分页参数
  66. * @param {number} params.pageNo 当前页
  67. * @param {number} params.pageSize 显示条数
  68. */
  69. getNewList(params) {
  70. return api.get('/all_index/getNewList', { params });
  71. },
  72. /**
  73. * 获取首页公告
  74. */
  75. getNotice() {
  76. return api.get('/all_index/getNotice');
  77. },
  78. /**
  79. * 获取公告详情
  80. * @param {string} id 公告ID
  81. */
  82. getNoticeById(id) {
  83. return api.get('/all_index/getNoticeById', {
  84. params: { id }
  85. });
  86. },
  87. /**
  88. * 获取公告列表带分页
  89. * @param {Object} params 分页参数
  90. * @param {number} params.pageNo 当前页
  91. * @param {number} params.pageSize 显示条数
  92. */
  93. getNoticePage(params) {
  94. return api.get('/all_index/getNoticePage', { params });
  95. },
  96. /**
  97. * 获取首页精品推荐小说列表带分页
  98. */
  99. getRecommendList(params) {
  100. return api.get('/all_index/getRecommendList', { params });
  101. },
  102. /**
  103. * 根据书本标识进行投票
  104. * @param {Object} params 投票参数
  105. * @param {string} params.bookId 书本ID
  106. * @param {string} params.num 投票数
  107. */
  108. vote(params) {
  109. return api.get('/all_index/vote', { params });
  110. },
  111. /**
  112. * 获取排行榜数据 - 根据不同榜单类型和分类获取书籍列表
  113. * @param {Object} params 查询参数
  114. * @param {string} params.rankType 榜单类型 (1:推荐榜 2:完本榜 3:阅读榜 4:口碑榜 5:新书榜 6:高分榜)
  115. * @param {string} params.categoryId 分类ID
  116. * @param {number} params.pageNo 当前页
  117. * @param {number} params.pageSize 显示条数
  118. */
  119. getRankingList(params) {
  120. const { rankType, categoryId, pageNo = 1, pageSize = 20 } = params;
  121. // 根据不同的榜单类型调用不同的接口
  122. switch (rankType) {
  123. case '1': // 推荐榜
  124. return api.get('/all_index/getRecommendList', {
  125. params: { pageNo, pageSize, categoryId }
  126. });
  127. case '5': // 新书榜
  128. return api.get('/all_index/getNewList', {
  129. params: { pageNo, pageSize, categoryId }
  130. });
  131. case '3': // 阅读榜 (使用亲密度排行榜作为替代)
  132. return api.get('/all_index/getIntimacyRankList', {
  133. params: { pageNo, pageSize, bookId: categoryId }
  134. });
  135. default:
  136. // 其他榜单暂时使用推荐列表作为占位
  137. return api.get('/all_index/getRecommendList', {
  138. params: { pageNo, pageSize, categoryId }
  139. });
  140. }
  141. }
  142. };