From 1e2044c0d41b5b9fa0bea19e4f785f39ae6b7bc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=90=A6?= Date: Tue, 20 Jan 2026 09:01:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/handlers/setting.go | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/server/handlers/setting.go b/server/handlers/setting.go index 5f1ed48..9ac143f 100644 --- a/server/handlers/setting.go +++ b/server/handlers/setting.go @@ -1,6 +1,8 @@ package handlers import ( + "encoding/json" + "github.com/gin-gonic/gin" "github.com/niangaodev/art-code/models" "github.com/niangaodev/art-code/repositories" @@ -29,10 +31,41 @@ func AdminGetSettings(c *gin.Context) { } } -// AdminUpdateSettings 批量更新设置 +// AdminUpdateSettings 批量更新设置或单个设置更新 func AdminUpdateSettings(c *gin.Context) { + // 读取原始 body + body, err := c.GetRawData() + if err != nil { + utils.Error(c, 400, "Invalid request") + return + } + + // 检查 JSON 是否包含 keyName 字段来判断是 Setting 对象还是 map + var temp map[string]interface{} + if err := json.Unmarshal(body, &temp); err == nil { + if _, ok := temp["keyName"]; ok { + // 如果包含 keyName 字段,认为是 Setting 对象 + var setting models.Setting + if err := json.Unmarshal(body, &setting); err != nil { + utils.Error(c, 400, "Invalid request") + return + } + if setting.KeyName == "" { + utils.Error(c, 400, "keyName is required") + return + } + if err := repositories.UpdateSetting(&setting); err != nil { + utils.ServerError(c, err) + return + } + utils.SuccessWithMsg(c, "Setting updated successfully", nil) + return + } + } + + // 如果不包含 keyName,认为是批量更新的 map var req map[string]string - if err := c.ShouldBindJSON(&req); err != nil { + if err := json.Unmarshal(body, &req); err != nil { utils.Error(c, 400, "Invalid request") return }