- avoid duplicaated sku name when creating mtps bill.
This commit is contained in:
@@ -167,16 +167,26 @@ func (c *WaybillController) CreateWaybill(order *model.GoodsOrder) (err error) {
|
|||||||
goods := &mtpsapi.GoodsDetail{
|
goods := &mtpsapi.GoodsDetail{
|
||||||
Goods: []*mtpsapi.GoodsItem{},
|
Goods: []*mtpsapi.GoodsItem{},
|
||||||
}
|
}
|
||||||
|
goodItemMap := map[string]*mtpsapi.GoodsItem{}
|
||||||
for _, sku := range order.Skus {
|
for _, sku := range order.Skus {
|
||||||
goodItem := &mtpsapi.GoodsItem{
|
goodItem := &mtpsapi.GoodsItem{
|
||||||
GoodCount: sku.Count,
|
GoodCount: sku.Count,
|
||||||
GoodPrice: jxutils.IntPrice2Standard(sku.SalePrice),
|
GoodPrice: jxutils.IntPrice2Standard(sku.SalePrice),
|
||||||
}
|
}
|
||||||
goodItem.GoodName, goodItem.GoodUnit = jxutils.SplitSkuName(sku.SkuName)
|
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)))
|
addParams := utils.Params2Map("note", order.BuyerComment, "goods_detail", string(utils.MustMarshal(goods)))
|
||||||
_, err = api.MtpsAPI.CreateOrderByShop(billParams, addParams)
|
_, 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
|
return err
|
||||||
|
|||||||
@@ -328,7 +328,9 @@ func (s *DefScheduler) addWaybill2Map(savedOrderInfo *WatchOrderInfo, bill *mode
|
|||||||
if v.VendorWaybillID == bill.VendorWaybillID && v.WaybillVendorID == bill.WaybillVendorID {
|
if v.VendorWaybillID == bill.VendorWaybillID && v.WaybillVendorID == bill.WaybillVendorID {
|
||||||
*v = *bill // 同步数据
|
*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
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -360,17 +362,19 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if successCount != 0 {
|
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 {
|
} else {
|
||||||
globals.SugarLogger.Warnf("createWaybillOn3rdProviders, orderID:%s failed %d times, stop schedule", order.VendorOrderID, savedOrderInfo.retryCount)
|
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 {
|
} 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
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user