diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index eb265e669..d02c92dcb 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -884,7 +884,7 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf if err = s.canOrderCreateWaybillNormally(order, savedOrderInfo); err == nil { if (order.DeliveryFlag & model.OrderDeliveryFlagMaskScheduleDisabled) == 0 { if savedOrderInfo.retryCount <= maxWaybillRetryCount { - var waybillVendorIDs = []int{model.VendorIDMTPS, model.VendorIDDada, model.VendorIDFengNiao, model.VendorIDUUPT} + var waybillVendorIDs = []int{model.VendorIDMTPS, model.VendorIDDada, model.VendorIDFengNiao, model.VendorIDUUPT, model.VendorIDSFPS} savedOrderInfo.isNeedCreate3rdWaybill = true excludeVendorIDs := savedOrderInfo.GetWaybillVendorIDs() //TODO 取消京西不自动发美团 2020-06-02 @@ -922,11 +922,7 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf //TODO 2020-07-21 发单时间要在门店的营业时间内 var storeDetail *dao.StoreDetail - //if savedOrderInfo.storeDetail != nil { - // storeDetail = savedOrderInfo.storeDetail - //} else { storeDetail, err = dao.GetStoreDetail(dao.GetDB(), jxutils.GetSaleStoreIDFromOrder(order), order.VendorID, "") - //} if storeDetail != nil { if storeDetail.OpenTime1 != 0 && storeDetail.CloseTime1 != 0 { time1 := jxutils.JxOperationTime2TimeByDate(storeDetail.OpenTime1, time.Now()) @@ -947,12 +943,41 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf //1表示为门店发单,需要验证门店账户余额情况 _, err2 := s.CheckStoreBalance(jxcontext.AdminCtx, order, waybillVendorIDs) - //TODO 2021-02-19 增加品牌配送开关 - //TODO 2021-08-31 修改为每个平台的开关 - //if storeDetail.BrandIsOpen == model.YES { - // err = fmt.Errorf("此品牌已关闭配送! [%v]", storeDetail.BrandName) - //} if err == nil && err2 == nil { + // 1.检查门店三方配送配置,达达>蜂鸟>美团>顺丰>uu + // excludeVendorIDs 包括上面已经发送的平台id + storeCourierList, err := dao.GetStoreCourierList2(dao.GetDB(), []int{jxutils.GetSaleStoreIDFromOrder(order)}, nil, model.StoreStatusOpened, []int{model.StoreAuditStatusOnline, model.StoreAuditStatusUpdated}) + excludeVendorIDsMap := make(map[int]int, 0) // 被排除的配送 + for _, v := range excludeVendorIDs { + excludeVendorIDsMap[v] = model.YES + } + + for _, v := range storeCourierList { + if excludeVendorIDsMap[v.VendorID] == model.YES { + continue + } + if v.VendorID == model.VendorIDDada { + excludeVendorIDs = []int{model.VendorIDFengNiao, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS} + break + } + if v.VendorID == model.VendorIDFengNiao { + excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS} + break + } + if v.VendorID == model.VendorIDMTPS { + excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDFengNiao, model.VendorIDUUPT, model.VendorIDSFPS} + break + } + if v.VendorID == model.VendorIDUUPT { + excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDFengNiao, model.VendorIDSFPS} + break + } + if v.VendorID == model.VendorIDSFPS { + excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDFengNiao} + break + } + } + if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil { savedOrderInfo.retryCount++ }