- jxstorefeature support added.
This commit is contained in:
@@ -9,7 +9,6 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/controller"
|
"git.rosy.net.cn/jx-callback/business/controller"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/scheduler"
|
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
"github.com/astaxie/beego/orm"
|
"github.com/astaxie/beego/orm"
|
||||||
@@ -23,7 +22,7 @@ type WaybillController struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
scheduler.CurrentScheduler.RegisterDeliveryPlatform(model.VendorIDDada, new(WaybillController))
|
//scheduler.CurrentScheduler.RegisterDeliveryPlatform(model.VendorIDDada, new(WaybillController))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *WaybillController) OnWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) {
|
func (c *WaybillController) OnWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) {
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import (
|
|||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/controller"
|
"git.rosy.net.cn/jx-callback/business/controller"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/legacyorder"
|
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/scheduler"
|
"git.rosy.net.cn/jx-callback/business/scheduler"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
@@ -198,16 +197,10 @@ func (c *WaybillController) CancelWaybill(bill *model.Waybill) (err error) {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo 生成mtps deliveryid,为了兼容,现在取jxorder中的id
|
|
||||||
func (c *WaybillController) getDeliveryID(order *model.GoodsOrder, db orm.Ormer) (retVal int64, err error) {
|
func (c *WaybillController) getDeliveryID(order *model.GoodsOrder, db orm.Ormer) (retVal int64, err error) {
|
||||||
jxorder := &legacyorder.Jxorder2{
|
// jxorder表当前已经有50多万条记录了,加100万避免冲突
|
||||||
OrderId: utils.Str2Int64(order.VendorOrderID),
|
// 508505
|
||||||
}
|
return order.ID + 1000000, nil
|
||||||
err = utils.CallFuncLogError(func() error {
|
|
||||||
err2 := db.Read(jxorder, "OrderId")
|
|
||||||
return err2
|
|
||||||
}, "getDeliveryID, orderID:%s", order.VendorOrderID)
|
|
||||||
return int64(jxorder.Id), err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *WaybillController) getMTPSShopID(order *model.GoodsOrder, db orm.Ormer) (retVal string, err error) {
|
func (c *WaybillController) getMTPSShopID(order *model.GoodsOrder, db orm.Ormer) (retVal string, err error) {
|
||||||
|
|||||||
12
business/model/jxstorefeature.go
Normal file
12
business/model/jxstorefeature.go
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
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"` // 定义为京东到家 平台的订单是否支持三方配送
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *Jxstorefeature) TableName() string {
|
||||||
|
return "jxstorefeature"
|
||||||
|
}
|
||||||
@@ -25,7 +25,6 @@ const (
|
|||||||
|
|
||||||
type WatchOrderInfo struct {
|
type WatchOrderInfo struct {
|
||||||
order *model.GoodsOrder // order里的信息是保持更新的
|
order *model.GoodsOrder // order里的信息是保持更新的
|
||||||
dirty int // 因为京东事件序列New与Accepted有极少数情况下会错序,处理延迟加载
|
|
||||||
waybills []*model.Waybill // 这个waybills里的状态信息是不真实的,只使用id相关的信息
|
waybills []*model.Waybill // 这个waybills里的状态信息是不真实的,只使用id相关的信息
|
||||||
timerStatus int
|
timerStatus int
|
||||||
timer *time.Timer
|
timer *time.Timer
|
||||||
@@ -211,6 +210,7 @@ func (s *DefScheduler) removeWaybillFromMap(savedOrderInfo *WatchOrderInfo, bill
|
|||||||
|
|
||||||
func (s *DefScheduler) createWaybillOn3rdProviders(order *model.GoodsOrder, excludeBill *model.Waybill) (err error) {
|
func (s *DefScheduler) createWaybillOn3rdProviders(order *model.GoodsOrder, excludeBill *model.Waybill) (err error) {
|
||||||
globals.SugarLogger.Debugf("createWaybillOn3rdProviders, orderID:%s, excludeBill:%v", order.VendorOrderID, excludeBill)
|
globals.SugarLogger.Debugf("createWaybillOn3rdProviders, orderID:%s, excludeBill:%v", order.VendorOrderID, excludeBill)
|
||||||
|
if s.isOrderSupport3rdDelivery(order) {
|
||||||
successCount := 0
|
successCount := 0
|
||||||
for vendorID := range s.DeliveryPlatformHandlers {
|
for vendorID := range s.DeliveryPlatformHandlers {
|
||||||
if excludeBill == nil || vendorID != excludeBill.WaybillVendorID {
|
if excludeBill == nil || vendorID != excludeBill.WaybillVendorID {
|
||||||
@@ -225,6 +225,9 @@ func (s *DefScheduler) createWaybillOn3rdProviders(order *model.GoodsOrder, excl
|
|||||||
globals.SugarLogger.Warnf("createWaybillOn3rdProviders, orderID:%s all failed", order.VendorOrderID)
|
globals.SugarLogger.Warnf("createWaybillOn3rdProviders, orderID:%s all failed", order.VendorOrderID)
|
||||||
return scheduler.ErrCanNotCreateAtLeastOneWaybill
|
return scheduler.ErrCanNotCreateAtLeastOneWaybill
|
||||||
}
|
}
|
||||||
|
globals.SugarLogger.Debugf("createWaybillOn3rdProviders, orderID:%s, store:%d dont't support 3rd delivery platform", order.VendorOrderID, jxutils.GetJxStoreIDFromOrder(order))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s *DefScheduler) cancelOtherWaybills(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
|
func (s *DefScheduler) cancelOtherWaybills(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
|
||||||
globals.SugarLogger.Debugf("cancelOtherWaybills, orderID:%s, bill:%v", savedOrderInfo.order.VendorOrderID, bill)
|
globals.SugarLogger.Debugf("cancelOtherWaybills, orderID:%s, bill:%v", savedOrderInfo.order.VendorOrderID, bill)
|
||||||
@@ -264,13 +267,12 @@ func (s *DefScheduler) loadSavedOrderFromMap(status *model.OrderStatus) *WatchOr
|
|||||||
if savedInfo, ok := s.orderMap.Load(universalOrderID); ok {
|
if savedInfo, ok := s.orderMap.Load(universalOrderID); ok {
|
||||||
realSavedInfo = savedInfo.(*WatchOrderInfo)
|
realSavedInfo = savedInfo.(*WatchOrderInfo)
|
||||||
}
|
}
|
||||||
if realSavedInfo == nil || realSavedInfo.dirty == 1 {
|
if realSavedInfo == nil || !model.IsOrderSolid(realSavedInfo.order) {
|
||||||
if realSavedInfo == nil {
|
if realSavedInfo == nil {
|
||||||
realSavedInfo = new(WatchOrderInfo)
|
realSavedInfo = new(WatchOrderInfo)
|
||||||
s.orderMap.Store(universalOrderID, realSavedInfo)
|
s.orderMap.Store(universalOrderID, realSavedInfo)
|
||||||
} else {
|
} else {
|
||||||
realSavedInfo.dirty = 0
|
globals.SugarLogger.Infof("loadSavedOrderFromMap order is incomplete, orderID:%s, load it", status.RefVendorOrderID)
|
||||||
globals.SugarLogger.Infof("loadSavedOrderFromMap order is dirty, orderID:%s, load it", status.RefVendorOrderID)
|
|
||||||
}
|
}
|
||||||
if order, err := s.CurOrderManager.LoadOrder(status.RefVendorOrderID, status.RefVendorID); err == nil {
|
if order, err := s.CurOrderManager.LoadOrder(status.RefVendorOrderID, status.RefVendorID); err == nil {
|
||||||
realSavedInfo.order = order
|
realSavedInfo.order = order
|
||||||
@@ -283,7 +285,6 @@ func (s *DefScheduler) loadSavedOrderFromMap(status *model.OrderStatus) *WatchOr
|
|||||||
OrderCreatedAt: status.StatusTime,
|
OrderCreatedAt: status.StatusTime,
|
||||||
WaybillVendorID: model.VendorIDUnknown,
|
WaybillVendorID: model.VendorIDUnknown,
|
||||||
}
|
}
|
||||||
realSavedInfo.dirty = 1
|
|
||||||
globals.SugarLogger.Infof("loadSavedOrderFromMap can not load order orderID:%s", status.VendorOrderID)
|
globals.SugarLogger.Infof("loadSavedOrderFromMap can not load order orderID:%s", status.VendorOrderID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -351,7 +352,6 @@ func (s *DefScheduler) handleAutoAcceptOrder(orderID string, vendorID int, userM
|
|||||||
globals.SugarLogger.Infof("order:%s, vendorID:%d, mobile is empty, should accept order", orderID, vendorID)
|
globals.SugarLogger.Infof("order:%s, vendorID:%d, mobile is empty, should accept order", orderID, vendorID)
|
||||||
handleType = 1
|
handleType = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
if handleType == 1 {
|
if handleType == 1 {
|
||||||
handler(true)
|
handler(true)
|
||||||
} else if handleType == -1 {
|
} else if handleType == -1 {
|
||||||
@@ -387,3 +387,21 @@ func (s *DefScheduler) updateOrderByStatus(order *model.GoodsOrder, status *mode
|
|||||||
order.StatusTime = status.StatusTime
|
order.StatusTime = status.StatusTime
|
||||||
return order
|
return order
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *DefScheduler) isOrderSupport3rdDelivery(order *model.GoodsOrder) (retVal bool) {
|
||||||
|
storefeature := &model.Jxstorefeature{
|
||||||
|
Id: jxutils.GetJxStoreIDFromOrder(order),
|
||||||
|
}
|
||||||
|
db := orm.NewOrm()
|
||||||
|
utils.CallFuncLogError(func() error {
|
||||||
|
err := db.Read(storefeature, "Id")
|
||||||
|
if err == nil {
|
||||||
|
if (order.VendorID == model.VendorIDJD && storefeature.Deliverycompetition == 1) ||
|
||||||
|
(order.VendorID == model.VendorIDELM && storefeature.Transmtzs == 1) {
|
||||||
|
retVal = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}, "isOrderSupport3rdDelivery")
|
||||||
|
return retVal
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user