diff --git a/business/partner/purchase/mtwm/order.go b/business/partner/purchase/mtwm/order.go index 82ee31b6b..df3076aa1 100644 --- a/business/partner/purchase/mtwm/order.go +++ b/business/partner/purchase/mtwm/order.go @@ -11,7 +11,6 @@ import ( "git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/baseapi/utils" - "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" @@ -23,9 +22,9 @@ import ( ) const ( - FakeMsgTypeOrderReceived = "orderReceived" - FakeMsgTypeOrderDelivering = "orderDelivering" + FakeMsgType = "fakeMsgType" + fakeFinishedPickup = "fake_finished_pickup" fakeUserApplyCancel = "fake_user_apply_cancel" fakeMerchantAgreeApplyCancel = "fake_merchant_agree_apply_cancel" fakeRefuseUserApplyCancel = "fake_refuse_user_apply_cancel" @@ -38,11 +37,11 @@ const ( ) const ( - // pickupOrderDelay = 260 * time.Second - pickupOrderDelay = 1 * time.Second +// pickupOrderDelay = 260 * time.Second +// pickupOrderDelay = 1 * time.Second - callDeliveryDelay = 10 * time.Minute - callDeliveryDelayGap = 30 +// callDeliveryDelay = 10 * time.Minute +// callDeliveryDelayGap = 30 ) var ( @@ -53,13 +52,16 @@ var ( VendorStatus2StatusMap = map[string]int{ mtwmapi.OrderStatusUserCommitted: model.OrderStatusUnknown, mtwmapi.OrderStatusNew: model.OrderStatusNew, - mtwmapi.OrderStatusReceived: model.OrderStatusAccepted, - mtwmapi.OrderStatusAccepted: model.OrderStatusFinishedPickup, - mtwmapi.OrderStatusDelivering: model.OrderStatusDelivering, - mtwmapi.OrderStatusDelivered: model.OrderStatusUnknown, // 以mtwmapi.OrderStatusFinished为结束状态,这个当成一个中间状态(且很少看到这个状态) - mtwmapi.OrderStatusFinished: model.OrderStatusFinished, - mtwmapi.OrderStatusCanceled: model.OrderStatusCanceled, + // mtwmapi.OrderStatusReceived: model.OrderStatusAccepted, + // mtwmapi.OrderStatusAccepted: model.OrderStatusFinishedPickup, + mtwmapi.OrderStatusAccepted: model.OrderStatusAccepted, + mtwmapi.OrderStatusDelivering: model.OrderStatusDelivering, + mtwmapi.OrderStatusDelivered: model.OrderStatusUnknown, // 以mtwmapi.OrderStatusFinished为结束状态,这个当成一个中间状态(且很少看到这个状态) + mtwmapi.OrderStatusFinished: model.OrderStatusFinished, + mtwmapi.OrderStatusCanceled: model.OrderStatusCanceled, + + fakeFinishedPickup: model.OrderStatusFinishedPickup, fakeOrderAdjustFinished: model.OrderStatusAdjust, fakeRefuseUserApplyCancel: model.OrderStatusUnlocked, fakeUserApplyCancel: model.OrderStatusApplyCancel, @@ -142,9 +144,10 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo if openUID > 0 { order.VendorUserID = utils.Int64ToStr(openUID) } - if utils.IsTimeZero(order.PickDeadline) && !utils.IsTimeZero(order.StatusTime) { - order.PickDeadline = order.StatusTime.Add(pickupOrderDelay) // 美团外卖要求在5分钟内拣货,不然订单会被取消 - } + // 不设置最晚拣货时间,以缺省值为准 + // if utils.IsTimeZero(order.PickDeadline) && !utils.IsTimeZero(order.StatusTime) { + // order.PickDeadline = order.StatusTime.Add(pickupOrderDelay) // 美团外卖要求在5分钟内拣货,不然订单会被取消 + // } order.Status = p.getStatusFromVendorStatus(order.VendorStatus) if utils.IsTimeZero(order.ExpectedDeliveredTime) { order.BusinessType = model.BusinessTypeImmediate @@ -347,7 +350,7 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *mtwmapi.CallbackMsg) (orderSta case mtwmapi.MsgTypeOrderCanceled: vendorStatus = mtwmapi.OrderStatusCanceled remark = msg.FormData.Get("reason") - case mtwmapi.MsgTypeNewOrder, FakeMsgTypeOrderReceived, mtwmapi.MsgTypeOrderAccepted, FakeMsgTypeOrderDelivering, mtwmapi.MsgTypeOrderFinished: + case FakeMsgType, mtwmapi.MsgTypeNewOrder, mtwmapi.MsgTypeOrderAccepted, mtwmapi.MsgTypeOrderFinished: vendorStatus = msg.FormData.Get("status") statusTime = utils.Str2Int64(msg.FormData.Get("utime")) case mtwmapi.MsgTypeOrderRefund, mtwmapi.MsgTypeOrderPartialRefund: @@ -414,11 +417,15 @@ func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI globals.SugarLogger.Debugf("mtwm AcceptOrRefuseOrder orderID:%s, isAcceptIt:%t", order.VendorOrderID, isAcceptIt) if isAcceptIt { if globals.EnableMtwmStoreWrite { - err = api.MtwmAPI.OrderReceived(utils.Str2Int64(order.VendorOrderID)) - } - if err == nil { - c.postFakeMsg(order.VendorOrderID, FakeMsgTypeOrderReceived, mtwmapi.OrderStatusReceived) + // err = api.MtwmAPI.OrderReceived(utils.Str2Int64(order.VendorOrderID)) + err = api.MtwmAPI.OrderConfirm(utils.Str2Int64(order.VendorOrderID)) + if err != nil { + globals.SugarLogger.Warnf("mtwm AcceptOrRefuseOrder orderID:%s failed with err:%v", order.VendorOrderID, err) + } } + // if err == nil { + // c.postFakeMsg(order.VendorOrderID, FakeMsgType, mtwmapi.OrderStatusReceived) + // } } else { if globals.EnableMtwmStoreWrite { err = c.CancelOrder(jxcontext.AdminCtx, order, "bu") @@ -430,9 +437,11 @@ func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) { globals.SugarLogger.Debugf("mtwm PickupGoods orderID:%s, isSelfDelivery:%t", order.VendorOrderID, isSelfDelivery) if globals.EnableMtwmStoreWrite { - err = api.MtwmAPI.OrderConfirm(utils.Str2Int64(order.VendorOrderID)) - } else { - c.postFakeMsg(order.VendorOrderID, mtwmapi.MsgTypeOrderAccepted, mtwmapi.OrderStatusAccepted) + // err = api.MtwmAPI.OrderConfirm(utils.Str2Int64(order.VendorOrderID)) + err = api.MtwmAPI.PreparationMealComplete(utils.Str2Int64(order.VendorOrderID)) + } + if err == nil { + c.postFakeMsg(order.VendorOrderID, FakeMsgType, fakeFinishedPickup) } return err } @@ -495,19 +504,19 @@ func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *mode return mobile, err } -func (c *PurchaseHandler) GetStatusActionTimeout(order *model.GoodsOrder, statusType, status int) (params *partner.StatusActionParams) { - if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusAccepted { - params = &partner.StatusActionParams{ // PickDeadline没有设置时才有效,美团外卖要求在5分钟内拣货,不然订单会被取消 - Timeout: pickupOrderDelay, - } - } else if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusFinishedPickup { - params = &partner.StatusActionParams{ // 立即达订单有效,自配送延时召唤配送 - Timeout: callDeliveryDelay, - TimeoutGap: callDeliveryDelayGap, - } - } - return params -} +// func (c *PurchaseHandler) GetStatusActionTimeout(order *model.GoodsOrder, statusType, status int) (params *partner.StatusActionParams) { +// if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusAccepted { +// params = &partner.StatusActionParams{ // PickDeadline没有设置时才有效,美团外卖要求在5分钟内拣货,不然订单会被取消 +// Timeout: pickupOrderDelay, +// } +// } else if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusFinishedPickup { +// params = &partner.StatusActionParams{ // 立即达订单有效,自配送延时召唤配送 +// Timeout: callDeliveryDelay, +// TimeoutGap: callDeliveryDelayGap, +// } +// } +// return params +// } func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *model.GoodsOrder, isAgree bool, reason string) (err error) { if globals.EnableMtwmStoreWrite { diff --git a/business/partner/purchase/mtwm/waybill.go b/business/partner/purchase/mtwm/waybill.go index be3b39f66..4c44081a6 100644 --- a/business/partner/purchase/mtwm/waybill.go +++ b/business/partner/purchase/mtwm/waybill.go @@ -1,9 +1,6 @@ package mtwm import ( - "net/url" - "time" - "git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" @@ -33,17 +30,7 @@ func (c *PurchaseHandler) onWaybillMsg(msg *mtwmapi.CallbackMsg) (response *mtwm waybill := c.callbackMsg2Waybill(msg) err := partner.CurOrderManager.OnWaybillStatusChanged(waybill) if err == nil && waybill.Status == model.WaybillStatusDelivering { - msg := &mtwmapi.CallbackMsg{ - Cmd: FakeMsgTypeOrderDelivering, - FormData: url.Values{}, - } - msg.FormData.Set("timestamp", utils.Int64ToStr(time.Now().Unix())) - msg.FormData.Set("utime", msg.FormData.Get("timestamp")) - msg.FormData.Set(mtwmapi.KeyOrderID, waybill.VendorOrderID) - msg.FormData.Set("status", mtwmapi.OrderStatusDelivering) - utils.CallFuncAsync(func() { - c.onOrderMsg(msg) - }) + c.postFakeMsg(waybill.VendorOrderID, FakeMsgType, mtwmapi.OrderStatusDelivering) } return mtwmapi.Err2CallbackResponse(err, "") }