+ RemoveSkuFromOrder

+ 美团配送调整消息正确更新订单信息
This commit is contained in:
gazebo
2019-05-01 13:38:41 +08:00
parent 3591e00636
commit c43750f2f4
3 changed files with 66 additions and 25 deletions

View File

@@ -435,3 +435,42 @@ func RefreshOrderSkuRelated(order *model.GoodsOrder) *model.GoodsOrder {
}
return order
}
func RemoveSkuFromOrder(order *model.GoodsOrder, removedSkuList []*model.OrderSku) *model.GoodsOrder {
removedSkuMap := make(map[int]*model.OrderSku)
removedSkuMap2 := make(map[string]*model.OrderSku)
for _, sku := range removedSkuList {
if skuID := GetSkuIDFromOrderSku(sku); skuID > 0 {
removedSkuMap[skuID] = sku
}
if vendorSkuID := sku.VendorSkuID; vendorSkuID != "" {
removedSkuMap2[vendorSkuID] = sku
}
}
var skuList []*model.OrderSku
for _, sku := range order.Skus {
var removedSku *model.OrderSku
if skuID := GetSkuIDFromOrderSku(sku); skuID > 0 {
removedSku = removedSkuMap[skuID]
}
if removedSku == nil {
if vendorSkuID := sku.VendorSkuID; vendorSkuID != "" {
removedSku = removedSkuMap2[vendorSkuID]
}
}
copiedSku := *sku
tmp := &copiedSku
if removedSku != nil {
if removedSku.Count >= sku.Count {
tmp = nil
} else {
tmp.Count -= removedSku.Count
}
}
if tmp != nil {
skuList = append(skuList, tmp)
}
}
order.Skus = skuList
return RefreshOrderSkuRelated(order)
}

View File

@@ -330,27 +330,13 @@ func (c *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.Goods
}
func (c *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.GoodsOrder, removedSkuList []*model.OrderSku, reason string) (err error) {
removedSkuMap := make(map[int]*model.OrderSku)
for _, sku := range removedSkuList {
removedSkuMap[jxutils.GetSkuIDFromOrderSku(sku)] = sku
}
order = jxutils.RemoveSkuFromOrder(order, removedSkuList)
var oaosAdjustDTOList []*jdapi.OAOSAdjustDTO
for _, sku := range order.Skus {
skuID := jxutils.GetSkuIDFromOrderSku(sku)
tmp := &jdapi.OAOSAdjustDTO{
OutSkuID: utils.Int2Str(skuID),
oaosAdjustDTOList = append(oaosAdjustDTOList, &jdapi.OAOSAdjustDTO{
OutSkuID: utils.Int2Str(jxutils.GetSkuIDFromOrderSku(sku)),
SkuCount: sku.Count,
}
if removedSkuMap[skuID] != nil {
if removedSkuMap[skuID].Count >= sku.Count {
tmp = nil
} else {
tmp.SkuCount -= removedSkuMap[skuID].Count
}
}
if tmp != nil {
oaosAdjustDTOList = append(oaosAdjustDTOList, tmp)
}
})
}
if globals.EnableStoreWrite {
err = api.JdAPI.AdjustOrder(order.VendorOrderID, ctx.GetUserName(), reason, oaosAdjustDTOList)

View File

@@ -170,14 +170,30 @@ func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmap
}
} else {
if status := c.callbackMsg2Status(msg); status != nil {
err = partner.CurOrderManager.OnOrderStatusChanged(status)
if err == nil && msg.Cmd == mtwmapi.MsgTypeOrderFinished {
utils.CallFuncAsync(func() {
orderMap, err := api.MtwmAPI.OrderGetOrderDetail(utils.Str2Int64(GetOrderIDFromMsg(msg)), true)
if err == nil && utils.MustInterface2Int64(orderMap["is_third_shipping"]) == SelfDeliveryCarrierNo {
c.OnOrderDetail(orderMap, partner.UpdatedPeration)
if status.Status == model.OrderStatusAdjust {
var order *model.GoodsOrder
if order, err = c.GetOrder(GetOrderIDFromMsg(msg)); err == nil {
skuList := api.MtwmAPI.GetRefundSkuDetailFromMsg(msg)
var removedSkuList []*model.OrderSku
for _, mtwmSku := range skuList {
removedSkuList = append(removedSkuList, &model.OrderSku{
SkuID: int(utils.Str2Int64WithDefault(mtwmSku.SkuID, 0)),
Count: mtwmSku.Count,
})
}
})
order = jxutils.RemoveSkuFromOrder(order, removedSkuList)
err = partner.CurOrderManager.OnOrderAdjust(order, status.VendorStatus)
}
} else {
err = partner.CurOrderManager.OnOrderStatusChanged(status)
if err == nil && msg.Cmd == mtwmapi.MsgTypeOrderFinished {
utils.CallFuncAsync(func() {
orderMap, err := api.MtwmAPI.OrderGetOrderDetail(utils.Str2Int64(GetOrderIDFromMsg(msg)), true)
if err == nil && utils.MustInterface2Int64(orderMap["is_third_shipping"]) == SelfDeliveryCarrierNo {
c.OnOrderDetail(orderMap, partner.UpdatedPeration)
}
})
}
}
}
}