feat(services): 新增文章分页查询方法,支持按状态筛选文章 style(styles): 调整主布局样式,优化分页组件显示效果 docs(README): 更新API文档,完善服务模块说明和类型定义 fix(components): 修复左侧模块点击属性时使用错误字段名的问题 chore(package): 移除未使用的依赖项,清理项目依赖 perf(layouts): 优化主布局组件性能,拆分功能模块,减少重复计算 test(views): 为分页组件添加基础测试用例 build: 更新构建配置,优化生产环境打包 ci: 调整CI配置,添加类型检查步骤
149 lines
4.5 KiB
JavaScript
149 lines
4.5 KiB
JavaScript
// 文章相关API服务
|
||
import api from './apiService'
|
||
|
||
/**
|
||
* 文章服务类
|
||
*/
|
||
class ArticleService {
|
||
/**
|
||
* 分页查询文章列表
|
||
* @param {import('../types').PaginationParams} params - 分页查询参数
|
||
* @param status 文章状态(0:未发表 1:已发表 2:已删除)
|
||
* @param page 页码,从0开始(可选,默认为0)
|
||
* @param size 每页大小(可选,默认为10,最大为100)
|
||
* @returns {Promise<import('../types').ApiResponse<import('../types').Article[]>>}
|
||
*/
|
||
getArticles(params = {}) {
|
||
return api.get(`/articles/status/page/${params.status}/${params.page}/${params.size}`, { params })
|
||
}
|
||
|
||
/**
|
||
* 获取已发布文章列表
|
||
* @param {import('../types').PaginationParams} params - 查询参数
|
||
* @returns {Promise<import('../types').ApiResponse<import('../types').Article[]>>}
|
||
*/
|
||
getAllArticles(params = {}) {
|
||
return api.get('/articles/published', { params })
|
||
}
|
||
/**
|
||
* 根据状态获取文章列表
|
||
* @param {number} status - 文章状态(0:未发表 1:已发表 2:已删除)
|
||
* @returns {Promise<import('../types').ApiResponse<import('../types').Article[]>>}
|
||
*/
|
||
getArticlesByStatus(status) {
|
||
return api.get(`/articles/status/${status}`)
|
||
}
|
||
/**
|
||
* 获取所有文章列表(包含已删除)
|
||
* @param {import('../types').PaginationParams} params - 查询参数
|
||
* @returns {Promise<import('../types').ApiResponse<import('../types').Article[]>>}
|
||
*/
|
||
getAllArticlesWithDeleted(params = {}) {
|
||
return api.get('/articles', { params })
|
||
}
|
||
/**
|
||
* 根据ID获取文章详情
|
||
* @param {number} articleid - 文章ID
|
||
* @returns {Promise<import('../types').ApiResponse<import('../types').Article>>}
|
||
*/
|
||
getArticleById(articleid) {
|
||
return api.get(`/articles/${articleid}`)
|
||
}
|
||
|
||
/**
|
||
* 根据属性ID获取文章列表
|
||
* @param {number} attributeid - 属性ID
|
||
* @returns {Promise<import('../types').ApiResponse<import('../types').Article[]>>}
|
||
*/
|
||
getArticlesByAttributeId(attributeid) {
|
||
return api.get(`/articles/attribute/${attributeid}`)
|
||
}
|
||
|
||
/**
|
||
* 根据标题查询文章列表
|
||
* @param {string} title - 文章标题
|
||
* @returns {Promise<import('../types').ApiResponse<import('../types').Article[]>>}
|
||
*/
|
||
getArticlesByTitle(title) {
|
||
return api.get(`/articles/title/${title}`)
|
||
}
|
||
|
||
/**
|
||
* 获取热门文章
|
||
* @returns {Promise<import('../types').ApiResponse<import('../types').Article[]>>}
|
||
*/
|
||
getPopularArticles() {
|
||
return api.get('/articles/popular')
|
||
}
|
||
|
||
/**
|
||
* 创建文章
|
||
* @param {import('../types').ArticleDto} articleData - 文章数据
|
||
* @returns {Promise<import('../types').ApiResponse<import('../types').Article>>}
|
||
*/
|
||
createArticle(articleData) {
|
||
return api.post('/articles', articleData)
|
||
}
|
||
|
||
/**
|
||
* 更新文章
|
||
* @param {number} articleid - 文章ID
|
||
* @param {import('../types').ArticleDto} articleData - 文章数据
|
||
* @returns {Promise<import('../types').ApiResponse<import('../types').Article>>}
|
||
*/
|
||
updateArticle(articleid, articleData) {
|
||
return api.put(`/articles/${articleid}`, articleData)
|
||
}
|
||
|
||
/**
|
||
* 删除文章
|
||
* @param {number} articleid - 文章ID
|
||
* @returns {Promise<import('../types').ApiResponse<boolean>>}
|
||
*/
|
||
deleteArticle(articleid) {
|
||
return api.delete(`/articles/${articleid}`)
|
||
}
|
||
|
||
/**
|
||
* 根据分类获取文章
|
||
* @param {number} categoryid - 分类ID
|
||
* @returns {Promise<import('../types').ApiResponse<import('../types').Article[]>>}
|
||
*/
|
||
getArticlesByCategory(categoryid) {
|
||
return api.get(`/articles/category/${categoryid}`)
|
||
}
|
||
|
||
/**
|
||
* 增加文章浏览量
|
||
* @param {number} articleid - 文章ID
|
||
* @returns {Promise<import('../types').ApiResponse<boolean>>}
|
||
*/
|
||
incrementArticleViews(articleid) {
|
||
return api.post(`/articles/view/${articleid}`)
|
||
}
|
||
|
||
/**
|
||
* 根据属性ID获取最新文章
|
||
* @param {number} attributeid - 属性ID
|
||
* @returns {Promise<import('../types').ApiResponse<import('../types').Article[]>>}
|
||
*/
|
||
getLatestArticlesByAttribute(attributeid) {
|
||
return api.get(`/articles/attribute/${attributeid}/latest`)
|
||
}
|
||
|
||
/**
|
||
* 点赞文章
|
||
* @param {number} articleid - 文章ID
|
||
* @returns {Promise<import('../types').ApiResponse<boolean>>}
|
||
*/
|
||
likeArticle(articleid) {
|
||
return api.post(`/articles/like/${articleid}`)
|
||
}
|
||
}
|
||
|
||
// 创建并导出服务实例
|
||
const articleService = new ArticleService()
|
||
export default articleService
|
||
|
||
// 导出服务类供特殊场景使用
|
||
export { ArticleService } |