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": "删除成功"}) }