From 83c887336f745e23f80a87e17f311e01ac1eaaa7 Mon Sep 17 00:00:00 2001 From: quarkcms <869716224@qq.com> Date: Sat, 18 Feb 2023 23:34:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/builder/engine.go | 2 +- .../template/adminresource/handlers_update.go | 24 +++++++++++++------ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/pkg/builder/engine.go b/pkg/builder/engine.go index 032e6f3..9d889b4 100644 --- a/pkg/builder/engine.go +++ b/pkg/builder/engine.go @@ -19,7 +19,7 @@ const ( AppName = "QuarkGo" // Version of current package - Version = "1.1.19" + Version = "1.1.20" // 静态文件URL RespositoryURL = "https://github.com/quarkcms/quark-go/tree/main/website/" diff --git a/pkg/builder/template/adminresource/handlers_update.go b/pkg/builder/template/adminresource/handlers_update.go index 4d3af7f..0b7d7d5 100644 --- a/pkg/builder/template/adminresource/handlers_update.go +++ b/pkg/builder/template/adminresource/handlers_update.go @@ -86,14 +86,23 @@ func (p *UpdateRequest) Handle(ctx *builder.Context) interface{} { if value, ok := formValue.(float64); ok { reflectValue = reflect.ValueOf(int(value)) } + if reflectValue.IsZero() { + zeroValues[fieldName] = 0 + } case "float64": if value, ok := formValue.(float64); ok { reflectValue = reflect.ValueOf(float64(value)) } + if reflectValue.IsZero() { + zeroValues[fieldName] = 0 + } case "float32": if value, ok := formValue.(float64); ok { reflectValue = reflect.ValueOf(float32(value)) } + if reflectValue.IsZero() { + zeroValues[fieldName] = 0 + } case "time.Time": getTime, _ := time.ParseInLocation("2006-01-02 15:04:05", formValue.(string), time.Local) reflectValue = reflect.ValueOf(getTime) @@ -102,17 +111,18 @@ func (p *UpdateRequest) Handle(ctx *builder.Context) interface{} { if reflect.ValueOf(formValue).Type().String() == "[]uint8" { reflectValue = reflect.ValueOf(string(formValue.([]uint8))) } + if reflectValue.IsZero() { + zeroValues[fieldName] = nil + } } - if reflectFieldName.Type().String() != reflectValue.Type().String() { - return ctx.JSON(200, msg.Error("结构体类型与传参类型不一致!", "")) - } + if reflectValue.IsValid() { + if reflectFieldName.Type().String() != reflectValue.Type().String() { + return ctx.JSON(200, msg.Error("结构体类型与传参类型不一致!", "")) + } - if reflectValue.IsZero() { - zeroValues[fieldName] = 0 + reflectFieldName.Set(reflectValue) } - - reflectFieldName.Set(reflectValue) } } }