79 lines
1.9 KiB
Go
79 lines
1.9 KiB
Go
package handlers
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"gorm.io/gorm"
|
|
|
|
"soda-api/backend/internal/models"
|
|
"soda-api/backend/internal/utils"
|
|
)
|
|
|
|
type ProductHandler struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
func NewProductHandler(db *gorm.DB) *ProductHandler {
|
|
return &ProductHandler{db: db}
|
|
}
|
|
|
|
func (h *ProductHandler) List(c *gin.Context) {
|
|
category := c.Query("category")
|
|
var products []models.Product
|
|
query := h.db
|
|
if category != "" {
|
|
query = query.Where("category = ?", category)
|
|
}
|
|
if err := query.Order("id desc").Find(&products).Error; err != nil {
|
|
utils.JSONError(c, 500, "获取商品失败")
|
|
return
|
|
}
|
|
utils.JSONSuccess(c, products)
|
|
}
|
|
|
|
func (h *ProductHandler) Get(c *gin.Context) {
|
|
var product models.Product
|
|
if err := h.db.First(&product, c.Param("id")).Error; err != nil {
|
|
utils.JSONError(c, 404, "商品不存在")
|
|
return
|
|
}
|
|
utils.JSONSuccess(c, product)
|
|
}
|
|
|
|
func (h *ProductHandler) Create(c *gin.Context) {
|
|
var product models.Product
|
|
if err := c.ShouldBindJSON(&product); err != nil {
|
|
utils.JSONError(c, 400, "请填写完整的商品信息")
|
|
return
|
|
}
|
|
if err := h.db.Create(&product).Error; err != nil {
|
|
utils.JSONError(c, 500, "创建商品失败")
|
|
return
|
|
}
|
|
utils.JSONSuccess(c, product)
|
|
}
|
|
|
|
func (h *ProductHandler) Update(c *gin.Context) {
|
|
var product models.Product
|
|
if err := h.db.First(&product, c.Param("id")).Error; err != nil {
|
|
utils.JSONError(c, 404, "商品不存在")
|
|
return
|
|
}
|
|
if err := c.ShouldBindJSON(&product); err != nil {
|
|
utils.JSONError(c, 400, "请填写正确的商品信息")
|
|
return
|
|
}
|
|
if err := h.db.Save(&product).Error; err != nil {
|
|
utils.JSONError(c, 500, "更新失败")
|
|
return
|
|
}
|
|
utils.JSONSuccess(c, product)
|
|
}
|
|
|
|
func (h *ProductHandler) Delete(c *gin.Context) {
|
|
if err := h.db.Delete(&models.Product{}, c.Param("id")).Error; err != nil {
|
|
utils.JSONError(c, 500, "删除失败")
|
|
return
|
|
}
|
|
utils.JSONSuccess(c, gin.H{"message": "删除成功"})
|
|
}
|