From 777fcf52f7d3a217160ae439a20caaa4c07822fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 26 Nov 2020 17:44:24 +0800 Subject: [PATCH] try --- business/jxstore/cms/sync_store_sku.go | 80 ++++++++----------- business/partner/purchase/jdshop/store_sku.go | 34 ++++---- 2 files changed, 53 insertions(+), 61 deletions(-) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 8ac8e1a02..67b743656 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -680,60 +680,46 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag } case 1: if len(createList) > 0 { - //jds2创商品太快了。。 - if vendorID == model.VendorIDJDShop && storeID == model.JdShopMainStoreID2 { + _, err = putils.FreeBatchStoreSkuSyncInfo("创建门店商品", func(task tasksch.ITask, batchedStoreSkuList []*dao.StoreSkuSyncInfo) (result interface{}, successCount int, err error) { var failedList []*partner.StoreSkuInfoWithErr - failedList, err = singleStoreHandler.CreateStoreSkus(ctx, storeID, vendorStoreID, createList) - failedList, err = buildFailedListAndErr(failedList, err, nil, createList, storeID, vendorID, "创建门店商品") + if failedList, err = singleStoreHandler.CreateStoreSkus(ctx, storeID, vendorStoreID, batchedStoreSkuList); singleStoreHandler.IsErrSkuExist(err) { + if skuNameList, err2 := singleStoreHandler.GetStoreSkusFullInfo(ctx, task, storeID, vendorStoreID, []*partner.StoreSkuInfo{ + &partner.StoreSkuInfo{ + SkuID: batchedStoreSkuList[0].SkuID, + VendorSkuID: batchedStoreSkuList[0].VendorSkuID, + }, + }); err2 == nil && len(skuNameList) > 0 { + batchedStoreSkuList[0].VendorNameID = skuNameList[0].VendorNameID + batchedStoreSkuList[0].VendorSkuID = skuNameList[0].SkuList[0].VendorSkuID + + // 如果创建商品时已经存在,需要更新 + updateList = append(updateList, calVendorPrice4StoreSku(batchedStoreSkuList[0], storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage))) + err = nil + failedList = nil // 因为batchSize为1,可以这样处理 + } else if err2 != nil { + failedList = append(failedList, putils.GetErrMsg2FailedSingleList(batchedStoreSkuList, err2, storeID, model.VendorChineseNames[vendorID], "查询是否有该商品")...) + } + } + failedList, err = buildFailedListAndErr(failedList, err, nil, batchedStoreSkuList, storeID, vendorID, "创建门店商品") if len(failedList) > 0 { task.AddFailedList(failedList) } - successList := putils.UnselectStoreSkuSyncListByVendorSkuIDs(createList, GetVendorSkuIDList(failedList)) + if err != nil { + //handle error for sensitive words, if find, then insert to table sensitive_words + if sensitiveWord := GetSensitiveWord(singleStoreHandler, err.Error()); sensitiveWord != "" { + dao.InsertSensitiveWord(sensitiveWord, vendorID, ctx.GetUserName()) + // words, _ := dao.GetSensitiveWordList(vendorID) + // word := words[0] + // word.Word = word.Word + "," + sensitiveWord + // dao.UpdateSensitiveWord(word, vendorID, 0, ctx.GetUserName()) + } + } + successList := putils.UnselectStoreSkuSyncListByVendorSkuIDs(batchedStoreSkuList, GetVendorSkuIDList(failedList)) if len(successList) > 0 { updateStoreSku(dao.GetDB(), vendorID, successList, model.SyncFlagNewMask) } - } else { - _, err = putils.FreeBatchStoreSkuSyncInfo("创建门店商品", func(task tasksch.ITask, batchedStoreSkuList []*dao.StoreSkuSyncInfo) (result interface{}, successCount int, err error) { - var failedList []*partner.StoreSkuInfoWithErr - if failedList, err = singleStoreHandler.CreateStoreSkus(ctx, storeID, vendorStoreID, batchedStoreSkuList); singleStoreHandler.IsErrSkuExist(err) { - if skuNameList, err2 := singleStoreHandler.GetStoreSkusFullInfo(ctx, task, storeID, vendorStoreID, []*partner.StoreSkuInfo{ - &partner.StoreSkuInfo{ - SkuID: batchedStoreSkuList[0].SkuID, - VendorSkuID: batchedStoreSkuList[0].VendorSkuID, - }, - }); err2 == nil && len(skuNameList) > 0 { - batchedStoreSkuList[0].VendorNameID = skuNameList[0].VendorNameID - batchedStoreSkuList[0].VendorSkuID = skuNameList[0].SkuList[0].VendorSkuID - - // 如果创建商品时已经存在,需要更新 - updateList = append(updateList, calVendorPrice4StoreSku(batchedStoreSkuList[0], storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage))) - err = nil - failedList = nil // 因为batchSize为1,可以这样处理 - } else if err2 != nil { - failedList = append(failedList, putils.GetErrMsg2FailedSingleList(batchedStoreSkuList, err2, storeID, model.VendorChineseNames[vendorID], "查询是否有该商品")...) - } - } - failedList, err = buildFailedListAndErr(failedList, err, nil, batchedStoreSkuList, storeID, vendorID, "创建门店商品") - if len(failedList) > 0 { - task.AddFailedList(failedList) - } - if err != nil { - //handle error for sensitive words, if find, then insert to table sensitive_words - if sensitiveWord := GetSensitiveWord(singleStoreHandler, err.Error()); sensitiveWord != "" { - dao.InsertSensitiveWord(sensitiveWord, vendorID, ctx.GetUserName()) - // words, _ := dao.GetSensitiveWordList(vendorID) - // word := words[0] - // word.Word = word.Word + "," + sensitiveWord - // dao.UpdateSensitiveWord(word, vendorID, 0, ctx.GetUserName()) - } - } - successList := putils.UnselectStoreSkuSyncListByVendorSkuIDs(batchedStoreSkuList, GetVendorSkuIDList(failedList)) - if len(successList) > 0 { - updateStoreSku(dao.GetDB(), vendorID, successList, model.SyncFlagNewMask) - } - return nil, len(successList), err - }, ctx, task, createList, 1 /*singleStoreHandler.GetStoreSkusBatchSize(partner.FuncCreateStoreSkus)*/, isContinueWhenError2) - } + return nil, len(successList), err + }, ctx, task, createList, 1 /*singleStoreHandler.GetStoreSkusBatchSize(partner.FuncCreateStoreSkus)*/, isContinueWhenError2) } case 2: if len(updateList) > 0 { diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index 795308eb3..2c3b71d7e 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -43,8 +43,8 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v flag2 := false result, err := getAPI(v.VendorOrgCode).SearchWare4Valid(name, 1, 100) if err != nil { - failedList = append(failedList, putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品")...) - continue + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") + return failedList, err } for _, v := range result.Data { if v.Title == name { @@ -117,14 +117,14 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v updateSkusParam, wareSaveSku, err := buildUpdateSkusParam(v, vv, true) wareSaveSkus = append(wareSaveSkus, wareSaveSku) if err != nil { - failedList = append(failedList, putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品")...) - continue + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") + return failedList, err } if v.VendorOrgCode == "1" { vendorSkuID, err := getAPI(v.VendorOrgCode).UpdateSkus(updateSkusParam) if err != nil { - failedList = append(failedList, putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品")...) - continue + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") + return failedList, err } vv.VendorSkuID = vendorSkuID } else { @@ -144,8 +144,8 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v } else { createSkuParamWare, createSkuParamSkus, wareSaveParam, err := buildCreateWareParam(v) if err != nil { - failedList = append(failedList, putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品")...) - continue + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") + return failedList, err } var ( wareID int64 @@ -176,8 +176,14 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v } } } else { - createSkuResult, err2 := api.JdShop2API.WareSave(wareSaveParam) - err = err2 + var createSkuResult []*jdshopapi.WareSaveResult + for { + createSkuResult, err = api.JdShop2API.WareSave(wareSaveParam) + if len(createSkuResult) > 0 { + break + } + time.Sleep(time.Second / 2) + } wareID = createSkuResult[0].WareID var paramAttrs = make(map[string]*jdshopapi.WareSaveSkus) @@ -203,8 +209,8 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v err = api.JdShop2API.WareDoUpdate("up", utils.Int64ToStr(wareID)) } if err != nil { - failedList = append(failedList, putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品")...) - continue + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") + return failedList, err } else { //追加商品透图 imageURL := "" @@ -226,8 +232,8 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v } } if err != nil { - failedList = append(failedList, putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品")...) - continue + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") + return failedList, err } } }