From 784d9bdd4a99d81c67a9a6311c86d2c8f854d301 Mon Sep 17 00:00:00 2001 From: xiangheng <11675084@qq.com> Date: Thu, 7 Nov 2024 15:40:14 +0800 Subject: [PATCH] ToInt64 --- server/core/null_float.go | 43 ++++++++++++++----------- server/core/null_int.go | 31 +++++++++++------- server/core/response/common.go | 9 ------ server/util/{convert.go => convert.txt} | 0 server/util/convert_util/convert.go | 7 ++-- 5 files changed, 47 insertions(+), 43 deletions(-) rename server/util/{convert.go => convert.txt} (100%) diff --git a/server/core/null_float.go b/server/core/null_float.go index 56b3003..9722f60 100644 --- a/server/core/null_float.go +++ b/server/core/null_float.go @@ -16,30 +16,35 @@ type NullFloat struct { func DecodeFloat(value any) (any, error) { switch v := value.(type) { - case float64: - f := v - return NullFloat{Float: &f, Valid: true}, nil - case float32: - f := float64(v) - return NullFloat{Float: &f, Valid: true}, nil - case int: - f := float64(v) - return NullFloat{Float: &f, Valid: true}, nil - case int64: - f := float64(v) - return NullFloat{Float: &f, Valid: true}, nil - case string: - if v == "" { - return NullFloat{Float: nil, Valid: false}, nil - } - f, err := strconv.ParseFloat(v, 64) - return NullFloat{Float: &f, Valid: true}, err + // case float64: + // f := v + // return NullFloat{Float: &f, Valid: true}, nil + // case float32: + // f := float64(v) + // return NullFloat{Float: &f, Valid: true}, nil + // case int: + // f := float64(v) + // return NullFloat{Float: &f, Valid: true}, nil + // case int64: + // f := float64(v) + // return NullFloat{Float: &f, Valid: true}, nil + // case string: + // if v == "" { + // return NullFloat{Float: nil, Valid: false}, nil + // } + // f, err := strconv.ParseFloat(v, 64) + // return NullFloat{Float: &f, Valid: true}, err case nil: return NullFloat{Float: nil, Valid: false}, nil case NullFloat: return v, nil + default: + result, err := convert_util.ToFloat64(value) + if err != nil { + return NullFloat{Float: nil, Valid: false}, err + } + return NullFloat{Float: &result, Valid: true}, nil } - return NullFloat{Float: nil, Valid: false}, nil } // gorm实现Scanner diff --git a/server/core/null_int.go b/server/core/null_int.go index 921ffdc..a85add4 100644 --- a/server/core/null_int.go +++ b/server/core/null_int.go @@ -4,6 +4,7 @@ import ( "database/sql/driver" "encoding/json" "strconv" + "x_admin/util/convert_util" ) // int类型别名,支持前端传递null,int,string类型 @@ -41,23 +42,29 @@ type NullInt struct { // } func DecodeInt(value any) (any, error) { switch v := value.(type) { - case int: - i := int64(v) - return NullInt{Int: &i, Valid: true}, nil - case int64: - return NullInt{Int: &v, Valid: true}, nil - case string: - if v == "" { - return NullInt{Int: nil, Valid: false}, nil - } - i, err := strconv.ParseInt(v, 10, 64) - return NullInt{Int: &i, Valid: true}, err + // case int: + // i := int64(v) + // return NullInt{Int: &i, Valid: true}, nil + // case int64: + // return NullInt{Int: &v, Valid: true}, nil + // case string: + // if v == "" { + // return NullInt{Int: nil, Valid: false}, nil + // } + // i, err := strconv.ParseInt(v, 10, 64) + // return NullInt{Int: &i, Valid: true}, err case nil: return NullInt{Int: nil, Valid: false}, nil case NullInt: return v, nil + default: + result, err := convert_util.ToInt64(value) + if err != nil { + return NullInt{Int: nil, Valid: false}, err + } + return NullInt{Int: &result, Valid: true}, nil } - return NullInt{Int: nil, Valid: false}, nil + } // gorm实现Scanner diff --git a/server/core/response/common.go b/server/core/response/common.go index ea9a80f..5a41319 100644 --- a/server/core/response/common.go +++ b/server/core/response/common.go @@ -7,12 +7,3 @@ type PageResp struct { PageSize int `json:"pageSize"` // 每页Size Lists interface{} `json:"lists"` // 数据 } - -// Copy 拷贝结构体 -// func Copy(toValue interface{}, fromValue interface{}) interface{} { -// if err := copier.Copy(toValue, fromValue); err != nil { -// core.Logger.Errorf("Copy err: err=[%+v]", err) -// panic(SystemError) -// } -// return toValue -// } diff --git a/server/util/convert.go b/server/util/convert.txt similarity index 100% rename from server/util/convert.go rename to server/util/convert.txt diff --git a/server/util/convert_util/convert.go b/server/util/convert_util/convert.go index e0517ed..18a9638 100644 --- a/server/util/convert_util/convert.go +++ b/server/util/convert_util/convert.go @@ -15,13 +15,14 @@ import ( func ToFloat64(value interface{}) (float64, error) { switch v := value.(type) { - case float64, float32: + case float32: return strconv.ParseFloat(fmt.Sprintf("%f", v), 64) default: return convertor.ToFloat(value) } - - // return 0, nil +} +func ToInt64(value interface{}) (int64, error) { + return convertor.ToInt(value) } // StructToMap 结构体转换成map,深度转换