80 lines
1.8 KiB
JavaScript
80 lines
1.8 KiB
JavaScript
/**
|
|
* 首页模块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
|
|
} |