web
This commit is contained in:
@@ -109,6 +109,25 @@ func (h *AdminProductHandler) UpdateProduct(c *gin.Context) {
|
||||
response.BadRequest(c, "请求参数错误")
|
||||
return
|
||||
}
|
||||
|
||||
// 处理 category_id 字段:转换为 JSONUintSlice 类型
|
||||
if categoryIDRaw, ok := updates["category_id"]; ok {
|
||||
switch v := categoryIDRaw.(type) {
|
||||
case []interface{}:
|
||||
var categoryIDs []uint
|
||||
for _, item := range v {
|
||||
switch id := item.(type) {
|
||||
case float64:
|
||||
categoryIDs = append(categoryIDs, uint(id))
|
||||
case int:
|
||||
categoryIDs = append(categoryIDs, uint(id))
|
||||
}
|
||||
}
|
||||
updates["category_id"] = model.JSONUintSlice(categoryIDs)
|
||||
case []uint:
|
||||
updates["category_id"] = model.JSONUintSlice(v)
|
||||
}
|
||||
}
|
||||
|
||||
// 商品更新时间会自动设置
|
||||
|
||||
@@ -212,6 +231,7 @@ func (h *AdminProductHandler) CreateCategory(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
// 创建分类
|
||||
if err := h.productService.CreateCategory(&category); err != nil {
|
||||
response.ErrorWithMessage(c, response.ERROR, err.Error())
|
||||
return
|
||||
@@ -235,6 +255,40 @@ func (h *AdminProductHandler) UpdateCategory(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
// 处理 platform 字段:转换为 JSONSlice 类型
|
||||
if platformRaw, ok := updates["platform"]; ok {
|
||||
switch v := platformRaw.(type) {
|
||||
case []interface{}:
|
||||
// 前端传来的是数组
|
||||
var platforms []string
|
||||
for _, item := range v {
|
||||
if str, ok := item.(string); ok {
|
||||
platforms = append(platforms, str)
|
||||
}
|
||||
}
|
||||
updates["platform"] = model.JSONSlice(platforms)
|
||||
case string:
|
||||
// 前端传来的是单个字符串,转为数组
|
||||
updates["platform"] = model.JSONSlice([]string{v})
|
||||
default:
|
||||
// 其他类型,删除该字段
|
||||
delete(updates, "platform")
|
||||
}
|
||||
}
|
||||
|
||||
// 删除只读字段,避免更新时出错
|
||||
readonlyFields := []string{"id", "created_at", "updated_at", "children", "hasChildren", "level"}
|
||||
for _, field := range readonlyFields {
|
||||
delete(updates, field)
|
||||
}
|
||||
|
||||
// 删除不存在的字段
|
||||
nonExistFields := []string{"is_show", "keywords"}
|
||||
for _, field := range nonExistFields {
|
||||
delete(updates, field)
|
||||
}
|
||||
|
||||
// 更新分类基本信息
|
||||
if err := h.productService.UpdateCategory(uint(id), updates); err != nil {
|
||||
response.ErrorWithMessage(c, response.ERROR, err.Error())
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user