+ RemoveSkuFromOrder
+ 美团配送调整消息正确更新订单信息
This commit is contained in:
@@ -435,3 +435,42 @@ func RefreshOrderSkuRelated(order *model.GoodsOrder) *model.GoodsOrder {
|
|||||||
}
|
}
|
||||||
return order
|
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)
|
||||||
|
}
|
||||||
|
|||||||
@@ -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) {
|
func (c *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.GoodsOrder, removedSkuList []*model.OrderSku, reason string) (err error) {
|
||||||
removedSkuMap := make(map[int]*model.OrderSku)
|
order = jxutils.RemoveSkuFromOrder(order, removedSkuList)
|
||||||
for _, sku := range removedSkuList {
|
|
||||||
removedSkuMap[jxutils.GetSkuIDFromOrderSku(sku)] = sku
|
|
||||||
}
|
|
||||||
var oaosAdjustDTOList []*jdapi.OAOSAdjustDTO
|
var oaosAdjustDTOList []*jdapi.OAOSAdjustDTO
|
||||||
for _, sku := range order.Skus {
|
for _, sku := range order.Skus {
|
||||||
skuID := jxutils.GetSkuIDFromOrderSku(sku)
|
oaosAdjustDTOList = append(oaosAdjustDTOList, &jdapi.OAOSAdjustDTO{
|
||||||
tmp := &jdapi.OAOSAdjustDTO{
|
OutSkuID: utils.Int2Str(jxutils.GetSkuIDFromOrderSku(sku)),
|
||||||
OutSkuID: utils.Int2Str(skuID),
|
|
||||||
SkuCount: sku.Count,
|
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 {
|
if globals.EnableStoreWrite {
|
||||||
err = api.JdAPI.AdjustOrder(order.VendorOrderID, ctx.GetUserName(), reason, oaosAdjustDTOList)
|
err = api.JdAPI.AdjustOrder(order.VendorOrderID, ctx.GetUserName(), reason, oaosAdjustDTOList)
|
||||||
|
|||||||
@@ -170,14 +170,30 @@ func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmap
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if status := c.callbackMsg2Status(msg); status != nil {
|
if status := c.callbackMsg2Status(msg); status != nil {
|
||||||
err = partner.CurOrderManager.OnOrderStatusChanged(status)
|
if status.Status == model.OrderStatusAdjust {
|
||||||
if err == nil && msg.Cmd == mtwmapi.MsgTypeOrderFinished {
|
var order *model.GoodsOrder
|
||||||
utils.CallFuncAsync(func() {
|
if order, err = c.GetOrder(GetOrderIDFromMsg(msg)); err == nil {
|
||||||
orderMap, err := api.MtwmAPI.OrderGetOrderDetail(utils.Str2Int64(GetOrderIDFromMsg(msg)), true)
|
skuList := api.MtwmAPI.GetRefundSkuDetailFromMsg(msg)
|
||||||
if err == nil && utils.MustInterface2Int64(orderMap["is_third_shipping"]) == SelfDeliveryCarrierNo {
|
var removedSkuList []*model.OrderSku
|
||||||
c.OnOrderDetail(orderMap, partner.UpdatedPeration)
|
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)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user