100 lines
2.1 KiB
Go
100 lines
2.1 KiB
Go
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"
|
|
)
|
|
|
|
// GetCategories 获取所有分类
|
|
func GetCategories(c *gin.Context) {
|
|
categories, err := repositories.GetCategories()
|
|
if err != nil {
|
|
utils.ServerError(c, err)
|
|
return
|
|
}
|
|
utils.Success(c, categories)
|
|
}
|
|
|
|
// GetCategoryByID 根据ID获取分类
|
|
func GetCategoryByID(c *gin.Context) {
|
|
idStr := c.Param("id")
|
|
id, err := strconv.ParseUint(idStr, 10, 32)
|
|
if err != nil {
|
|
utils.Error(c, 400, "Invalid category ID")
|
|
return
|
|
}
|
|
|
|
category, err := repositories.GetCategoryByID(uint(id))
|
|
if err != nil {
|
|
utils.ServerError(c, err)
|
|
return
|
|
}
|
|
if category == nil {
|
|
utils.Error(c, 404, "Category not found")
|
|
return
|
|
}
|
|
|
|
utils.Success(c, category)
|
|
}
|
|
|
|
// AdminCreateCategory 创建分类
|
|
func AdminCreateCategory(c *gin.Context) {
|
|
var category models.Category
|
|
if err := c.ShouldBindJSON(&category); err != nil {
|
|
utils.Error(c, 400, err.Error())
|
|
return
|
|
}
|
|
|
|
if err := repositories.CreateCategory(&category); err != nil {
|
|
utils.ServerError(c, err)
|
|
return
|
|
}
|
|
|
|
utils.Success(c, category)
|
|
}
|
|
|
|
// AdminUpdateCategory 更新分类
|
|
func AdminUpdateCategory(c *gin.Context) {
|
|
idStr := c.Param("id")
|
|
id, err := strconv.ParseUint(idStr, 10, 32)
|
|
if err != nil {
|
|
utils.Error(c, 400, "Invalid category ID")
|
|
return
|
|
}
|
|
|
|
var category models.Category
|
|
if err := c.ShouldBindJSON(&category); err != nil {
|
|
utils.Error(c, 400, err.Error())
|
|
return
|
|
}
|
|
category.ID = uint(id)
|
|
|
|
if err := repositories.UpdateCategory(&category); err != nil {
|
|
utils.ServerError(c, err)
|
|
return
|
|
}
|
|
|
|
utils.Success(c, category)
|
|
}
|
|
|
|
// AdminDeleteCategory 删除分类
|
|
func AdminDeleteCategory(c *gin.Context) {
|
|
idStr := c.Param("id")
|
|
id, err := strconv.ParseUint(idStr, 10, 32)
|
|
if err != nil {
|
|
utils.Error(c, 400, "Invalid category ID")
|
|
return
|
|
}
|
|
|
|
if err := repositories.DeleteCategory(uint(id)); err != nil {
|
|
utils.ServerError(c, err)
|
|
return
|
|
}
|
|
|
|
utils.SuccessWithMsg(c, "Category deleted successfully", nil)
|
|
}
|