package v1 import ( "log" ) import ( "github.com/gin-gonic/gin" "github.com/spf13/cast" ) import ( "resource-server/common" "resource-server/models" "resource-server/service" ) func GetConfigs(c *gin.Context) { res, err := service.GetConfigList() if err != nil { common.HttpErr(c, err) return } common.HttpSuccess(c, res) } func GetConfigOptions(c *gin.Context) { flag := c.Query("flag") enable := cast.ToBool(c.Query("enable")) res, err := service.GetConfigOptionList(flag, enable) if err != nil { common.HttpErr(c, err) return } common.HttpSuccess(c, res) } func UpdateConfigItems(c *gin.Context) { var items map[string]interface{} if err := c.ShouldBindJSON(&items); err != nil { common.HttpErr(c, err) return } for key, value := range items { log.Printf("Key: %s, Value: %v", key, value) var configItem models.ConfigItem if err := models.DB.Model(&models.ConfigItem{}).First(&configItem, "uri = ?", key).Error; err != nil { //todo 回滚 common.HttpErr(c, err) return } else { //todo 校验 回滚 switch configItem.ValueType { case "string": configItem.Value = cast.ToString(value) case "int": configItem.Value = cast.ToString(cast.ToInt(value)) case "bool": configItem.Value = cast.ToString(cast.ToBool(value)) } err := models.DB.Save(&configItem).Error if err != nil { common.HttpErr(c, err) return } } } common.HttpSuccess(c) }