修改自动发单时按照最低价位排序发单
This commit is contained in:
@@ -3,6 +3,7 @@ package defsch
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
@@ -950,45 +951,82 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
|
|||||||
_, err2 := s.CheckStoreBalance(jxcontext.AdminCtx, order, waybillVendorIDs)
|
_, err2 := s.CheckStoreBalance(jxcontext.AdminCtx, order, waybillVendorIDs)
|
||||||
// 检查是否有有效运单
|
// 检查是否有有效运单
|
||||||
if err == nil && err2 == nil {
|
if err == nil && err2 == nil {
|
||||||
// 1.检查门店三方配送配置,达达>蜂鸟>美团>顺丰>uu
|
// 获取所有平台运单费用
|
||||||
// excludeVendorIDs 包括上面已经发送的平台id
|
feeList, _ := s.QueryOrderWaybillFeeInfoEx(jxcontext.AdminCtx, order.VendorOrderID, order.VendorID)
|
||||||
storeCourierList, err := dao.GetStoreCourierList2(dao.GetDB(), []int{jxutils.GetSaleStoreIDFromOrder(order)}, nil, model.StoreStatusOpened, []int{model.StoreAuditStatusOnline, model.StoreAuditStatusUpdated})
|
if len(feeList) == model.NO {
|
||||||
excludeVendorIDsMap := make(map[int]int, 0) // 被排除的配送
|
return fmt.Errorf("自动发单异常,未获取到有效的配送门店")
|
||||||
|
}
|
||||||
|
// excludeVendorIDs 包括上面已经发送的平台id 被排除的配送
|
||||||
|
excludeVendorIDsMap := make(map[int]int, 0)
|
||||||
for _, v := range excludeVendorIDs {
|
for _, v := range excludeVendorIDs {
|
||||||
excludeVendorIDsMap[v] = model.YES
|
excludeVendorIDsMap[v] = model.YES
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 可以发运单的平台
|
||||||
|
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
|
vendorID := 0
|
||||||
for _, v := range storeCourierList {
|
switch canDeliveryVendor[canDeliveryKey[0]] {
|
||||||
if excludeVendorIDsMap[v.VendorID] == model.YES {
|
case model.VendorIDDada:
|
||||||
continue
|
|
||||||
}
|
|
||||||
if v.VendorID == model.VendorIDDada {
|
|
||||||
excludeVendorIDs = []int{model.VendorIDFengNiao, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS}
|
excludeVendorIDs = []int{model.VendorIDFengNiao, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS}
|
||||||
vendorID = v.VendorID
|
vendorID = model.VendorIDDada
|
||||||
break
|
case model.VendorIDMTPS:
|
||||||
}
|
|
||||||
if v.VendorID == model.VendorIDFengNiao {
|
|
||||||
excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS}
|
excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS}
|
||||||
vendorID = v.VendorID
|
vendorID = model.VendorIDMTPS
|
||||||
break
|
case model.VendorIDUUPT:
|
||||||
}
|
excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS}
|
||||||
if v.VendorID == model.VendorIDMTPS {
|
vendorID = model.VendorIDUUPT
|
||||||
excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDFengNiao, model.VendorIDUUPT, model.VendorIDSFPS}
|
case model.VendorIDSFPS:
|
||||||
vendorID = v.VendorID
|
excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS}
|
||||||
break
|
vendorID = model.VendorIDSFPS
|
||||||
}
|
case model.VendorIDFengNiao:
|
||||||
if v.VendorID == model.VendorIDUUPT {
|
excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS}
|
||||||
excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDFengNiao, model.VendorIDSFPS}
|
vendorID = model.VendorIDFengNiao
|
||||||
vendorID = v.VendorID
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if v.VendorID == model.VendorIDSFPS {
|
|
||||||
excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDFengNiao}
|
|
||||||
vendorID = v.VendorID
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
//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 vendorID != model.NO {
|
||||||
if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil {
|
if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil {
|
||||||
|
|||||||
@@ -500,11 +500,6 @@ const (
|
|||||||
B2BNumberId = 10
|
B2BNumberId = 10
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
WeChatQrCode = "weChat"
|
|
||||||
TiktokQrCode = "tiktok"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
const (
|
||||||
DefaultName = "石锋"
|
DefaultName = "石锋"
|
||||||
DefaultPhone = "18048531223"
|
DefaultPhone = "18048531223"
|
||||||
|
|||||||
Reference in New Issue
Block a user