From 45337d9b80b0bb9fd388495fa9734ae1f21c6770 Mon Sep 17 00:00:00 2001 From: tbphp Date: Thu, 3 Jul 2025 19:58:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/config/system_settings.go | 31 +++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/internal/config/system_settings.go b/internal/config/system_settings.go index 02db9c5..891d464 100644 --- a/internal/config/system_settings.go +++ b/internal/config/system_settings.go @@ -97,10 +97,17 @@ func DefaultSystemSettings() SystemSettings { if fieldValue.CanSet() { switch fieldValue.Kind() { case reflect.Int: - if val, err := strconv.ParseInt(defaultTag, 10, 64); err == nil { - fieldValue.SetInt(val) + if intVal, err := strconv.ParseInt(defaultTag, 10, 64); err == nil { + fieldValue.SetInt(int64(intVal)) + } + case reflect.String: + if strVal, ok := interfaceToString(defaultTag); ok { + fieldValue.SetString(strVal) + } + case reflect.Bool: + if boolVal, ok := interfaceToBool(defaultTag); ok { + fieldValue.SetBool(boolVal) } - // Add cases for other types like string, bool if needed } } } @@ -345,13 +352,23 @@ func (sm *SystemSettingsManager) mapToStruct(m map[string]string, s *SystemSetti } } - for key, valStr := range m { + for key, val := range m { if fieldName, ok := jsonToField[key]; ok { fieldValue := v.FieldByName(fieldName) if fieldValue.IsValid() && fieldValue.CanSet() { - // 假设所有字段都是 int 类型 - if intVal, err := strconv.Atoi(valStr); err == nil { - fieldValue.SetInt(int64(intVal)) + switch fieldValue.Kind() { + case reflect.Int: + if intVal, err := interfaceToInt(val); err == nil { + fieldValue.SetInt(int64(intVal)) + } + case reflect.String: + if strVal, ok := interfaceToString(val); ok { + fieldValue.SetString(strVal) + } + case reflect.Bool: + if boolVal, ok := interfaceToBool(val); ok { + fieldValue.SetBool(boolVal) + } } } }