创建标品优化

This commit is contained in:
苏尹岚
2020-04-27 10:31:30 +08:00
parent 94e8edb10e
commit 8d342e6086
3 changed files with 116 additions and 90 deletions

View File

@@ -952,95 +952,22 @@ func syncStoreSkusFromYb(ctx *jxcontext.Context, storeID, vendorID int, vendorSt
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
switch step {
case 0:
taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
var (
v = batchItemList[0].(*partner.SkuNameInfo)
pricePercentagePack []*model.PricePercentageItem
upc = v.YbBarCode
)
skuNames, err := dao.GetSkuNames(db, nil, []string{upc}, "", false)
if err != nil {
if len(addList) > 0 {
taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
var (
v = batchItemList[0].(*partner.SkuNameInfo)
upc = v.YbBarCode
)
err = AddSkuNameByUpc(ctx, upc, store, v)
if err != nil {
task.AddFailedList(putils.GetErrMsg2FailedSingleList(nil, err, storeID, model.VendorChineseNames[vendorID], "根据upc创建京西商品"))
}
return retVal, err
}
//表示我们商品库中没有这个upc商品,如果有就直接关注上
if len(skuNames) == 0 {
//我们商品库中有这个商品但是upc没有填则尝试用upc去查一下
productInfos, err2 := GetJdUpcCodeByName(ctx, "", upc)
err = err2
//表示用upc也没有找到这个商品则再尝试用银豹上的名字去查
if len(productInfos) == 0 {
var skuNames []string
skuNames = append(skuNames, v.Name) //银豹上的名字
for _, name := range skuNames {
skuNames2, err := dao.GetSkuNames(db, nil, nil, name, false)
if err != nil {
return retVal, err
}
//表示查到了需要把upc更新上去没查到就要新建
if len(skuNames2) == 1 {
skuNames2[0].Upc = &v.YbBarCode
dao.UpdateEntity(db, skuNames2[0], "Upc")
buildStoreSkuBindInfosAndFocus(ctx, db, store, v, skuNames2[0].ID, pricePercentagePack)
}
}
} else {
productInfo := productInfos[0]
skuNames2, err := dao.GetSkuNames(db, nil, nil, productInfo.Name, false)
if err != nil {
return retVal, err
}
if len(skuNames2) > 1 {
return retVal, fmt.Errorf("此商品名在京西库中查询出了大于1个商品[%v]", productInfo.Name)
}
//表示查到了需要把upc更新上去没查到就要新建
if len(skuNames2) == 1 && (productInfo.SpecQuality == skuNames2[0].SpecQuality && productInfo.SpecUnit == skuNames2[0].SpecUnit) {
skuNames2[0].Upc = &v.YbBarCode
dao.UpdateEntity(db, skuNames2[0], "Upc")
buildStoreSkuBindInfosAndFocus(ctx, db, store, v, skuNames2[0].ID, pricePercentagePack)
} else {
skuNameExt := &model.SkuNameExt{
SkuName: model.SkuName{
Name: productInfo.Name,
Upc: &productInfo.UpcCode,
Status: model.SkuStatusNormal,
CategoryID: model.NoCatCatgoryID,
IsGlobal: model.YES,
Unit: productInfo.Unit,
},
Skus: []*model.SkuWithVendor{
&model.SkuWithVendor{
Sku: &model.Sku{},
},
},
// Places: []int{510100}, //默认成都
}
if len(v.SkuList) > 0 {
skuNameExt.Price = int(v.SkuList[0].VendorPrice)
skuNameExt.Skus[0].SpecQuality = productInfo.SpecQuality
skuNameExt.Skus[0].SpecUnit = productInfo.SpecUnit
skuNameExt.Skus[0].Weight = int(utils.Str2Int64(utils.Float64ToStr(float64(productInfo.Weight))))
skuNameExt.Skus[0].Status = model.SkuStatusNormal
}
if len(productInfo.ImgList) > 0 {
skuNameExt.Img = productInfo.ImgList[0]
}
outSkuNameExt, err := AddSkuName(ctx, skuNameExt, ctx.GetUserName())
if err != nil {
return retVal, err
}
buildStoreSkuBindInfosAndFocus(ctx, db, store, v, outSkuNameExt.ID, pricePercentagePack)
}
}
} else {
buildStoreSkuBindInfosAndFocus(ctx, db, store, v, skuNames[0].ID, pricePercentagePack)
}
return retVal, err
taskParallel := tasksch.NewParallelTask("创建商品", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, taskFunc, addList)
tasksch.HandleTask(taskParallel, task, true).Run()
_, err = taskParallel.GetResult(0)
}
taskParallel := tasksch.NewParallelTask("创建商品", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, taskFunc, addList)
tasksch.HandleTask(taskParallel, task, true).Run()
_, err = taskParallel.GetResult(0)
case 1:
}
return result, err