- enable dada.
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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 (
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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++
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user