修改发单bug

This commit is contained in:
邹宗楠
2022-06-16 13:53:20 +08:00
parent 8bd2f8b7a2
commit 1a669d4b97
3 changed files with 34 additions and 18 deletions

View File

@@ -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() {

View File

@@ -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("不能找到订单(一般是由于事件错序)")

View File

@@ -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 {