- 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

@@ -27,7 +27,7 @@ type WaybillController struct {
} }
func init() { 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) { func (c *WaybillController) OnWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) {

View File

@@ -12,7 +12,8 @@ const (
VendorIDDeliveryBegin = 101 VendorIDDeliveryBegin = 101
VendorIDDada = 101 VendorIDDada = 101
VendorIDMTPS = 102 VendorIDMTPS = 102
VendorIDDeliveryEnd = 102 VendorIDFengNiao = 103
VendorIDDeliveryEnd = VendorIDFengNiao
) )
var ( var (

View File

@@ -1,11 +1,18 @@
package model package model
type Jxstorefeature struct { type Jxstorefeature struct {
Id int `orm:"column(storeid);pk"` Id int `orm:"column(storeid);pk"`
Autopickup int8 `orm:"column(autopickup);null"` Autopickup int8 `orm:"column(autopickup);null"`
Transmtzs int8 `orm:"column(transmtzs);null"` // 定义为饿了么平台的订单是否支持三方配送 JdDeliveryType int8 `orm:"column(jd_delivery_type);default(0)"` // 京东店的配送方式
Deliverycompetition int8 `orm:"column(deliverycompetition);null"` // 定义为京东到家 平台的订单是否支持三方配送 ElmDeliveryType int8 `orm:"column(elm_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 { func (t *Jxstorefeature) TableName() string {

View File

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