Files
schoolNews/schoolNewsWeb/src/apis/homepage/index.ts
2025-10-16 10:31:32 +08:00

209 lines
5.7 KiB
TypeScript

/**
* @description 首页相关API
* @author system
* @since 2025-10-15
*/
import { api } from '@/apis/index';
import type { Resource, Banner, ResultDomain } from '@/types';
/**
* 首页API服务
*/
export const homepageApi = {
/**
* 获取轮播组件数据
* @returns Promise<ResultDomain<Banner>>
*/
async getBannerList(): Promise<ResultDomain<Banner>> {
const response = await api.get<Banner>('/homepage/banner/list');
return response.data;
},
/**
* 点击轮播跳转新闻详情
* @param bannerID Banner ID
* @returns Promise<ResultDomain<Resource>>
*/
async getBannerNewsDetail(bannerID: string): Promise<ResultDomain<Resource>> {
const response = await api.get<Resource>(`/homepage/banner/click/${bannerID}`);
return response.data;
},
/**
* 获取活跃轮播列表
* @returns Promise<ResultDomain<Banner>>
*/
async getActiveBanners(): Promise<ResultDomain<Banner>> {
const response = await api.get<Banner>('/homepage/banner/active');
return response.data;
},
/**
* 获取TOP资源推荐列表
* @returns Promise<ResultDomain<Resource>>
*/
async getTopRecommendList(): Promise<ResultDomain<Resource>> {
const response = await api.get<Resource>('/homepage/recommend/top-list');
return response.data;
},
/**
* 后台调控展示顺序
* @param orderData 排序数据
* @returns Promise<ResultDomain<boolean>>
*/
async updateRecommendOrder(orderData: any): Promise<ResultDomain<boolean>> {
const response = await api.put<boolean>('/homepage/recommend/order', orderData);
return response.data;
},
/**
* 获取高热度新闻
* @param limit 限制数量
* @returns Promise<ResultDomain<Resource>>
*/
async getHotNews(limit?: number): Promise<ResultDomain<Resource>> {
const response = await api.get<Resource>('/homepage/recommend/hot-news', { limit });
return response.data;
},
/**
* 获取思政新闻概览
* @param pageNum 页码
* @param pageSize 每页条数
* @returns Promise<ResultDomain<Resource>>
*/
async getNewsOverview(pageNum?: number, pageSize?: number): Promise<ResultDomain<Resource>> {
const response = await api.get<Resource>('/homepage/news/overview', {
pageNum,
pageSize
});
return response.data;
},
/**
* 点击跳转二级详情页
* @param newsID 新闻ID
* @returns Promise<ResultDomain<Resource>>
*/
async getNewsDetail(newsID: string): Promise<ResultDomain<Resource>> {
const response = await api.get<Resource>(`/homepage/news/detail/${newsID}`);
return response.data;
},
/**
* 获取最新思政新闻
* @param limit 限制数量
* @returns Promise<ResultDomain<Resource>>
*/
async getLatestNews(limit?: number): Promise<ResultDomain<Resource>> {
const response = await api.get<Resource>('/homepage/news/latest', { limit });
return response.data;
},
/**
* 获取顶部菜单栏配置
* @returns Promise<ResultDomain<any>>
*/
async getTopMenuConfig(): Promise<ResultDomain<any>> {
const response = await api.get<any>('/homepage/menu/top-menu');
return response.data;
},
/**
* 后台修改菜单名称
* @param menuData 菜单数据
* @returns Promise<ResultDomain<boolean>>
*/
async updateMenuName(menuData: any): Promise<ResultDomain<boolean>> {
const response = await api.put<boolean>('/homepage/menu/update-name', menuData);
return response.data;
},
/**
* 获取菜单项列表
* @returns Promise<ResultDomain<any>>
*/
async getMenuList(): Promise<ResultDomain<any>> {
const response = await api.get<any>('/homepage/menu/list');
return response.data;
},
/**
* 模糊检索资源
* @param keyword 关键词
* @returns Promise<ResultDomain<Resource>>
*/
async searchResources(keyword: string): Promise<ResultDomain<Resource>> {
const response = await api.get<Resource>('/homepage/search', { keyword });
return response.data;
},
/**
* 实时搜索建议
* @param keyword 关键词
* @returns Promise<ResultDomain<any>>
*/
async getSearchSuggestions(keyword: string): Promise<ResultDomain<any>> {
const response = await api.get<any>('/homepage/search/suggestions', { keyword });
return response.data;
},
/**
* 获取热门搜索词
* @returns Promise<ResultDomain<any>>
*/
async getHotKeywords(): Promise<ResultDomain<any>> {
const response = await api.get<any>('/homepage/search/hot-keywords');
return response.data;
},
/**
* 搜索新闻
* @param keyword 关键词
* @returns Promise<ResultDomain<Resource>>
*/
async searchNews(keyword: string): Promise<ResultDomain<Resource>> {
const response = await api.get<Resource>('/homepage/search/news', { keyword });
return response.data;
},
/**
* 搜索课程
* @param keyword 关键词
* @returns Promise<ResultDomain<any>>
*/
async searchCourses(keyword: string): Promise<ResultDomain<any>> {
const response = await api.get<any>('/homepage/search/courses', { keyword });
return response.data;
},
/**
* 获取首页统计数据
* @returns Promise<ResultDomain<any>>
*/
async getHomePageStatistics(): Promise<ResultDomain<any>> {
const response = await api.get<any>('/homepage/statistics');
return response.data;
},
/**
* 获取今日访问量
* @returns Promise<ResultDomain<any>>
*/
async getTodayVisits(): Promise<ResultDomain<any>> {
const response = await api.get<any>('/homepage/statistics/today-visits');
return response.data;
},
/**
* 获取资源总数
* @returns Promise<ResultDomain<any>>
*/
async getTotalResources(): Promise<ResultDomain<any>> {
const response = await api.get<any>('/homepage/statistics/total-resources');
return response.data;
}
};