This commit is contained in:
xiangheng
2024-11-07 15:40:14 +08:00
parent e1c8aa0b99
commit 784d9bdd4a
5 changed files with 47 additions and 43 deletions

View File

@@ -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

View File

@@ -4,6 +4,7 @@ import (
"database/sql/driver"
"encoding/json"
"strconv"
"x_admin/util/convert_util"
)
// int类型别名支持前端传递nullintstring类型
@@ -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

View File

@@ -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
// }

View File

@@ -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,深度转换