- enable dada.

This commit is contained in:
gazebo
2018-08-03 11:38:57 +08:00
parent 1e4bbc3dd6
commit edd934233f
4 changed files with 47 additions and 24 deletions

View File

@@ -33,10 +33,10 @@ const (
)
type WatchOrderInfo struct {
isNeedAutoPickup bool
storeDeliveryType int
isNeed3rdDelivery bool
isNeedAutoPickup bool
storeDeliveryType int
isNeed3rdDelivery bool
supported3rdCarriers []int
isSwitched2SelfDelivery bool
order *model.GoodsOrder // order里的信息是保持更新的
waybills map[int]*model.Waybill // 这个waybills里的状态信息是不真实的只使用id相关的信息
@@ -64,10 +64,11 @@ type DefScheduler struct {
func NewWatchOrderInfo(order *model.GoodsOrder) (retVal *WatchOrderInfo) {
retVal = &WatchOrderInfo{
isNeedAutoPickup: true,
isNeed3rdDelivery: false,
storeDeliveryType: scheduler.StoreDeliveryTypeCrowdSourcing,
waybills: map[int]*model.Waybill{},
isNeedAutoPickup: true,
isNeed3rdDelivery: false,
storeDeliveryType: scheduler.StoreDeliveryTypeCrowdSourcing,
waybills: map[int]*model.Waybill{},
supported3rdCarriers: []int{},
}
retVal.SetOrder(order)
return retVal
@@ -96,15 +97,29 @@ func (s *WatchOrderInfo) updateOrderStoreFeature(order *model.GoodsOrder) (err e
s.isNeedAutoPickup = (storefeature.Autopickup != 0)
if order.VendorID == model.VendorIDELM {
s.storeDeliveryType = int(storefeature.ElmDeliveryType)
} else if order.VendorID == model.VendorIDJD {
s.storeDeliveryType = int(storefeature.JdDeliveryType)
}
if s.storeDeliveryType != scheduler.StoreDeliveryTypeByStore {
if (order.VendorID == model.VendorIDJD && storefeature.Deliverycompetition != 0) ||
(order.VendorID == model.VendorIDELM && storefeature.Transmtzs != 0) {
s.isNeed3rdDelivery = true
}
} else {
if (s.storeDeliveryType == scheduler.StoreDeliveryTypeByStore) ||
(order.VendorID == model.VendorIDJD && storefeature.JdCompetition != 0) ||
(order.VendorID == model.VendorIDELM && storefeature.ElmCompetition != 0) {
s.isNeed3rdDelivery = true
}
if s.isNeed3rdDelivery {
if storefeature.SupportMtps != 0 {
s.supported3rdCarriers = append(s.supported3rdCarriers, model.VendorIDMTPS)
}
if storefeature.SupportDada != 0 {
s.supported3rdCarriers = append(s.supported3rdCarriers, model.VendorIDDada)
}
if storefeature.SupportFengNiao != 0 {
s.supported3rdCarriers = append(s.supported3rdCarriers, model.VendorIDFengNiao)
}
if len(s.supported3rdCarriers) == 0 {
s.isNeed3rdDelivery = false
globals.SugarLogger.Infof("updateOrderStoreFeature orderID:%s no at least one carrier supported", order.VendorOrderID)
}
}
}
return err
}, "updateOrderStoreFeature")
@@ -353,12 +368,12 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
order := savedOrderInfo.order
globals.SugarLogger.Debugf("createWaybillOn3rdProviders, orderID:%s, status:%d, excludeBill:%v", order.VendorOrderID, order.Status, excludeBill)
if order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin { // 订单在配送中被取消时就是配送中状态
if savedOrderInfo.isNeed3rdDelivery || savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore {
if savedOrderInfo.isNeed3rdDelivery {
savedOrderInfo.retryCount++
if savedOrderInfo.retryCount <= maxWaybillRetryCount {
successCount := 0
for vendorID := range s.DeliveryPlatformHandlers {
if savedOrderInfo.waybills[vendorID] == nil && (excludeBill == nil || vendorID != excludeBill.WaybillVendorID) && s.DeliveryPlatformHandlers[vendorID].Use4CreateWaybill {
for _, vendorID := range savedOrderInfo.supported3rdCarriers {
if s.DeliveryPlatformHandlers[vendorID] != nil && s.DeliveryPlatformHandlers[vendorID].Use4CreateWaybill && savedOrderInfo.waybills[vendorID] == nil && (excludeBill == nil || vendorID != excludeBill.WaybillVendorID) {
if err = s.CreateWaybill(vendorID, order); err == nil {
successCount++
}