From 62eda9a72f630a8b6dfd17d8cf82b4c70e1b0387 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 18 Mar 2022 11:16:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=93=E6=A1=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sync2.go | 146 ++++++++++++++++++---------------- 1 file changed, 76 insertions(+), 70 deletions(-) diff --git a/business/jxstore/cms/sync2.go b/business/jxstore/cms/sync2.go index 47c07af21..19c0addef 100644 --- a/business/jxstore/cms/sync2.go +++ b/business/jxstore/cms/sync2.go @@ -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) }