This commit is contained in:
2025-09-01 21:15:15 +08:00
parent 16a8cd5506
commit 2f3817c8f0
6 changed files with 181 additions and 1 deletions

View File

@@ -146,6 +146,55 @@ func (h *ArticleHandler) ListArticles(c *gin.Context) {
h.responseBuilder.Success(c, response, "获取文章列表成功")
}
// ListArticlesForAdmin 获取文章列表(管理员端)
// @Summary 获取文章列表(管理员端)
// @Description 分页获取文章列表,支持多种筛选条件,包含所有状态的文章
// @Tags 文章管理-管理端
// @Accept json
// @Produce json
// @Security Bearer
// @Param page query int false "页码" default(1)
// @Param page_size query int false "每页数量" default(10)
// @Param status query string false "文章状态"
// @Param category_id query string false "分类ID"
// @Param tag_id query string false "标签ID"
// @Param title query string false "标题关键词"
// @Param summary query string false "摘要关键词"
// @Param is_featured query bool false "是否推荐"
// @Param order_by query string false "排序字段"
// @Param order_dir query string false "排序方向"
// @Success 200 {object} responses.ArticleListResponse "获取文章列表成功"
// @Failure 400 {object} map[string]interface{} "请求参数错误"
// @Failure 401 {object} map[string]interface{} "未认证"
// @Failure 500 {object} map[string]interface{} "服务器内部错误"
// @Router /api/v1/admin/articles [get]
func (h *ArticleHandler) ListArticlesForAdmin(c *gin.Context) {
var query appQueries.ListArticleQuery
if err := h.validator.ValidateQuery(c, &query); err != nil {
return
}
// 设置默认值
if query.Page <= 0 {
query.Page = 1
}
if query.PageSize <= 0 {
query.PageSize = 10
}
if query.PageSize > 100 {
query.PageSize = 100
}
response, err := h.appService.ListArticlesForAdmin(c.Request.Context(), &query)
if err != nil {
h.logger.Error("获取文章列表失败", zap.Error(err))
h.responseBuilder.InternalError(c, "获取文章列表失败")
return
}
h.responseBuilder.Success(c, response, "获取文章列表成功")
}
// UpdateArticle 更新文章