diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 7cbbe2c28..947214d09 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -3,6 +3,7 @@ package defsch import ( "fmt" "math/rand" + "sort" "strings" "sync" "time" @@ -950,45 +951,82 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf _, err2 := s.CheckStoreBalance(jxcontext.AdminCtx, order, waybillVendorIDs) // 检查是否有有效运单 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) // 被排除的配送 + // 获取所有平台运单费用 + feeList, _ := s.QueryOrderWaybillFeeInfoEx(jxcontext.AdminCtx, order.VendorOrderID, order.VendorID) + if len(feeList) == model.NO { + return fmt.Errorf("自动发单异常,未获取到有效的配送门店") + } + // excludeVendorIDs 包括上面已经发送的平台id 被排除的配送 + excludeVendorIDsMap := make(map[int]int, 0) for _, v := range excludeVendorIDs { excludeVendorIDsMap[v] = model.YES } - vendorID := 0 - 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} - vendorID = v.VendorID - break - } - if v.VendorID == model.VendorIDFengNiao { - excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS} - vendorID = v.VendorID - break - } - if v.VendorID == model.VendorIDMTPS { - excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDFengNiao, model.VendorIDUUPT, model.VendorIDSFPS} - vendorID = v.VendorID - break - } - if v.VendorID == model.VendorIDUUPT { - excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDFengNiao, model.VendorIDSFPS} - vendorID = v.VendorID - break - } - if v.VendorID == model.VendorIDSFPS { - excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDFengNiao} - vendorID = v.VendorID - break + // 可以发运单的平台 + canDeliveryVendor := make(map[int64]int, 0) + canDeliveryKey := make([]int64, 0, 0) + for k, v := range feeList { + if excludeVendorIDsMap[k] != model.YES && v.DeliveryFee != model.NO { + canDeliveryVendor[v.DeliveryFee] = k + canDeliveryKey = append(canDeliveryKey, v.DeliveryFee) } } + if len(canDeliveryKey) == model.NO { + return fmt.Errorf("无可配送平台") + } + sort.Slice(canDeliveryKey, func(i, j int) bool { + return canDeliveryKey[i] <= canDeliveryKey[j] + }) + + vendorID := 0 + switch canDeliveryVendor[canDeliveryKey[0]] { + case model.VendorIDDada: + excludeVendorIDs = []int{model.VendorIDFengNiao, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS} + vendorID = model.VendorIDDada + case model.VendorIDMTPS: + excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS} + vendorID = model.VendorIDMTPS + case model.VendorIDUUPT: + excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS} + vendorID = model.VendorIDUUPT + case model.VendorIDSFPS: + excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS} + vendorID = model.VendorIDSFPS + case model.VendorIDFengNiao: + excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS} + vendorID = model.VendorIDFengNiao + } + //storeCourierList, err := dao.GetStoreCourierList2(dao.GetDB(), []int{jxutils.GetSaleStoreIDFromOrder(order)}, nil, model.StoreStatusOpened, []int{model.StoreAuditStatusOnline, model.StoreAuditStatusUpdated}) + //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} + // vendorID = v.VendorID + // break + // } + // if v.VendorID == model.VendorIDFengNiao { + // excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS} + // vendorID = v.VendorID + // break + // } + // if v.VendorID == model.VendorIDMTPS { + // excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDFengNiao, model.VendorIDUUPT, model.VendorIDSFPS} + // vendorID = v.VendorID + // break + // } + // if v.VendorID == model.VendorIDUUPT { + // excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDFengNiao, model.VendorIDSFPS} + // vendorID = v.VendorID + // break + // } + // if v.VendorID == model.VendorIDSFPS { + // excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDFengNiao} + // vendorID = v.VendorID + // break + // } + //} if vendorID != model.NO { if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil { diff --git a/business/model/const.go b/business/model/const.go index e5d7f397e..73b366fc1 100644 --- a/business/model/const.go +++ b/business/model/const.go @@ -500,11 +500,6 @@ const ( B2BNumberId = 10 ) -const ( - WeChatQrCode = "weChat" - TiktokQrCode = "tiktok" -) - const ( DefaultName = "石锋" DefaultPhone = "18048531223"