BUG修复,返回结构统一
This commit is contained in:
168
server/handlers/column.go
Normal file
168
server/handlers/column.go
Normal file
@@ -0,0 +1,168 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/niangaodev/art-code/models"
|
||||
"github.com/niangaodev/art-code/repositories"
|
||||
"github.com/niangaodev/art-code/utils"
|
||||
)
|
||||
|
||||
// GetColumns 获取所有专栏
|
||||
func GetColumns(c *gin.Context) {
|
||||
columns, err := repositories.GetColumns()
|
||||
if err != nil {
|
||||
utils.ServerError(c, err)
|
||||
return
|
||||
}
|
||||
utils.Success(c, columns)
|
||||
}
|
||||
|
||||
// GetColumnByID 根据ID获取专栏
|
||||
func GetColumnByID(c *gin.Context) {
|
||||
idStr := c.Param("id")
|
||||
id, err := strconv.ParseUint(idStr, 10, 32)
|
||||
if err != nil {
|
||||
utils.Error(c, 400, "Invalid column ID")
|
||||
return
|
||||
}
|
||||
|
||||
col, err := repositories.GetColumnByID(uint(id))
|
||||
if err != nil {
|
||||
utils.ServerError(c, err)
|
||||
return
|
||||
}
|
||||
if col == nil {
|
||||
utils.Error(c, 404, "Column not found")
|
||||
return
|
||||
}
|
||||
|
||||
utils.Success(c, col)
|
||||
}
|
||||
|
||||
// GetColumnPosts 获取专栏文章
|
||||
func GetColumnPosts(c *gin.Context) {
|
||||
idStr := c.Param("id")
|
||||
id, err := strconv.ParseUint(idStr, 10, 32)
|
||||
if err != nil {
|
||||
utils.Error(c, 400, "Invalid column ID")
|
||||
return
|
||||
}
|
||||
|
||||
posts, err := repositories.GetPostsByColumnID(uint(id))
|
||||
if err != nil {
|
||||
utils.ServerError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
// 使用 BuildPostsResponse 转换格式
|
||||
utils.Success(c, repositories.BuildPostsResponse(posts))
|
||||
}
|
||||
|
||||
// AdminCreateColumn 创建专栏
|
||||
func AdminCreateColumn(c *gin.Context) {
|
||||
var col models.Column
|
||||
if err := c.ShouldBindJSON(&col); err != nil {
|
||||
utils.Error(c, 400, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
if err := repositories.CreateColumn(&col); err != nil {
|
||||
utils.ServerError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
utils.Success(c, col)
|
||||
}
|
||||
|
||||
// AdminUpdateColumn 更新专栏
|
||||
func AdminUpdateColumn(c *gin.Context) {
|
||||
idStr := c.Param("id")
|
||||
id, err := strconv.ParseUint(idStr, 10, 32)
|
||||
if err != nil {
|
||||
utils.Error(c, 400, "Invalid column ID")
|
||||
return
|
||||
}
|
||||
|
||||
var col models.Column
|
||||
if err := c.ShouldBindJSON(&col); err != nil {
|
||||
utils.Error(c, 400, err.Error())
|
||||
return
|
||||
}
|
||||
col.ID = uint(id)
|
||||
|
||||
if err := repositories.UpdateColumn(&col); err != nil {
|
||||
utils.ServerError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
utils.Success(c, col)
|
||||
}
|
||||
|
||||
// AdminDeleteColumn 删除专栏
|
||||
func AdminDeleteColumn(c *gin.Context) {
|
||||
idStr := c.Param("id")
|
||||
id, err := strconv.ParseUint(idStr, 10, 32)
|
||||
if err != nil {
|
||||
utils.Error(c, 400, "Invalid column ID")
|
||||
return
|
||||
}
|
||||
|
||||
if err := repositories.DeleteColumn(uint(id)); err != nil {
|
||||
utils.ServerError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
utils.SuccessWithMsg(c, "Column deleted successfully", nil)
|
||||
}
|
||||
|
||||
// AdminAddPostToColumn 添加文章到专栏
|
||||
func AdminAddPostToColumn(c *gin.Context) {
|
||||
idStr := c.Param("id")
|
||||
columnID, err := strconv.ParseUint(idStr, 10, 32)
|
||||
if err != nil {
|
||||
utils.Error(c, 400, "Invalid column ID")
|
||||
return
|
||||
}
|
||||
|
||||
var req struct {
|
||||
PostID uint `json:"postId"`
|
||||
SortOrder uint `json:"sortOrder"`
|
||||
}
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
utils.Error(c, 400, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
if err := repositories.AddPostToColumn(uint(columnID), req.PostID, req.SortOrder); err != nil {
|
||||
utils.ServerError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
utils.SuccessWithMsg(c, "Post added to column successfully", nil)
|
||||
}
|
||||
|
||||
// AdminRemovePostFromColumn 从专栏移除文章
|
||||
func AdminRemovePostFromColumn(c *gin.Context) {
|
||||
idStr := c.Param("id")
|
||||
columnID, err := strconv.ParseUint(idStr, 10, 32)
|
||||
if err != nil {
|
||||
utils.Error(c, 400, "Invalid column ID")
|
||||
return
|
||||
}
|
||||
|
||||
postIDStr := c.Param("postId")
|
||||
postID, err := strconv.ParseUint(postIDStr, 10, 32)
|
||||
if err != nil {
|
||||
utils.Error(c, 400, "Invalid post ID")
|
||||
return
|
||||
}
|
||||
|
||||
if err := repositories.RemovePostFromColumn(uint(columnID), uint(postID)); err != nil {
|
||||
utils.ServerError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
utils.SuccessWithMsg(c, "Post removed from column successfully", nil)
|
||||
}
|
||||
Reference in New Issue
Block a user