- 重构createWaybillOn3rdProviders

This commit is contained in:
gazebo
2019-03-30 17:11:23 +08:00
parent 10a444c895
commit 96fb2d9535
11 changed files with 127 additions and 100 deletions

View File

@@ -60,6 +60,37 @@ func (s *DefScheduler) SelfDeliveringAndUpdateStatus(ctx *jxcontext.Context, ven
return err
}
func (s *DefScheduler) CreateWaybillOnProvider4SavedOrder(ctx *jxcontext.Context, savedOrderInfo *WatchOrderInfo, forceCreate bool) (bills []*model.Waybill, err error) {
order := savedOrderInfo.order
if forceCreate || (order.LockStatus != model.OrderStatusLocked && order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) {
if forceCreate || !s.IsOrderHasWaybill(order) {
feeHandler := delivery.DefCreateWaybillPolicy
if forceCreate {
feeHandler = delivery.NullCreateWaybillPolicy
}
if bills, err = s.CreateWaybillOnProviders(ctx, order, feeHandler); err == nil {
if forceCreate {
order.DeliveryFlag |= model.OrderDeliveryFlagMaskScheduleDisabled
err = partner.CurOrderManager.UpdateOrderStatusAndFlag(order)
}
if err == nil {
if forceCreate {
s.stopTimer(savedOrderInfo)
}
globals.SugarLogger.Debugf("CreateWaybillOnProvider4SavedOrder orderID:%s userName:%s successfully", order.VendorOrderID, ctx.GetUserName())
return bills, err
}
}
} else {
err = fmt.Errorf("当前订单%s已经有了有效的承运人%s了", order.VendorOrderID, jxutils.GetVendorName(order.WaybillVendorID))
}
} else {
globals.SugarLogger.Debugf("CreateWaybillOnProvider4SavedOrder orderID:%s orderDetails:%s", order.VendorOrderID, utils.Format4Output(order, true))
err = fmt.Errorf("必须是处于拣货完成且没有结束没有锁定的订单才能进行召唤配送操作")
}
return nil, err
}
func (s *DefScheduler) CreateWaybillOnProvidersEx(ctx *jxcontext.Context, vendorOrderID string, vendorID int, forceCreate bool) (bills []*model.Waybill, err error) {
jxutils.CallMsgHandler(func() {
bills, err = func() (bills []*model.Waybill, err error) {
@@ -74,31 +105,7 @@ func (s *DefScheduler) CreateWaybillOnProvidersEx(ctx *jxcontext.Context, vendor
}
savedOrderInfo := s.loadSavedOrderFromMap(status, true)
if savedOrderInfo != nil {
order := savedOrderInfo.order
if forceCreate || (order.LockStatus != model.OrderStatusLocked && order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) {
if forceCreate || !s.IsOrderHasWaybill(order) {
feeHandler := delivery.DefCreateWaybillPolicy
if forceCreate {
feeHandler = nil
}
if bills, err = s.CreateWaybillOnProviders(order, userName, partner.UseableDeliveryVendorIDs, feeHandler); err == nil {
if forceCreate {
order.DeliveryFlag |= model.OrderDeliveryFlagMaskScheduleDisabled
err = partner.CurOrderManager.UpdateOrderStatusAndFlag(order)
}
if err == nil {
s.stopTimer(savedOrderInfo)
globals.SugarLogger.Debugf("CreateWaybillOnProvidersEx orderID:%s userName:%s successfully", vendorOrderID, userName)
return bills, err
}
}
} else {
err = fmt.Errorf("当前订单%s已经有了有效的承运人了", order.VendorOrderID)
}
} else {
globals.SugarLogger.Debugf("CreateWaybillOnProvidersEx orderID:%s orderDetails:%s", vendorOrderID, utils.Format4Output(order, true))
err = fmt.Errorf("必须是处于拣货完成但没有结束的订单才能进行召唤配送操作")
}
bills, err = s.CreateWaybillOnProvider4SavedOrder(ctx, savedOrderInfo, forceCreate)
} else {
err = scheduler.ErrCanNotFindOrder
}