From 58e91a8f5c5121692ac222fa48fc7d66a687b097 Mon Sep 17 00:00:00 2001 From: gazebo Date: Sun, 29 Jul 2018 17:08:42 +0800 Subject: [PATCH] - avoid duplicaated sku name when creating mtps bill. --- business/controller/mtps/waybill.go | 12 +++++++++++- business/scheduler/defsch/defsch.go | 16 ++++++++++------ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/business/controller/mtps/waybill.go b/business/controller/mtps/waybill.go index e9fa669da..76d2fc036 100644 --- a/business/controller/mtps/waybill.go +++ b/business/controller/mtps/waybill.go @@ -167,16 +167,26 @@ func (c *WaybillController) CreateWaybill(order *model.GoodsOrder) (err error) { goods := &mtpsapi.GoodsDetail{ Goods: []*mtpsapi.GoodsItem{}, } + goodItemMap := map[string]*mtpsapi.GoodsItem{} for _, sku := range order.Skus { goodItem := &mtpsapi.GoodsItem{ GoodCount: sku.Count, GoodPrice: jxutils.IntPrice2Standard(sku.SalePrice), } goodItem.GoodName, goodItem.GoodUnit = jxutils.SplitSkuName(sku.SkuName) - goods.Goods = append(goods.Goods, goodItem) + // 好像SKU名不能重复,否则会报错,尝试处理一下 + if item, ok := goodItemMap[goodItem.GoodName]; !ok { + goods.Goods = append(goods.Goods, goodItem) + goodItemMap[goodItem.GoodName] = goodItem + } else { + item.GoodCount += goodItem.GoodCount + } } addParams := utils.Params2Map("note", order.BuyerComment, "goods_detail", string(utils.MustMarshal(goods))) _, err = api.MtpsAPI.CreateOrderByShop(billParams, addParams) + if err != nil { + globals.SugarLogger.Debugf("CreateWaybill, orderID:%s, billParams:%v, addParams:%v", order.VendorOrderID, billParams, addParams) + } } } return err diff --git a/business/scheduler/defsch/defsch.go b/business/scheduler/defsch/defsch.go index c7f289e28..d417991e7 100644 --- a/business/scheduler/defsch/defsch.go +++ b/business/scheduler/defsch/defsch.go @@ -328,7 +328,9 @@ func (s *DefScheduler) addWaybill2Map(savedOrderInfo *WatchOrderInfo, bill *mode if v.VendorWaybillID == bill.VendorWaybillID && v.WaybillVendorID == bill.WaybillVendorID { *v = *bill // 同步数据 // 如果已经存在,不做处理 - globals.SugarLogger.Warnf("addWaybill2Map bill:%v already exists", bill) + if bill.WaybillVendorID != bill.OrderVendorID { // 购买平台重复发相同号的新运单是正常的,京东就是 + globals.SugarLogger.Warnf("addWaybill2Map bill:%v already exists", bill) + } return } } @@ -360,17 +362,19 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf } } if successCount != 0 { - return nil + err = nil + } else { + globals.SugarLogger.Infof("createWaybillOn3rdProviders, orderID:%s all failed", order.VendorOrderID) + err = scheduler.ErrCanNotCreateAtLeastOneWaybill } - globals.SugarLogger.Infof("createWaybillOn3rdProviders, orderID:%s all failed", order.VendorOrderID) - return scheduler.ErrCanNotCreateAtLeastOneWaybill } else { globals.SugarLogger.Warnf("createWaybillOn3rdProviders, orderID:%s failed %d times, stop schedule", order.VendorOrderID, savedOrderInfo.retryCount) } - globals.SugarLogger.Debugf("createWaybillOn3rdProviders, orderID:%s, store:%d dont't support 3rd delivery platform", order.VendorOrderID, jxutils.GetJxStoreIDFromOrder(order)) } else { - globals.SugarLogger.Debugf("createWaybillOn3rdProviders, orderID:%s, status:%d doesn't match model.OrderStatusFinishedPickup, bypass", order.VendorOrderID, order.Status) + globals.SugarLogger.Debugf("createWaybillOn3rdProviders, orderID:%s, store:%d dont't support 3rd delivery platform", order.VendorOrderID, jxutils.GetJxStoreIDFromOrder(order)) } + } else { + globals.SugarLogger.Debugf("createWaybillOn3rdProviders, orderID:%s, status:%d doesn't match model.OrderStatusFinishedPickup, bypass", order.VendorOrderID, order.Status) } return err }