同步门店商品修改排除饿鲜达门店和银豹平台
This commit is contained in:
@@ -913,7 +913,12 @@ func (v *VendorSync) SyncStoreSkusFromYb(ctx *jxcontext.Context, storeIDs []int,
|
||||
|
||||
func syncStoreSkusFromYb(ctx *jxcontext.Context, storeID, vendorID int, vendorStoreID string, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
db = dao.GetDB()
|
||||
localSkuMap = make(map[string]*dao.StoreSkuSyncInfo)
|
||||
vendorSkuMap = make(map[string]*partner.SkuNameInfo)
|
||||
addList []*partner.SkuNameInfo
|
||||
updateList []*partner.SkuNameInfo
|
||||
deleteList []*dao.StoreSkuSyncInfo
|
||||
)
|
||||
handler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler)
|
||||
store, _ := dao.GetStoreDetail(db, storeID, vendorID)
|
||||
@@ -922,7 +927,6 @@ func syncStoreSkusFromYb(ctx *jxcontext.Context, storeID, vendorID int, vendorSt
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
localSkuMap := make(map[string]*dao.StoreSkuSyncInfo)
|
||||
for _, v := range localSkuList {
|
||||
localSkuMap[v.VendorSkuID] = v
|
||||
}
|
||||
@@ -930,103 +934,119 @@ func syncStoreSkusFromYb(ctx *jxcontext.Context, storeID, vendorID int, vendorSt
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
task := tasksch.NewParallelTask("银豹平台拉取标品", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
var (
|
||||
pricePercentagePack []*model.PricePercentageItem
|
||||
v = batchItemList[0].(*partner.SkuNameInfo)
|
||||
)
|
||||
//长度大于7就可能是标品,非标品一般是7位,前三位是yb_store_prefix后4位是yb_name_suffix
|
||||
if len(v.YbBarCode) > 7 {
|
||||
if localSkuMap[v.SkuList[0].VendorSkuID] == nil {
|
||||
skuNames, err := dao.GetSkuNames(db, nil, []string{v.YbBarCode}, "", false)
|
||||
if err != nil {
|
||||
return retVal, err
|
||||
}
|
||||
//表示我们商品库中没有这个upc商品,如果有就直接关注上
|
||||
if len(skuNames) == 0 {
|
||||
//我们商品库中有这个商品,但是upc没有填,则尝试用upc去查一下
|
||||
productInfos, err2 := GetJdUpcCodeByName(ctx, "", v.YbBarCode)
|
||||
err = err2
|
||||
//表示用upc也没有找到这个商品,则再尝试用银豹上的名字去查
|
||||
if len(productInfos) == 0 {
|
||||
skuNames2, err := dao.GetSkuNames(db, nil, nil, v.Name, false)
|
||||
for _, v := range remoteSkuList {
|
||||
if len(v.YbBarCode) > 7 {
|
||||
if localSkuMap[v.SkuList[0].VendorSkuID] == nil {
|
||||
addList = append(addList, v)
|
||||
} else {
|
||||
updateList = append(updateList, v)
|
||||
}
|
||||
vendorSkuMap[v.SkuList[0].VendorSkuID] = v
|
||||
}
|
||||
}
|
||||
for _, v := range localSkuList {
|
||||
if vendorSkuMap[v.VendorSkuID] == nil {
|
||||
deleteList = append(deleteList, v)
|
||||
}
|
||||
}
|
||||
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 {
|
||||
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
|
||||
}
|
||||
if len(skuNames2) > 1 {
|
||||
return retVal, fmt.Errorf("此商品名在京西库中查询出了大于1个商品,[%v]", v.Name)
|
||||
}
|
||||
//表示查到了,需要把upc更新上去,没查到就要新建(//TODO新建不起,没得规格这些)
|
||||
//表示查到了,需要把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)
|
||||
}
|
||||
if len(skuNames2) == 0 {
|
||||
|
||||
}
|
||||
}
|
||||
} 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 {
|
||||
productInfo := productInfos[0]
|
||||
skuNames2, err := dao.GetSkuNames(db, nil, nil, productInfo.Name, false)
|
||||
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
|
||||
}
|
||||
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)
|
||||
}
|
||||
buildStoreSkuBindInfosAndFocus(ctx, db, store, v, outSkuNameExt.ID, pricePercentagePack)
|
||||
}
|
||||
} else {
|
||||
buildStoreSkuBindInfosAndFocus(ctx, db, store, v, skuNames[0].ID, pricePercentagePack)
|
||||
}
|
||||
} else {
|
||||
buildStoreSkuBindInfosAndFocus(ctx, db, store, v, skuNames[0].ID, pricePercentagePack)
|
||||
}
|
||||
|
||||
return retVal, err
|
||||
}
|
||||
return retVal, err
|
||||
}, remoteSkuList)
|
||||
tasksch.HandleTask(task, nil, true).Run()
|
||||
if isAsync {
|
||||
hint = task.GetID()
|
||||
} else {
|
||||
_, err = task.GetResult(0)
|
||||
hint = "1"
|
||||
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
|
||||
}
|
||||
taskSeq := tasksch.NewSeqTask2("同步银豹商品到京西", ctx, true, taskSeqFunc, 3)
|
||||
tasksch.HandleTask(taskSeq, nil, true).Run()
|
||||
hint = taskSeq.GetID()
|
||||
return hint, err
|
||||
}
|
||||
|
||||
@@ -455,7 +455,7 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag
|
||||
isAdded2Update := false
|
||||
// 修改商品信息时不改价(以免活动引起的失败),而用单独的改价来改
|
||||
if (model.IsSyncStatusUpdate(sku.SkuSyncStatus) || (model.IsSyncStatusSeq(sku.SkuSyncStatus) && reorderHandler == nil)) && singleStoreHandler != nil {
|
||||
if dao.IsVendorThingIDEmpty(sku.VendorCatID) {
|
||||
if dao.IsVendorThingIDEmpty(sku.VendorCatID) && !strings.Contains(sku.StoreName, model.ExdStoreName) && vendorID != model.VendorIDYB {
|
||||
globals.SugarLogger.Warnf("syncStoreSkuNew 修改门店:%d商品:%d,但没有平台分类ID", storeID, sku.SkuID)
|
||||
} else {
|
||||
isAdded2Update = true
|
||||
|
||||
Reference in New Issue
Block a user