- enable dada.
This commit is contained in:
@@ -27,7 +27,7 @@ type WaybillController struct {
|
||||
}
|
||||
|
||||
func init() {
|
||||
scheduler.CurrentScheduler.RegisterDeliveryPlatform(model.VendorIDDada, new(WaybillController), false)
|
||||
scheduler.CurrentScheduler.RegisterDeliveryPlatform(model.VendorIDDada, new(WaybillController), true)
|
||||
}
|
||||
|
||||
func (c *WaybillController) OnWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) {
|
||||
|
||||
@@ -12,7 +12,8 @@ const (
|
||||
VendorIDDeliveryBegin = 101
|
||||
VendorIDDada = 101
|
||||
VendorIDMTPS = 102
|
||||
VendorIDDeliveryEnd = 102
|
||||
VendorIDFengNiao = 103
|
||||
VendorIDDeliveryEnd = VendorIDFengNiao
|
||||
)
|
||||
|
||||
var (
|
||||
|
||||
@@ -1,11 +1,18 @@
|
||||
package model
|
||||
|
||||
type Jxstorefeature struct {
|
||||
Id int `orm:"column(storeid);pk"`
|
||||
Autopickup int8 `orm:"column(autopickup);null"`
|
||||
Transmtzs int8 `orm:"column(transmtzs);null"` // 定义为饿了么平台的订单是否支持三方配送
|
||||
Deliverycompetition int8 `orm:"column(deliverycompetition);null"` // 定义为京东到家 平台的订单是否支持三方配送
|
||||
ElmDeliveryType int8 `orm:"column(elm_delivery_type);default(0)"` // 饿了么店的配送方式
|
||||
Id int `orm:"column(storeid);pk"`
|
||||
Autopickup int8 `orm:"column(autopickup);null"`
|
||||
JdDeliveryType int8 `orm:"column(jd_delivery_type);default(0)"` // 京东店的配送方式
|
||||
ElmDeliveryType int8 `orm:"column(elm_delivery_type);default(0)"` // 饿了么店的配送方式
|
||||
JdCompetition int8 `orm:"default(1)"` // 京东门店是否支持3方配送
|
||||
ElmCompetition int8 `orm:"default(1)"` // 饿了么门店是否支持3方配送
|
||||
SupportMtps int8 `orm:"default(1)"` // 是否支持美团配送
|
||||
SupportDada int8 `orm:"default(1)"` // 是否支持达达
|
||||
SupportFengNiao int8 `orm:"default(1)"` // 是否支持蜂鸟
|
||||
|
||||
// Transmtzs int8 `orm:"column(transmtzs);null"` // 不用了
|
||||
// Deliverycompetition int8 `orm:"column(deliverycompetition);null"` // 不用了
|
||||
}
|
||||
|
||||
func (t *Jxstorefeature) TableName() string {
|
||||
|
||||
@@ -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++
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user