feat: 支持数据类型完善
This commit is contained in:
@@ -97,10 +97,17 @@ func DefaultSystemSettings() SystemSettings {
|
|||||||
if fieldValue.CanSet() {
|
if fieldValue.CanSet() {
|
||||||
switch fieldValue.Kind() {
|
switch fieldValue.Kind() {
|
||||||
case reflect.Int:
|
case reflect.Int:
|
||||||
if val, err := strconv.ParseInt(defaultTag, 10, 64); err == nil {
|
if intVal, err := strconv.ParseInt(defaultTag, 10, 64); err == nil {
|
||||||
fieldValue.SetInt(val)
|
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 {
|
if fieldName, ok := jsonToField[key]; ok {
|
||||||
fieldValue := v.FieldByName(fieldName)
|
fieldValue := v.FieldByName(fieldName)
|
||||||
if fieldValue.IsValid() && fieldValue.CanSet() {
|
if fieldValue.IsValid() && fieldValue.CanSet() {
|
||||||
// 假设所有字段都是 int 类型
|
switch fieldValue.Kind() {
|
||||||
if intVal, err := strconv.Atoi(valStr); err == nil {
|
case reflect.Int:
|
||||||
fieldValue.SetInt(int64(intVal))
|
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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user