- 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() {
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) {

View File

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

View File

@@ -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 {

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++
}