/** * 首页模块API * 统一管理首页相关的所有API调用 */ import { API_CONFIG } from '../config/api.config.js' import { get } from '../utils/request.js' /** * 获取Banner轮播图数据 * @returns {Promise} Banner数据 */ export const getBannerList = () => { return get(API_CONFIG.HOME.BANNER) } /** * 获取首页文章列表 * @param {number} page 页码,从0开始 * @returns {Promise} 文章列表数据 */ export const getArticleList = (page = 0) => { const url = API_CONFIG.HOME.ARTICLE_LIST.replace('{page}', page) return get(url) } /** * 获取置顶文章 * @returns {Promise} 置顶文章数据 */ export const getTopArticles = () => { return get(API_CONFIG.HOME.TOP_ARTICLE) } /** * 搜索文章 * @param {string} keyword 搜索关键词 * @param {number} page 页码,从0开始 * @returns {Promise} 搜索结果 */ export const searchArticles = (keyword, page = 0) => { const url = API_CONFIG.HOME.SEARCH_ARTICLE.replace('{page}', page) return get(url, { k: keyword }) } /** * 获取首页完整数据(Banner + 文章列表) * @param {number} page 页码 * @returns {Promise} 首页完整数据 */ export const getHomeData = async (page = 0) => { try { // 并行请求Banner和文章列表 const [bannerData, articleData, topArticles] = await Promise.all([ getBannerList(), getArticleList(page), getTopArticles() ]) return { bannerList: bannerData || [], articleList: articleData?.datas || [], topArticles: topArticles || [], total: articleData?.total || 0, pageCount: articleData?.pageCount || 0, currentPage: page } } catch (error) { console.error('获取首页数据失败:', error) throw error } } export default { getBannerList, getArticleList, getTopArticles, searchArticles, getHomeData }