From 75caa1fffd33362766d36cdcbdf14d2441c70a57 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 20 Nov 2019 22:00:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86UpdateStore=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E4=BC=A0=E5=85=A5autoEnableAt=E5=BC=95=E8=B5=B7=E7=9A=84crash?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store.go | 42 +++++++++++++++++++---------------- globals/refutil/refutil.go | 5 ++++- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 1d894e076..520a657ef 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -618,6 +618,9 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa return 0, err } var outStore *model.Store + if payload["autoEnableAt"] != nil { + payload["autoEnableAt"] = utils.Time2Date(utils.Str2Time(utils.Interface2String(payload["autoEnableAt"]))) + } valid := dao.StrictMakeMapByStructObject2(payload, store, &outStore, userName) if err = checkStoreDeliveryRange(utils.Interface2String(valid["deliveryRange"])); err != nil { return 0, err @@ -722,7 +725,6 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa } else { if valid["autoEnableAt"] != nil { status = model.StoreStatusHaveRest - valid["autoEnableAt"] = utils.Time2Date(utils.Str2Time(utils.Interface2String(valid["autoEnableAt"]))) } else { status = model.StoreStatusClosed } @@ -735,27 +737,29 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa } //时间校验 - if outStore.OpenTime1 != 0 && outStore.CloseTime1 != 0 { - if err := ValidateStructPartial(outStore, "OpenTime1", "CloseTime1"); err != nil { + if outStore != nil { + if outStore.OpenTime1 != 0 && outStore.CloseTime1 != 0 { + if err := ValidateStructPartial(outStore, "OpenTime1", "CloseTime1"); err != nil { + return 0, errors.New(fmt.Sprintf("门店营业时间1设置不合法!时间范围1 :[%v] 至 [%v]", outStore.OpenTime1, outStore.CloseTime1)) + } + } + if (outStore.OpenTime1 == 0 && outStore.CloseTime1 != 0) || (outStore.OpenTime1 != 0 && outStore.CloseTime1 == 0) { return 0, errors.New(fmt.Sprintf("门店营业时间1设置不合法!时间范围1 :[%v] 至 [%v]", outStore.OpenTime1, outStore.CloseTime1)) } - } - if (outStore.OpenTime1 == 0 && outStore.CloseTime1 != 0) || (outStore.OpenTime1 != 0 && outStore.CloseTime1 == 0) { - return 0, errors.New(fmt.Sprintf("门店营业时间1设置不合法!时间范围1 :[%v] 至 [%v]", outStore.OpenTime1, outStore.CloseTime1)) - } - if outStore.OpenTime2 != 0 && outStore.CloseTime2 != 0 { - if err := ValidateStructPartial(outStore, "OpenTime2", "CloseTime2"); err != nil { - return 0, errors.New(fmt.Sprintf("门店营业时间2设置不合法!时间范围2 :[%v] 至 [%v]", outStore.OpenTime2, outStore.CloseTime2)) + if outStore.OpenTime2 != 0 && outStore.CloseTime2 != 0 { + if err := ValidateStructPartial(outStore, "OpenTime2", "CloseTime2"); err != nil { + return 0, errors.New(fmt.Sprintf("门店营业时间2设置不合法!时间范围2 :[%v] 至 [%v]", outStore.OpenTime2, outStore.CloseTime2)) + } + } + if (outStore.OpenTime2 == 0 && outStore.CloseTime2 != 0) || (outStore.OpenTime2 != 0 && outStore.CloseTime2 == 0) { + return 0, errors.New(fmt.Sprintf("门店营业时间2设置不合法!时间范围2 :[%v] 至 [%v]", outStore.OpenTime1, outStore.CloseTime1)) + } + if outStore.OpenTime2 > outStore.OpenTime1 { + return 0, errors.New(fmt.Sprintf("门店营业时间设置不合法!第二段营业时间应该在第一段营业时间之后!")) + } + if beginAt, endAt := GetTimeMixByInt(outStore.OpenTime1, outStore.CloseTime1, outStore.OpenTime2, outStore.CloseTime2); beginAt != 0 && endAt != 0 { + return 0, errors.New(fmt.Sprintf("两段门店营业时间不可交叉!时间范围1 :[%v] 至 [%v], 时间范围2 :[%v] 至 [%v]", outStore.OpenTime1, outStore.CloseTime1, outStore.OpenTime2, outStore.CloseTime2)) } - } - if (outStore.OpenTime2 == 0 && outStore.CloseTime2 != 0) || (outStore.OpenTime2 != 0 && outStore.CloseTime2 == 0) { - return 0, errors.New(fmt.Sprintf("门店营业时间2设置不合法!时间范围2 :[%v] 至 [%v]", outStore.OpenTime1, outStore.CloseTime1)) - } - if outStore.OpenTime2 > outStore.OpenTime1 { - return 0, errors.New(fmt.Sprintf("门店营业时间设置不合法!第二段营业时间应该在第一段营业时间之后!")) - } - if beginAt, endAt := GetTimeMixByInt(outStore.OpenTime1, outStore.CloseTime1, outStore.OpenTime2, outStore.CloseTime2); beginAt != 0 && endAt != 0 { - return 0, errors.New(fmt.Sprintf("两段门店营业时间不可交叉!时间范围1 :[%v] 至 [%v], 时间范围2 :[%v] 至 [%v]", outStore.OpenTime1, outStore.CloseTime1, outStore.OpenTime2, outStore.CloseTime2)) } // districtCode := 0 diff --git a/globals/refutil/refutil.go b/globals/refutil/refutil.go index c28475bc2..7cf3e21c6 100644 --- a/globals/refutil/refutil.go +++ b/globals/refutil/refutil.go @@ -8,6 +8,7 @@ import ( "reflect" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/globals" ) func CheckAndGetStructValue(item interface{}) *reflect.Value { @@ -70,7 +71,9 @@ func FilterMapByStructObject(mapData map[string]interface{}, obj interface{}, ob } } if objPtr != nil { - utils.Map2StructByJson(m, objPtr, true) + if err := utils.Map2StructByJson(m, objPtr, true); err != nil { + globals.SugarLogger.Warnf("FilterMapByStructObject failed with err:%v, mapData:%s", err, utils.Format4Output(mapData, true)) + } } return valid, invalid }