mirror of
https://gitee.com/xiangheng/x_admin.git
synced 2025-10-05 08:07:06 +08:00
慢接口
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"database/sql/driver"
|
||||
"encoding/json"
|
||||
"strconv"
|
||||
"x_admin/util/convert"
|
||||
)
|
||||
|
||||
// Float类型别名,支持前端传递null,float64, string类型
|
||||
@@ -13,35 +14,14 @@ type NullFloat struct {
|
||||
Valid bool
|
||||
}
|
||||
|
||||
// func EncodeFloat(value any) any {
|
||||
// switch v := value.(type) {
|
||||
// case map[string]any:
|
||||
// if v["Float"] != nil {
|
||||
// val := v["Float"]
|
||||
// switch f := val.(type) {
|
||||
// case *float32:
|
||||
// return float64(*f)
|
||||
// case *float64:
|
||||
// return *f
|
||||
// case *int:
|
||||
// return float64(*f)
|
||||
// case *int64:
|
||||
// return float64(*f)
|
||||
// case *string:
|
||||
// return *f
|
||||
// default:
|
||||
// return nil
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return nil
|
||||
// }
|
||||
|
||||
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
|
||||
@@ -65,12 +45,42 @@ func DecodeFloat(value any) (any, error) {
|
||||
// gorm实现Scanner
|
||||
func (f *NullFloat) Scan(value interface{}) error {
|
||||
f.Valid = false
|
||||
if value == nil {
|
||||
return nil
|
||||
|
||||
result, err := convert.ConvertUtil.ToFloat64(value)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
v := value.(float64)
|
||||
f.Float, f.Valid = &v, true
|
||||
f.Float, f.Valid = &result, true
|
||||
return nil
|
||||
// switch v := value.(type) {
|
||||
// case float64:
|
||||
// f.Float, f.Valid = &v, true
|
||||
// case float32:
|
||||
// // 直接用float64(float32(v)), 会丢失精度
|
||||
// val, _ := strconv.ParseFloat(fmt.Sprintf("%f", v), 64)
|
||||
// f.Float, f.Valid = &val, true
|
||||
// // 匹配所有int
|
||||
// case uint, uint8, uint16, uint32, uint64, int8, int16, int, int32, int64:
|
||||
// val := float64(v)
|
||||
// f.Float, f.Valid = &val, true
|
||||
// case string:
|
||||
// if v == "" {
|
||||
// f.Float, f.Valid = nil, false
|
||||
// return nil
|
||||
// }
|
||||
// val, err := strconv.ParseFloat(v, 64)
|
||||
// if err != nil {
|
||||
// f.Float, f.Valid = nil, false
|
||||
// return err
|
||||
// }
|
||||
// f.Float, f.Valid = &val, true
|
||||
// return err
|
||||
// case nil:
|
||||
// f.Float, f.Valid = nil, false
|
||||
// return nil
|
||||
// }
|
||||
|
||||
// return nil
|
||||
}
|
||||
|
||||
// gorm实现 Valuer
|
||||
|
Reference in New Issue
Block a user