修改发单bug
This commit is contained in:
@@ -510,22 +510,23 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
||||
globals.SugarLogger.Debugf("OnWaybillStatusChanged orderID:%s %s, bill:%v", bill.VendorOrderID, model.WaybillStatusName[bill.Status], utils.Format4Output(bill, true))
|
||||
savedOrderInfo := s.loadSavedOrderFromMap(model.Waybill2Status(bill), true)
|
||||
order := savedOrderInfo.order
|
||||
// todo 当前收到的事件顺序有时是乱的,不能严格限制,暂时放开
|
||||
// if order.Status < model.OrderStatusFinishedPickup || order.Status > model.OrderStatusEndBegin { // 如果当前order状态是不应该出现运单状态
|
||||
// globals.SugarLogger.Infof("OnWaybillStatusChanged orderID:%s status:%s is not suitable for waybill", order.VendorOrderID, model.OrderStatusName[order.Status])
|
||||
// s.ProxyCancelWaybill(order, bill)
|
||||
// s.stopTimer(savedOrderInfo)
|
||||
// s.orderMap.Delete(jxutils.GetUniversalOrderIDFromOrderStatus(model.Order2Status(order)))
|
||||
// return nil
|
||||
// }
|
||||
// if (order.DeliveryFlag & model.OrderDeliveryFlagMaskScheduleDisabled) == 0 { // 如果被停止调度,整个不动作
|
||||
|
||||
// 获取订单配送平台,如果是美团则需要获取门店配置的配送方式
|
||||
//isBlendWay := false
|
||||
//if bill.OrderVendorID == model.VendorIDMTWM {
|
||||
// mtStoreInfo, err := api.MtwmAPI.PoiGet(utils.Int2Str(order.JxStoreID))
|
||||
// globals.SugarLogger.Debugf("从美团上获取门店失败:%s", err)
|
||||
// isBlendWay = strings.Contains(mtStoreInfo.LogisticsCodes, model.MTWMStorePSWay8)
|
||||
//}
|
||||
|
||||
if bill.Status == model.WaybillStatusNew {
|
||||
s.addWaybill2Map(savedOrderInfo, bill)
|
||||
if !isPending {
|
||||
if order.Status >= model.OrderStatusDelivering && order.Status < model.OrderStatusEndBegin {
|
||||
if order.DeliveryType == model.OrderDeliveryTypeStoreSelf {
|
||||
// 门店配送方式仅为自配送的商家在接单后,如商品已开始配送
|
||||
s.SelfDeliverDelivering(order, "自配送中")
|
||||
// 将订单冲购物平台转自送(混合送转自送)
|
||||
s.swtich2SelfDeliverWithRetry(savedOrderInfo, bill, switch2SelfDeliverRetryCount, switch2SelfDeliverRetryGap)
|
||||
} else {
|
||||
s.ProxyCancelWaybill(order, bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonStrNotAcceptIntime)
|
||||
@@ -675,10 +676,10 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
||||
s.notify3rdPartyWaybill(order, bill, isBillAlreadyCandidate)
|
||||
}
|
||||
// 订单在三方配送中,转自送
|
||||
//if order.Status >= model.OrderStatusDelivering && order.VendorOrderID != order.VendorWaybillID && order.VendorWaybillID != "" {
|
||||
// s.swtich2SelfDeliverWithRetry(savedOrderInfo, bill, switch2SelfDeliverRetryCount, switch2SelfDeliverRetryGap)
|
||||
// s.SelfDeliverDelivering(order, "自配送中")
|
||||
//}
|
||||
if order.Status >= model.OrderStatusDelivering && order.VendorOrderID != order.VendorWaybillID && order.VendorWaybillID != "" {
|
||||
s.SelfDeliverDelivering(order, "自配送中")
|
||||
s.swtich2SelfDeliverWithRetry(savedOrderInfo, bill, switch2SelfDeliverRetryCount, switch2SelfDeliverRetryGap)
|
||||
}
|
||||
order.Flag &= ^model.OrderFlagMaskFailedGetGoods
|
||||
err = partner.CurOrderManager.UpdateOrderStatusAndDeliveryFlag(order)
|
||||
}
|
||||
@@ -1028,7 +1029,7 @@ func (s *DefScheduler) swtich2SelfDeliverWithRetry(savedOrderInfo *WatchOrderInf
|
||||
order := savedOrderInfo.order
|
||||
globals.SugarLogger.Debugf("swtich2SelfDeliverWithRetry orderID:%s", order.VendorOrderID)
|
||||
if order.WaybillVendorID != order.VendorID {
|
||||
if err := s.Swtich2SelfDeliver(order, ""); err != nil && err != scheduler.ErrOrderStatusAlreadySatisfyCurOperation {
|
||||
if err := s.Swtich2SelfDeliver(order, ""); err != nil && (err != scheduler.ErrOrderStatusAlreadySatisfyCurOperation || err != scheduler.ErrOrderStatusAlreadySatisfyCurOperationELM || err != scheduler.ErrOrderStatusAlreadySatisfyCurOperationMTWM) {
|
||||
globals.SugarLogger.Infof("swtich2SelfDeliverWithRetry failed, bill:%v, err:%v", bill, err)
|
||||
if retryCount > 0 {
|
||||
utils.AfterFuncWithRecover(duration, func() {
|
||||
|
||||
@@ -16,7 +16,6 @@ const (
|
||||
TimerStatusTypeUnknown = -1
|
||||
TimerStatusTypeOrder = 0
|
||||
TimerStatusTypeWaybill = 1
|
||||
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -24,14 +23,15 @@ const (
|
||||
JXC4B_SHOP = 7 // 京西超市
|
||||
)
|
||||
|
||||
|
||||
var (
|
||||
CurrentScheduler IScheduler
|
||||
)
|
||||
|
||||
var (
|
||||
ErrOrderStatusIsNotSuitable4CurOperation = errors.New("订单锁定或状态不适合当前操作")
|
||||
ErrOrderStatusAlreadySatisfyCurOperation = errors.New("订单当前状态已满足当前操作")
|
||||
ErrOrderStatusIsNotSuitable4CurOperation = errors.New("订单锁定或状态不适合当前操作")
|
||||
ErrOrderStatusAlreadySatisfyCurOperation = errors.New("订单当前状态已满足当前操作")
|
||||
ErrOrderStatusAlreadySatisfyCurOperationELM = errors.New("无需切自配送")
|
||||
ErrOrderStatusAlreadySatisfyCurOperationMTWM = errors.New("非专送、快送、混合送订单不允许调用此接口 level:0, code:1047")
|
||||
|
||||
ErrCanNotCreateAtLeastOneWaybill = errors.New("一个运单都不能创建")
|
||||
ErrCanNotFindOrder = errors.New("不能找到订单(一般是由于事件错序)")
|
||||
|
||||
@@ -53,6 +53,21 @@ const (
|
||||
VendorIDQiNiuCloud = 323 // 七牛云
|
||||
VendorIDShowAPI = 325 // 万维易源
|
||||
|
||||
// 美团配送门店配送方式
|
||||
MTWMStorePSWay1 = "1003" //美团跑腿(众包)
|
||||
MTWMStorePSWay2 = "1001" //专送(加盟)
|
||||
MTWMStorePSWay3 = "1002" //专送(自建)
|
||||
MTWMStorePSWay4 = "1004" //城市代理
|
||||
MTWMStorePSWay5 = "2002" //快送
|
||||
MTWMStorePSWay6 = "2010" //全城送
|
||||
MTWMStorePSWay7 = "0000" //商家自配
|
||||
MTWMStorePSWay8 = "3001" //混合送(专送+快送)
|
||||
MTWMStorePSWay9 = "30011002" //混合自建
|
||||
MTWMStorePSWay10 = "30011001" //混合加盟
|
||||
MTWMStorePSWay11 = "30012002" //混合快送
|
||||
MTWMStorePSWay12 = "0002" //趣生活美食配送
|
||||
MTWMStorePSWay13 = "0016" //达达快递
|
||||
MTWMStorePSWay14 = "0033" //E_代送
|
||||
)
|
||||
|
||||
type VendorInfo struct {
|
||||
|
||||
Reference in New Issue
Block a user