修改自动发单时按照最低价位排序发单

This commit is contained in:
邹宗楠
2024-02-23 16:02:00 +08:00
parent be1ddac2a7
commit ab8e3214de
2 changed files with 71 additions and 38 deletions

View File

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

View File

@@ -500,11 +500,6 @@ const (
B2BNumberId = 10
)
const (
WeChatQrCode = "weChat"
TiktokQrCode = "tiktok"
)
const (
DefaultName = "石锋"
DefaultPhone = "18048531223"