|
|
|
@@ -0,0 +1,131 @@ |
|
|
|
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) |
|
|
|
} |