Files
nanocode/wanandroid/uniapp/common/api/home.api.js
T
Ubuntu 32b43f85bd a
2026-07-03 16:58:28 +08:00

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
}