From 01247221c41058a3bf08f593aec062b4c7c127f7 Mon Sep 17 00:00:00 2001 From: gazebo Date: Mon, 23 Dec 2019 16:15:14 +0800 Subject: [PATCH] =?UTF-8?q?SkuName.Upc=E6=94=B9=E4=B8=BA*string=EF=BC=88?= =?UTF-8?q?=E4=BB=A5=E6=94=AF=E6=8C=81null=E5=8F=8A=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=94=AF=E4=B8=80=E7=B4=A2=E5=BC=95=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sku.go | 49 ++++++++++++++++++--------------- business/model/sku.go | 7 +++-- globals/refutil/refutil.go | 11 +++++++- globals/refutil/refutil_test.go | 37 +++++++++++++++++++++++++ 4 files changed, 78 insertions(+), 26 deletions(-) create mode 100644 globals/refutil/refutil_test.go diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 05f80c6eb..f6a0e6c8c 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -659,17 +659,19 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s if hasSensitiveWord, err := CheckHasSensitiveWord(skuNameExt.Name); hasSensitiveWord { return nil, err } - - db := dao.GetDB() - if skuNameExt.Upc != "" { - err = dao.GetEntity(db, &skuNameExt.SkuName, "Upc") - if err == nil { - return nil, fmt.Errorf("UPC:%s重复", skuNameExt.Upc) - } else if !dao.IsNoRowsError(err) { - return nil, err - } - err = nil + if utils.Pointer2String(skuNameExt.Upc) == "" { + skuNameExt.Upc = nil } + db := dao.GetDB() + // if skuNameExt.Upc != "" { + // err = dao.GetEntity(db, &skuNameExt.SkuName, "Upc") + // if err == nil { + // return nil, fmt.Errorf("UPC:%s重复", skuNameExt.Upc) + // } else if !dao.IsNoRowsError(err) { + // return nil, err + // } + // err = nil + // } skuNameExt.SkuName.Status = model.SkuStatusNormal if skuNameExt.IsSpu == 1 { return nil, fmt.Errorf("不允许创建多规格商品") @@ -789,19 +791,22 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf valid = utils.RemoveGeneralMapKeys(valid, model.FieldSpecQuality, model.FieldSpecUnit) _, hasPlaces := payload["places"] if len(valid) > 0 || hasPlaces { - globals.SugarLogger.Debugf("UpdateSkuName valid:%s", utils.Format4Output(valid, false)) - if upc, _ := valid["upc"].(string); upc != "" { - skuName := &model.SkuName{ - Upc: upc, - } - err = dao.GetEntity(db, skuName, "Upc") - if err == nil { - return 0, fmt.Errorf("UPC:%s重复", upc) - } else if !dao.IsNoRowsError(err) { - return 0, err - } - err = nil + if upc, _ := valid["Upc"].(string); upc == "" { + valid["Upc"] = nil } + globals.SugarLogger.Debugf("UpdateSkuName valid:%s", utils.Format4Output(valid, false)) + // if upc, _ := valid["Upc"].(string); upc != "" { + // skuName := &model.SkuName{ + // Upc: upc, + // } + // err = dao.GetEntity(db, skuName, "Upc") + // if err == nil { + // return 0, fmt.Errorf("UPC:%s重复", upc) + // } else if !dao.IsNoRowsError(err) { + // return 0, err + // } + // err = nil + // } for _, imgName := range []string{"img", "img2"} { if valid[imgName] != nil { if imgStr := utils.Interface2String(valid[imgName]); imgStr != "" { diff --git a/business/model/sku.go b/business/model/sku.go index 86af76811..0f95d741f 100644 --- a/business/model/sku.go +++ b/business/model/sku.go @@ -193,9 +193,9 @@ type SkuName struct { DescImg string `orm:"size(255)" json:"descImg"` // 商品详情图片描述 // DescImgEbai string `orm:"size(255)" json:"descImgEbai"` // 饿百的商品详情图片描述RTF - Upc string `orm:"size(20);index"` - Status int `orm:"default(1)" json:"status"` // skuname状态,取值同sku.Status - IsSpu int8 `orm:"column(is_spu)" json:"isSpu"` // 用于指明是否SKUNAME当成SPU + Upc *string `orm:"size(20)"` + Status int `orm:"default(1)" json:"status"` // skuname状态,取值同sku.Status + IsSpu int8 `orm:"column(is_spu)" json:"isSpu"` // 用于指明是否SKUNAME当成SPU JdID int64 `orm:"column(jd_id);null;index" json:"jdID"` JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"` @@ -206,6 +206,7 @@ type SkuName struct { func (*SkuName) TableUnique() [][]string { return [][]string{ []string{"Name", "Prefix", "SpecQuality", "SpecUnit", "Unit", "IsSpu", "DeletedAt"}, + // []string{"Upc", "DeletedAt"}, } } diff --git a/globals/refutil/refutil.go b/globals/refutil/refutil.go index f4c559d0b..1e7ac52ee 100644 --- a/globals/refutil/refutil.go +++ b/globals/refutil/refutil.go @@ -92,5 +92,14 @@ func FilterMapByFieldList(mapData map[string]interface{}, fields []string) (vali } func IsValueEqual(value1, value2 interface{}) bool { - return fmt.Sprint(value1) == fmt.Sprint(value2) + return Interface2String(value1) == Interface2String(value2) +} + +func Interface2String(value interface{}) (str string) { + valueType := reflect.TypeOf(value) + if valueType.Kind() == reflect.Ptr { + value = reflect.ValueOf(value).Elem() + } + str = fmt.Sprint(value) + return str } diff --git a/globals/refutil/refutil_test.go b/globals/refutil/refutil_test.go new file mode 100644 index 000000000..e0596f4be --- /dev/null +++ b/globals/refutil/refutil_test.go @@ -0,0 +1,37 @@ +package refutil + +import ( + "testing" + + "git.rosy.net.cn/baseapi/utils" +) + +func TestIsValueEqual(t *testing.T) { + for _, v := range [][]interface{}{ + []interface{}{ + false, + 1, + "1.0", + }, + []interface{}{ + true, + "1", + utils.String2Pointer("1"), + }, + []interface{}{ + true, + "1", + 1, + }, + []interface{}{ + true, + int64(100), + int(100), + }, + } { + result := IsValueEqual(v[1], v[2]) + if result != v[0].(bool) { + t.Fatalf("%v,%v, desired:%v, get:%v", v[1], v[2], v[0], result) + } + } +}