Jelajahi Sumber

new:1.ConvertNilToEmptyString把数据里的nil转成空字符串,并去除空格.

QiuSW 1 tahun lalu
induk
melakukan
4948ab6a83
1 mengubah file dengan 26 tambahan dan 0 penghapusan
  1. 26 0
      format/struct.go

+ 26 - 0
format/struct.go

@@ -2,6 +2,7 @@ package format
 
 import (
 	"fmt"
+	"gbase/glog"
 	"reflect"
 	"strconv"
 	"strings"
@@ -24,6 +25,12 @@ func ParseGormTag(tag string) map[string]string {
 
 // 将map的值赋给struct
 func MapToStruct(input map[string]interface{}, output interface{}) error {
+	defer func() {
+		if r := recover(); r != nil {
+			glog.XWarning(fmt.Sprintf("MapToStruct %v panic: %v\n", input, r))
+		}
+	}()
+
 	outputValue := reflect.ValueOf(output).Elem()
 	outputType := outputValue.Type()
 
@@ -80,6 +87,25 @@ func ConvertNilToEmptyString(data interface{}) interface{} {
 	if reflect.TypeOf(data).Kind() == reflect.String {
 		data = strings.TrimLeft(data.(string), " ")
 		data = strings.TrimRight(data.(string), " ")
+	} else if reflect.TypeOf(data).Kind() == reflect.Float64 {
+		if data.(float64) > 9000 {
+			data = fmt.Sprintf("%v", int64(data.(float64)))
+		} else {
+			data = fmt.Sprintf("%v", data.(float64))
+		}
+
+	} else if reflect.TypeOf(data).Kind() == reflect.Float32 {
+		if data.(float32) > 9000 {
+			data = fmt.Sprintf("%v", int64(data.(float32)))
+		} else {
+			data = fmt.Sprintf("%v", data.(float32))
+		}
+	} else if reflect.TypeOf(data).Kind() == reflect.Int64 {
+		data = fmt.Sprintf("%v", data)
+	} else if reflect.TypeOf(data).Kind() == reflect.Int32 {
+		data = fmt.Sprintf("%v", data)
+	} else if reflect.TypeOf(data).Kind() == reflect.Int {
+		data = fmt.Sprintf("%v", data)
 	}
 
 	return data