diff --git a/business/partner/purchase/tao_vegetable/store_sku2.go b/business/partner/purchase/tao_vegetable/store_sku2.go index 40b744074..e31e2ffcb 100644 --- a/business/partner/purchase/tao_vegetable/store_sku2.go +++ b/business/partner/purchase/tao_vegetable/store_sku2.go @@ -225,7 +225,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI api := getAPI(getStoreVendorOrgCode(storeID), storeID, vendorStoreID) if isCreate { - failedList, err = createTaoVegetable(api, storeSkuList, vendorStoreID, storeID, syncType) + failedList, err = createTaoVegetable(ctx, api, storeSkuList, vendorStoreID, storeID, syncType) globals.SugarLogger.Debugf("创建淘鲜达商品异常:%v", err) } else { failedList, err = UpdateTaoVegetable(api, storeSkuList, vendorStoreID, storeID, syncType) @@ -278,7 +278,7 @@ func UpdateTaoVegetable(api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSync } // createTaoVegetable 创建淘鲜达商品 -func createTaoVegetable(api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSyncInfo, vendorStoreID string, storeID int, syncType string) (failedList []*partner.StoreSkuInfoWithErr, err error) { +func createTaoVegetable(ctx *jxcontext.Context, api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSyncInfo, vendorStoreID string, storeID int, syncType string) (failedList []*partner.StoreSkuInfoWithErr, err error) { createPram := &request585.AlibabaWdkSkuAddRequest{} param := make([]domain585.AlibabaWdkSkuAddSkuDo, 0, 0) totalCount := len(storeSkuList) @@ -376,22 +376,30 @@ func createTaoVegetable(api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSync createPram.ParamList = ¶m result, err := api.AddStoreSku(createPram) globals.SugarLogger.Debugf("创建淘鲜达商品异常 result :%s", utils.Format4Output(result, false)) - if err != nil { globals.SugarLogger.Debugf("创建淘鲜达商品异常:%s", err.Error()) } // 记录失败的同步数据 - failedList, vendorSkuIdMap = SelectStoreSkuListByFoodList(storeSkuList, *result, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], syncType) + failedList2, vendorSkuIdMap2 := SelectStoreSkuListByFoodList(storeSkuList, *result, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], syncType) + failedList = append(failedList, failedList2...) + for k, v := range vendorSkuIdMap2 { + vendorSkuIdMap[k] = v + } + createPram.ParamList = nil param = make([]domain585.AlibabaWdkSkuAddSkuDo, 0, 0) } } - globals.SugarLogger.Debugf("vendorSkuIdMap=====err := %v", utils.Format4Output(vendorSkuIdMap, false)) + + var successSku = make([]int, 0, len(vendorSkuIdMap)) for _, v := range storeSkuList { if k, ok := vendorSkuIdMap[utils.Int2Str(v.SkuID)]; ok { v.VendorSkuID = k + successSku = append(successSku, v.SkuID) } } + failedListStock := updateStoreSkusStockByCreate(ctx, api, storeID, vendorStoreID, successSku) + failedList = append(failedList, failedListStock...) globals.SugarLogger.Debugf("storeSkuList=====err := %s", utils.Format4Output(storeSkuList, false)) globals.SugarLogger.Debugf("createTaoVegetable=====err := %v", err) @@ -543,6 +551,41 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg return failedList, err } +// updateStoreSkusStockByCreate 创建时更新库存数量 +func updateStoreSkusStockByCreate(ctx *jxcontext.Context, api *tao_vegetable.API, storeID int, vendorStoreID string, storeSkuList []int) (failedList []*partner.StoreSkuInfoWithErr) { + param := request589.AlibabaWdkStockPublishRequest{} + batchStockPublishDto := &domain589.AlibabaWdkStockPublishBatchStockPublishDto{ + UpdateType: utils.Int64ToPointer(tao_vegetable.UpdateTypeStoke), + BillNo: utils.String2Pointer(utils.Int64ToStr(time.Now().UnixNano())), + BillType: utils.Int64ToPointer(tao_vegetable.UpdateTypeStokeBillType), + PublishSource: utils.String2Pointer(vendorStoreID), + ShopCode: utils.String2Pointer(vendorStoreID), + Operator: utils.String2Pointer(ctx.GetUserName()), + StockPublishDtos: nil, + } + stockPublishDtos := make([]domain589.AlibabaWdkStockPublishStockPublishDto, 0, 0) + for index, v := range storeSkuList { + stockPublishDtos = append(stockPublishDtos, domain589.AlibabaWdkStockPublishStockPublishDto{ + SkuCode: utils.String2Pointer(utils.Int2Str(v)), + Quantity: utils.String2Pointer("9999"), + OrderNo: utils.String2Pointer(fmt.Sprintf("%s_%d_%d", vendorStoreID, time.Now().UnixNano(), 84671)), + OrderType: utils.String2Pointer("10006800"), // 这个不太确定 + }) + if (index+model.YES)%tao_vegetable.MAXHandleCount == model.NO || (index+1) == len(storeSkuList) { + batchStockPublishDto.StockPublishDtos = &stockPublishDtos + param.BatchStockPublishDto = batchStockPublishDto + if err := api.StoreSkuStock(¶m); err != nil { + failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], "更新库存错误")...) + } + stockPublishDtos = make([]domain589.AlibabaWdkStockPublishStockPublishDto, 0, 0) + param.BatchStockPublishDto = nil + } + } + globals.SugarLogger.Debugf("UpdateStoreSkusStock=====err := %v", failedList) + return failedList +} + +// UpdateStoreSkusStock 操作更新库存数量 func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { api := getAPI(getStoreVendorOrgCode(storeID), storeID, vendorStoreID)