修改自动发单时按照最低价位排序发单
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -500,11 +500,6 @@ const (
|
||||
B2BNumberId = 10
|
||||
)
|
||||
|
||||
const (
|
||||
WeChatQrCode = "weChat"
|
||||
TiktokQrCode = "tiktok"
|
||||
)
|
||||
|
||||
const (
|
||||
DefaultName = "石锋"
|
||||
DefaultPhone = "18048531223"
|
||||
|
||||
Reference in New Issue
Block a user