- 完成美团外卖运单调度

- 整理虚拟消息
This commit is contained in:
gazebo
2019-03-27 11:39:24 +08:00
parent 04c82289fd
commit 87ea9ff15a
3 changed files with 72 additions and 70 deletions

View File

@@ -226,10 +226,10 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *jdapi.CallbackOrderMsg) *model
return orderStatus
}
func (c *PurchaseHandler) postFakeFinishedPickupMsg(vendorOrderID string) {
func (c *PurchaseHandler) postFakeMsg(vendorOrderID, vendorStatus string) {
msg := &jdapi.CallbackOrderMsg{
BillID: vendorOrderID,
StatusID: jdapi.OrderStatusFinishedPickup,
StatusID: vendorStatus,
Timestamp: utils.Time2Str(time.Now()),
}
utils.CallFuncAsync(func() {
@@ -246,28 +246,35 @@ func (c *PurchaseHandler) GetStatusFromVendorStatus(vendorStatus string) int {
}
func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) {
return api.JdAPI.OrderAcceptOperate(order.VendorOrderID, isAcceptIt, userName)
if globals.EnableStoreWrite {
err = api.JdAPI.OrderAcceptOperate(order.VendorOrderID, isAcceptIt, userName)
} else {
c.postFakeMsg(order.VendorOrderID, jdapi.OrderStatusWaitOutStore)
}
return err
}
func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDeilivery bool, userName string) (err error) {
if !isSelfDeilivery {
if !isSelfDeilivery && globals.EnableStoreWrite {
_, err = api.JdAPI.OrderJDZBDelivery(order.VendorOrderID, userName)
} else {
c.postFakeFinishedPickupMsg(order.VendorOrderID)
c.postFakeMsg(order.VendorOrderID, jdapi.OrderStatusFinishedPickup)
}
return err
}
func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) {
_, err = api.JdAPI.ModifySellerDelivery(order.VendorOrderID, userName)
if err != nil {
if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 {
globals.SugarLogger.Infof("Swtich2SelfDeliver failed with error:%v try get current status", err)
if order2, err2 := c.GetOrder(order.VendorOrderID); err2 == nil {
var mapData map[string]interface{}
if err2 = utils.UnmarshalUseNumber([]byte(order2.OriginalData), &mapData); err2 == nil {
if utils.Interface2String(mapData["deliveryCarrierNo"]) == "2938" { // 当前已经是自送状态了
err = nil
if globals.EnableStoreWrite {
_, err = api.JdAPI.ModifySellerDelivery(order.VendorOrderID, userName)
if err != nil {
if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 {
globals.SugarLogger.Infof("Swtich2SelfDeliver failed with error:%v try get current status", err)
if order2, err2 := c.GetOrder(order.VendorOrderID); err2 == nil {
var mapData map[string]interface{}
if err2 = utils.UnmarshalUseNumber([]byte(order2.OriginalData), &mapData); err2 == nil {
if utils.Interface2String(mapData["deliveryCarrierNo"]) == "2938" { // 当前已经是自送状态了
err = nil
}
}
}
}
@@ -277,18 +284,25 @@ func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName s
}
func (c *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) {
_, err = api.JdAPI.DeliveryEndOrder(order.VendorOrderID, userName)
if globals.EnableStoreWrite {
_, err = api.JdAPI.DeliveryEndOrder(order.VendorOrderID, userName)
}
return err
}
func (c *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) {
_, err = api.JdAPI.OrderSerllerDelivery(order.VendorOrderID, userName)
if globals.EnableStoreWrite {
_, err = api.JdAPI.OrderSerllerDelivery(order.VendorOrderID, userName)
}
return err
}
// 京东送达接口都是一样的
func (c *PurchaseHandler) SelfDeliverDelievered(order *model.GoodsOrder, userName string) (err error) {
return c.Swtich2SelfDelivered(order, userName)
if globals.EnableStoreWrite {
err = c.Swtich2SelfDelivered(order, userName)
}
return err
}
func (c *PurchaseHandler) RefreshRealMobile(ctx *jxcontext.Context, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) {