Files
schoolNews/schoolNewsWeb/src/apis/resource/resource.ts

267 lines
8.2 KiB
TypeScript
Raw Normal View History

2025-10-20 11:25:34 +08:00
/**
* @description API接口
* @filename resource.ts
* @author yslg
* @copyright xyzh
* @since 2025-10-15
*/
import { api } from '@/apis';
2025-11-18 11:48:01 +08:00
import type { ResultDomain, Resource, PageParam, ResourceVO, UserCollection, TaskItemVO } from '@/types';
2025-10-20 11:25:34 +08:00
/**
* API服务
*/
export const resourceApi = {
// ==================== 资源基础操作 ====================
/**
*
* @param filter
* @returns Promise<ResultDomain<Resource>>
*/
2025-11-18 11:48:01 +08:00
async getResourceList(filter?: Resource): Promise<ResultDomain<Resource>> {
2025-10-20 11:25:34 +08:00
const response = await api.get<Resource>('/news/resources/list', filter);
return response.data;
},
2025-10-20 15:08:41 +08:00
/**
*
* @param filter
* @param pageParam
* @returns Promise<ResultDomain<Resource>>
*/
2025-11-18 11:48:01 +08:00
async getResourcePage(pageParam: PageParam, filter?: Resource): Promise<ResultDomain<Resource>> {
2025-10-20 15:08:41 +08:00
const response = await api.post<Resource>('/news/resources/page', {
pageParam,
filter,
});
return response.data;
},
2025-11-17 15:16:11 +08:00
/**
*
* @param filter
* @param pageParam
* @returns Promise<ResultDomain<ResourceVO>>
*/
2025-11-18 11:48:01 +08:00
async getResourcePageOrderByViewCount(pageParam: PageParam, filter?: Resource): Promise<ResultDomain<ResourceVO>> {
2025-11-17 15:16:11 +08:00
const response = await api.post<ResourceVO>('/news/resources/page/view-count', {
pageParam,
filter,
});
return response.data;
},
2025-10-20 11:25:34 +08:00
/**
* ID获取资源详情
* @param resourceID ID
* @returns Promise<ResultDomain<Resource>>
*/
2025-10-20 15:08:41 +08:00
async getResourceById(resourceID: string): Promise<ResultDomain<ResourceVO>> {
const response = await api.get<ResourceVO>(`/news/resources/resource/${resourceID}`);
2025-10-20 11:25:34 +08:00
return response.data;
},
/**
*
* @param resource
* @returns Promise<ResultDomain<Resource>>
*/
2025-10-20 15:08:41 +08:00
async createResource(resource: ResourceVO): Promise<ResultDomain<ResourceVO>> {
const response = await api.post<ResourceVO>('/news/resources/resource', resource);
2025-10-20 11:25:34 +08:00
return response.data;
},
/**
*
* @param resource
2025-10-20 15:08:41 +08:00
* @returns Promise<ResultDomain<ResourceVO>>
2025-10-20 11:25:34 +08:00
*/
2025-10-20 15:08:41 +08:00
async updateResource(resource: ResourceVO): Promise<ResultDomain<ResourceVO>> {
const response = await api.put<ResourceVO>('/news/resources/resource', resource);
2025-10-20 11:25:34 +08:00
return response.data;
},
/**
*
* @param resourceID ID
* @returns Promise<ResultDomain<boolean>>
*/
async deleteResource(resourceID: string): Promise<ResultDomain<boolean>> {
const response = await api.delete<boolean>(`/news/resources/resource/${resourceID}`);
return response.data;
},
// ==================== 资源状态操作 ====================
/**
*
* @param resourceID ID
* @param status 0稿 1 2
* @returns Promise<ResultDomain<Resource>>
*/
async updateResourceStatus(resourceID: string, status: number): Promise<ResultDomain<Resource>> {
const response = await api.put<Resource>(`/news/resources/resource/${resourceID}/status`, null, {
params: { status }
});
return response.data;
},
/**
*
* @param resourceID ID
* @returns Promise<ResultDomain<Resource>>
*/
async publishResource(resourceID: string): Promise<ResultDomain<Resource>> {
const response = await api.post<Resource>(`/news/resources/resource/${resourceID}/publish`);
return response.data;
},
/**
*
* @param resourceID ID
* @returns Promise<ResultDomain<Resource>>
*/
async unpublishResource(resourceID: string): Promise<ResultDomain<Resource>> {
const response = await api.post<Resource>(`/news/resources/resource/${resourceID}/unpublish`);
return response.data;
},
// ==================== 资源统计操作 ====================
/**
*
* @param resourceID ID
* @returns Promise<ResultDomain<Resource>>
*/
async incrementViewCount(resourceID: string): Promise<ResultDomain<Resource>> {
const response = await api.post<Resource>(`/news/resources/resource/${resourceID}/view`);
return response.data;
},
/**
*
* @param resourceID ID
* @returns Promise<ResultDomain<Resource>>
*/
async incrementLikeCount(resourceID: string): Promise<ResultDomain<Resource>> {
const response = await api.post<Resource>(`/news/resources/resource/${resourceID}/like`);
return response.data;
},
// ==================== 资源推荐和轮播操作 ====================
/**
*
* @param resourceID ID
* @param isRecommend
* @returns Promise<ResultDomain<Resource>>
*/
async setResourceRecommend(resourceID: string, isRecommend: boolean): Promise<ResultDomain<Resource>> {
const response = await api.put<Resource>(`/news/resources/resource/${resourceID}/recommend`, null, {
params: { isRecommend }
});
return response.data;
},
/**
*
* @param resourceID ID
* @param isBanner
* @returns Promise<ResultDomain<Resource>>
*/
async setResourceBanner(resourceID: string, isBanner: boolean): Promise<ResultDomain<Resource>> {
const response = await api.put<Resource>(`/news/resources/resource/${resourceID}/banner`, null, {
params: { isBanner }
});
return response.data;
},
// ==================== 资源查询操作 ====================
/**
*
* @param limit
* @returns Promise<ResultDomain<Resource>>
*/
async getRecommendResources(limit?: number): Promise<ResultDomain<Resource>> {
const response = await api.get<Resource>('/news/resources/recommend', { limit });
return response.data;
},
/**
*
* @param limit
* @returns Promise<ResultDomain<Resource>>
*/
async getBannerResources(limit?: number): Promise<ResultDomain<Resource>> {
const response = await api.get<Resource>('/news/resources/banner', { limit });
return response.data;
},
/**
*
* @param keyword
2025-10-27 16:21:00 +08:00
* @param tagID ID
2025-10-20 11:25:34 +08:00
* @param status
* @returns Promise<ResultDomain<Resource>>
*/
async searchResources(
keyword: string,
2025-10-27 16:21:00 +08:00
tagID?: string,
2025-10-20 11:25:34 +08:00
status?: number
): Promise<ResultDomain<Resource>> {
const params: any = { keyword };
2025-10-27 16:21:00 +08:00
if (tagID) params.tagID = tagID;
2025-10-20 11:25:34 +08:00
if (status !== undefined) params.status = status;
const response = await api.get<Resource>('/news/resources/search', params);
return response.data;
2025-11-18 11:48:01 +08:00
},
/**
*
* @param request pageParam和filter
* @returns Promise<ResultDomain<TaskItemVO>>
*/
async searchItems(request: { pageParam: PageParam; filter: Resource }): Promise<ResultDomain<TaskItemVO>> {
const response = await api.post<TaskItemVO>('/news/resources/search', request);
return response.data;
2026-01-12 13:52:19 +08:00
},
// ==================== 知识库操作 ====================
/**
*
* @param resourceID ID
* @returns Promise<ResultDomain<Resource>>
*/
async importToKnowledge(resourceID: string): Promise<ResultDomain<Resource>> {
const response = await api.post<Resource>(`/news/article-knowledge/import/${resourceID}`);
return response.data;
},
/**
*
* @param resourceIds ID列表
* @returns Promise<ResultDomain<Resource>>
*/
async batchImportToKnowledge(resourceIds: string[]): Promise<ResultDomain<Resource>> {
const response = await api.post<Resource>('/news/article-knowledge/import/batch', { resourceIds });
return response.data;
},
/**
*
* @param resourceID ID
* @returns Promise<ResultDomain<boolean>>
*/
async removeFromKnowledge(resourceID: string): Promise<ResultDomain<boolean>> {
const response = await api.delete<boolean>(`/news/article-knowledge/remove/${resourceID}`);
return response.data;
2025-10-20 11:25:34 +08:00
}
};
export default resourceApi;