package controller import ( "strconv" "github.com/QuantumNous/new-api/common" "github.com/QuantumNous/new-api/model" "github.com/gin-gonic/gin" ) // GetAllPricingTags 获取所有定价标签 func GetAllPricingTags(c *gin.Context) { list, err := model.GetAllPricingTags() if err != nil { common.ApiError(c, err) return } common.ApiSuccess(c, list) } // CreatePricingTagRequest 创建定价标签请求 type CreatePricingTagRequest struct { Name string `json:"name" binding:"required"` Color string `json:"color"` Description string `json:"description"` SortOrder int `json:"sort_order"` } // CreatePricingTag 创建定价标签 func CreatePricingTag(c *gin.Context) { var req CreatePricingTagRequest if err := c.ShouldBindJSON(&req); err != nil { common.ApiError(c, err) return } // 检查名称是否重复 existing, _ := model.GetPricingTagByName(req.Name) if existing != nil { common.ApiErrorMsg(c, "tag name already exists") return } pt := &model.PricingTag{ Name: req.Name, Color: req.Color, Description: req.Description, SortOrder: req.SortOrder, } if pt.Color == "" { pt.Color = "#1890ff" } if err := pt.Insert(); err != nil { common.ApiError(c, err) return } common.ApiSuccess(c, pt) } // UpdatePricingTagRequest 更新定价标签请求 type UpdatePricingTagRequest struct { Name string `json:"name"` Color string `json:"color"` Description string `json:"description"` SortOrder int `json:"sort_order"` } // UpdatePricingTag 更新定价标签 func UpdatePricingTag(c *gin.Context) { idStr := c.Param("id") id, err := strconv.Atoi(idStr) if err != nil { common.ApiError(c, err) return } var req UpdatePricingTagRequest if err := c.ShouldBindJSON(&req); err != nil { common.ApiError(c, err) return } pt, err := model.GetPricingTagById(id) if err != nil { common.ApiError(c, err) return } // 检查名称是否与其他标签重复 if req.Name != "" && req.Name != pt.Name { existing, _ := model.GetPricingTagByName(req.Name) if existing != nil && existing.Id != id { common.ApiErrorMsg(c, "tag name already exists") return } pt.Name = req.Name } if req.Color != "" { pt.Color = req.Color } pt.Description = req.Description pt.SortOrder = req.SortOrder if err := pt.Update(); err != nil { common.ApiError(c, err) return } common.ApiSuccess(c, pt) } // DeletePricingTag 删除定价标签 func DeletePricingTag(c *gin.Context) { idStr := c.Param("id") id, err := strconv.Atoi(idStr) if err != nil { common.ApiError(c, err) return } pt := &model.PricingTag{Id: id} if err := pt.Delete(); err != nil { common.ApiError(c, err) return } common.ApiSuccess(c, nil) }