diff --git a/business/partner/purchase/ebai/store_sku2.go b/business/partner/purchase/ebai/store_sku2.go index 1fd84a97b..827d93cd6 100644 --- a/business/partner/purchase/ebai/store_sku2.go +++ b/business/partner/purchase/ebai/store_sku2.go @@ -16,9 +16,15 @@ import ( "git.rosy.net.cn/jx-callback/globals/api" ) -const ( - minBatchSize = 5 // 使用batch相关的API最少的处理数量,因为饿百批处理API的调用频率限制得更低 -) +func (p *PurchaseHandler) GetStoreSkusBatchSize(funcID int) (batchSize int) { + switch funcID { + case partner.FuncUpdateStoreSkusStock, partner.FuncUpdateStoreSkusStatus, partner.FuncUpdateStoreSkusPrice, partner.FuncDeleteStoreSkus: + batchSize = ebaiapi.MaxStoreSkuBatchSize + case partner.FuncCreateStoreSkus, partner.FuncUpdateStoreSkus: + batchSize = 1 + } + return batchSize +} // 门店分类 func (p *PurchaseHandler) ReadStoreCategory(ctx *jxcontext.Context, vendorStoreID string) (cats []*partner.BareCategoryInfo, err error) { @@ -79,12 +85,6 @@ func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, vendorStoreID return err } -// 通用 - -func (p *PurchaseHandler) GetStoreSkusBatchSize(funcID int) int { - return 1 -} - // 对于多门店平台来说,storeSkuList中只有SkuID与VendorSkuID有意义 func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (err error) { storeSku := storeSkuList[0] @@ -115,24 +115,16 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, storeID } } if globals.EnableEbaiStoreWrite { - if len(invalidSkus) > minBatchSize { + if len(invalidSkus) > 1 { err = api.EbaiAPI.SkuOffline(utils.Int2Str(storeID), strings.Join(invalidSkus, ",")) - } else if len(invalidSkus) > 0 { - for _, v := range invalidSkus { - if err = api.EbaiAPI.SkuOfflineOne(utils.Int2Str(storeID), utils.Str2Int64(v), "", ""); err != nil { - break - } - } + } else if len(invalidSkus) == 1 { + err = api.EbaiAPI.SkuOfflineOne(utils.Int2Str(storeID), utils.Str2Int64(invalidSkus[0]), "", "") } if err == nil { - if len(validSkus) > minBatchSize { + if len(validSkus) > 1 { err = api.EbaiAPI.SkuOnline(utils.Int2Str(storeID), strings.Join(validSkus, ",")) - } else if len(validSkus) > 0 { - for _, v := range invalidSkus { - if err = api.EbaiAPI.SkuOnlineOne(utils.Int2Str(storeID), utils.Str2Int64(v), "", ""); err != nil { - break - } - } + } else if len(validSkus) == 1 { + err = api.EbaiAPI.SkuOnlineOne(utils.Int2Str(storeID), utils.Str2Int64(validSkus[0]), "", "") } } } @@ -145,14 +137,10 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, storeID i skuPriceList[k] = fmt.Sprintf("%s:%d", v.VendorSkuID, v.Price) } if globals.EnableEbaiStoreWrite { - if len(skuPriceList) > minBatchSize { + if len(skuPriceList) > 1 { err = api.EbaiAPI.SkuPriceUpdateBatch(utils.Int2Str(storeID), strings.Join(skuPriceList, ";"), "", "") - } else { - for _, v := range skuPriceList { - if err = api.EbaiAPI.SkuPriceUpdateOne(utils.Int2Str(storeID), v, "", ""); err != nil { - break - } - } + } else if len(skuPriceList) == 1 { + err = api.EbaiAPI.SkuPriceUpdateOne(utils.Int2Str(storeID), skuPriceList[0], "", "") } } return err