This commit is contained in:
邹宗楠
2022-03-18 11:16:57 +08:00
parent 0b4e7af7bd
commit 62eda9a72f

View File

@@ -154,78 +154,84 @@ func SyncSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs []int,
db := dao.GetDB()
skuList, err := dao.GetSkusWithVendor(db, vendorIDs, appOrgCodes, nameIDs, skuIDs, true)
globals.SugarLogger.Debugf("skuList============= skuList:%v", len(skuList))
cc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
globals.SugarLogger.Debugf("batchItemList============DeleteSku2:%v", batchItemList)
skuVendorInfo := batchItemList[0].(*dao.StoreSkuSyncInfo)
globals.SugarLogger.Debugf("skuVendorInfo============skuVendorInfo:%v", skuVendorInfo)
globals.SugarLogger.Debugf("skuVendorInfo============skuVendorInfo:%v", &skuVendorInfo)
var failedList []*partner.StoreSkuInfoWithErr
// if skuVendorInfo.VendorCatID == "" {
// return nil, fmt.Errorf("商品:%d的商家分类没有同步", skuVendorInfo.SkuID)
// }
globals.SugarLogger.Debugf("步骤1============= DeleteSku2:%v", skuVendorInfo.BindID)
if skuVendorInfo.BindID == 0 {
return nil, fmt.Errorf("商品:%d的数据异常", skuVendorInfo.SkuID)
}
globals.SugarLogger.Debugf("步骤2============= DeleteSku2:%v", skuVendorInfo.ExdSkuID)
if skuVendorInfo.ExdSkuID != "" {
return nil, err
}
globals.SugarLogger.Debugf("步骤3============= DeleteSku2:%v", skuVendorInfo.VendorSkuID)
globals.SugarLogger.Debugf("步骤3============= DeleteSku2:%v", !model.IsSyncStatusNew(skuVendorInfo.SkuSyncStatus))
globals.SugarLogger.Debugf("步骤TTTTT============ DeleteSku2:%v", skuVendorInfo.SkuSyncStatus)
if !model.IsSyncStatusNew(skuVendorInfo.SkuSyncStatus) && skuVendorInfo.VendorSkuID == "" {
return nil, err
}
globals.SugarLogger.Debugf("步骤4============= DeleteSku2:%v", skuVendorInfo.SkuVendorMapCatID)
if skuVendorInfo.SkuVendorMapCatID != "" {
skuVendorInfo.VendorVendorCatID = utils.Str2Int64(skuVendorInfo.SkuVendorMapCatID)
}
skuVendorInfo.SkuName = jxutils.ComposeSkuNameSync(skuVendorInfo.Prefix, skuVendorInfo.Name, skuVendorInfo.Comment, skuVendorInfo.Unit, skuVendorInfo.SpecQuality, skuVendorInfo.SpecUnit, 0, skuVendorInfo.ExPrefix, skuVendorInfo.ExPrefixBegin, skuVendorInfo.ExPrefixEnd, true)
skuVendorInfo.SkuNameOrigin = jxutils.ComposeSkuNameOriginal(skuVendorInfo.Prefix, skuVendorInfo.Name, skuVendorInfo.Comment, skuVendorInfo.Unit, skuVendorInfo.SpecQuality, skuVendorInfo.SpecUnit, 0)
if skuVendorInfo.ImgWatermark != "" {
downLoad, _ := uploadImgStandard(skuVendorInfo.ImgWatermark)
skuVendorInfo.ImgMix = jxutils.MixWatermarkImg(downLoad, skuVendorInfo.Img, skuVendorInfo.ExPrefixBegin, skuVendorInfo.ExPrefixEnd)
}
skuVendorInfo.MergedStatus = jxutils.MergeSkuStatus(skuVendorInfo.Status, skuVendorInfo.NameStatus)
globals.SugarLogger.Debugf("步骤1============= last1:%v", *skuVendorInfo)
globals.SugarLogger.Debugf("步骤1============= last2:%v", &skuVendorInfo)
globals.SugarLogger.Debugf("步骤1============= last3:%v", skuVendorInfo)
if multiStoresHandler, ok := partner.GetPurchasePlatformFromVendorID(skuVendorInfo.VendorID).(partner.IMultipleStoresHandler); ok {
if model.IsSyncStatusDelete(skuVendorInfo.SkuSyncStatus) { //删除
if !dao.IsVendorThingIDEmpty(skuVendorInfo.VendorSkuID) &&
model.IsSyncStatusNeedDelete(skuVendorInfo.SkuSyncStatus) {
globals.SugarLogger.Debugf("CreateSku2============= DeleteSku2:%v", model.IsSyncStatusNew(skuVendorInfo.SkuSyncStatus))
err = multiStoresHandler.DeleteSku2(ctx, skuVendorInfo.VendorOrgCode, storeSkuSyncInfo2Bare(skuVendorInfo))
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(skuVendorInfo, err, 0, model.VendorChineseNames[skuVendorInfo.VendorID], "删除商品")
}
}
} else if model.IsSyncStatusNew(skuVendorInfo.SkuSyncStatus) { // 新增
globals.SugarLogger.Debugf("CreateSku2============= CreateSku2:%v", model.IsSyncStatusNew(skuVendorInfo.SkuSyncStatus))
err = multiStoresHandler.CreateSku2(ctx, skuVendorInfo)
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(skuVendorInfo, err, 0, model.VendorChineseNames[skuVendorInfo.VendorID], "新增商品")
}
} else if model.IsSyncStatusUpdate(skuVendorInfo.SkuSyncStatus) { // 修改
globals.SugarLogger.Debugf("UpdateSku2============= UpdateSku2:%v", model.IsSyncStatusNew(skuVendorInfo.SkuSyncStatus))
err = multiStoresHandler.UpdateSku2(ctx, skuVendorInfo)
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(skuVendorInfo, err, 0, model.VendorChineseNames[skuVendorInfo.VendorID], "修改商品")
}
}
} else {
err = fmt.Errorf("平台:%d不合法", skuVendorInfo.VendorID)
}
if len(failedList) > 0 {
task.AddFailedList(failedList)
}
if err = OnThingSync(ctx, dao.GetDB(), SkuVendor2ThingMap(skuVendorInfo), err); err == nil {
retVal = []int{1}
}
return retVal, err
}
if err == nil && len(skuList) > 0 {
// todo 按vendorID orgCode合并操作SyncSkus=============
task := tasksch.NewParallelTask(fmt.Sprintf("同步商品:%v,%v", nameIDs, skuIDs), tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
globals.SugarLogger.Debugf("batchItemList============DeleteSku2:%v", batchItemList)
skuVendorInfo := batchItemList[0].(*dao.StoreSkuSyncInfo)
var failedList []*partner.StoreSkuInfoWithErr
// if skuVendorInfo.VendorCatID == "" {
// return nil, fmt.Errorf("商品:%d的商家分类没有同步", skuVendorInfo.SkuID)
// }
globals.SugarLogger.Debugf("步骤1============= DeleteSku2:%v", skuVendorInfo.BindID)
if skuVendorInfo.BindID == 0 {
return nil, fmt.Errorf("商品:%d的数据异常", skuVendorInfo.SkuID)
}
globals.SugarLogger.Debugf("步骤2============= DeleteSku2:%v", skuVendorInfo.ExdSkuID)
if skuVendorInfo.ExdSkuID != "" {
return nil, err
}
globals.SugarLogger.Debugf("步骤3============= DeleteSku2:%v", skuVendorInfo.VendorSkuID)
globals.SugarLogger.Debugf("步骤3============= DeleteSku2:%v", !model.IsSyncStatusNew(skuVendorInfo.SkuSyncStatus))
globals.SugarLogger.Debugf("步骤TTTTT============ DeleteSku2:%v", skuVendorInfo.SkuSyncStatus)
if !model.IsSyncStatusNew(skuVendorInfo.SkuSyncStatus) && skuVendorInfo.VendorSkuID == "" {
return nil, err
}
globals.SugarLogger.Debugf("步骤4============= DeleteSku2:%v", skuVendorInfo.SkuVendorMapCatID)
if skuVendorInfo.SkuVendorMapCatID != "" {
skuVendorInfo.VendorVendorCatID = utils.Str2Int64(skuVendorInfo.SkuVendorMapCatID)
}
skuVendorInfo.SkuName = jxutils.ComposeSkuNameSync(skuVendorInfo.Prefix, skuVendorInfo.Name, skuVendorInfo.Comment, skuVendorInfo.Unit, skuVendorInfo.SpecQuality, skuVendorInfo.SpecUnit, 0, skuVendorInfo.ExPrefix, skuVendorInfo.ExPrefixBegin, skuVendorInfo.ExPrefixEnd, true)
skuVendorInfo.SkuNameOrigin = jxutils.ComposeSkuNameOriginal(skuVendorInfo.Prefix, skuVendorInfo.Name, skuVendorInfo.Comment, skuVendorInfo.Unit, skuVendorInfo.SpecQuality, skuVendorInfo.SpecUnit, 0)
if skuVendorInfo.ImgWatermark != "" {
downLoad, _ := uploadImgStandard(skuVendorInfo.ImgWatermark)
skuVendorInfo.ImgMix = jxutils.MixWatermarkImg(downLoad, skuVendorInfo.Img, skuVendorInfo.ExPrefixBegin, skuVendorInfo.ExPrefixEnd)
}
skuVendorInfo.MergedStatus = jxutils.MergeSkuStatus(skuVendorInfo.Status, skuVendorInfo.NameStatus)
globals.SugarLogger.Debugf("步骤1============= last1:%v", *skuVendorInfo)
globals.SugarLogger.Debugf("步骤1============= last2:%v", &skuVendorInfo)
globals.SugarLogger.Debugf("步骤1============= last3:%v", skuVendorInfo)
if multiStoresHandler, ok := partner.GetPurchasePlatformFromVendorID(skuVendorInfo.VendorID).(partner.IMultipleStoresHandler); ok {
if model.IsSyncStatusDelete(skuVendorInfo.SkuSyncStatus) { //删除
if !dao.IsVendorThingIDEmpty(skuVendorInfo.VendorSkuID) &&
model.IsSyncStatusNeedDelete(skuVendorInfo.SkuSyncStatus) {
globals.SugarLogger.Debugf("CreateSku2============= DeleteSku2:%v", model.IsSyncStatusNew(skuVendorInfo.SkuSyncStatus))
err = multiStoresHandler.DeleteSku2(ctx, skuVendorInfo.VendorOrgCode, storeSkuSyncInfo2Bare(skuVendorInfo))
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(skuVendorInfo, err, 0, model.VendorChineseNames[skuVendorInfo.VendorID], "删除商品")
}
}
} else if model.IsSyncStatusNew(skuVendorInfo.SkuSyncStatus) { // 新增
globals.SugarLogger.Debugf("CreateSku2============= CreateSku2:%v", model.IsSyncStatusNew(skuVendorInfo.SkuSyncStatus))
err = multiStoresHandler.CreateSku2(ctx, skuVendorInfo)
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(skuVendorInfo, err, 0, model.VendorChineseNames[skuVendorInfo.VendorID], "新增商品")
}
} else if model.IsSyncStatusUpdate(skuVendorInfo.SkuSyncStatus) { // 修改
globals.SugarLogger.Debugf("UpdateSku2============= UpdateSku2:%v", model.IsSyncStatusNew(skuVendorInfo.SkuSyncStatus))
err = multiStoresHandler.UpdateSku2(ctx, skuVendorInfo)
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(skuVendorInfo, err, 0, model.VendorChineseNames[skuVendorInfo.VendorID], "修改商品")
}
}
} else {
err = fmt.Errorf("平台:%d不合法", skuVendorInfo.VendorID)
}
if len(failedList) > 0 {
task.AddFailedList(failedList)
}
if err = OnThingSync(ctx, dao.GetDB(), SkuVendor2ThingMap(skuVendorInfo), err); err == nil {
retVal = []int{1}
}
return retVal, err
}, skuList)
task := tasksch.NewParallelTask(
fmt.Sprintf("同步商品:%v,%v", nameIDs, skuIDs),
tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, cc, skuList)
if isAsync {
buildSetFinishHook(task, ctx)
}