diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index bbf1ba3c8..505a5d9b9 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -2,6 +2,7 @@ package cms import ( "errors" + "fmt" "strconv" "strings" @@ -441,6 +442,15 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s panic(r) } }() + 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 { skuNameExt.SkuName.JdSyncStatus = model.SyncFlagNewMask @@ -528,6 +538,18 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf globals.SugarLogger.Debugf("UpdateSkuName valid:%s", utils.Format4Output(valid, false)) dao.Begin(db) defer dao.Rollback(db) + 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 valid["img"] != nil { imgContent, imgMD5, err2 := jxutils.DownloadFileByURL(valid["img"].(string)) if err = err2; err != nil { diff --git a/business/model/sku.go b/business/model/sku.go index 636f28bd0..487d4c3b8 100644 --- a/business/model/sku.go +++ b/business/model/sku.go @@ -172,7 +172,7 @@ type SkuName struct { ImgEbai string `orm:"size(255)" json:"imgEbai"` // 饿百图片地址 ImgHashCode string `orm:"size(255);index" json:"img_hash_code"` ElmImgHashCode string `orm:"size(255)" json:"-"` // 长度255的原因是从京东初始化数据时临时需要 - Upc string `orm:"size(20)"` + 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