- write legacy jxoder almost ok.
This commit is contained in:
@@ -3,6 +3,9 @@ package defsch
|
||||
import (
|
||||
"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/legacy/models"
|
||||
"github.com/astaxie/beego/orm"
|
||||
)
|
||||
|
||||
type DefScheduler struct {
|
||||
@@ -20,15 +23,63 @@ func (s *DefScheduler) OnOrderNew(order *model.GoodsOrder) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *DefScheduler) OnOrderAccepted(order *model.GoodsOrder) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *DefScheduler) OnOrderStatusChanged(status *model.OrderStatus) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
// 以下是运单
|
||||
func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
|
||||
if bill.Status == model.WaybillStatusAccepted {
|
||||
s.CurOrderManager.UpdateWaybillVendorID(bill)
|
||||
} else if bill.Status == model.WaybillStatusAcceptCanceled {
|
||||
bill.WaybillVendorID = model.VendorIDUnknown
|
||||
s.CurOrderManager.UpdateWaybillVendorID(bill)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *DefScheduler) getPurchasePlatformFromVendorID(vendorID int) scheduler.PurchasePlatformHandler {
|
||||
return s.PurchasePlatformHandlers[vendorID]
|
||||
}
|
||||
|
||||
// c.handleAutoAcceptOrder(order.VendorOrderID, order.VendorID, order.ConsigneeMobile, order.StoreID, db, func(isAccept bool) {
|
||||
// // c.purchasePlatformHandlers[order.VendorID].AcceptOrRefuseOrder(order, isAccept)
|
||||
// if isAccept {
|
||||
// order.Status = model.OrderStatusAccepted
|
||||
// } else {
|
||||
// order.Status = model.OrderStatusFailed
|
||||
// }
|
||||
// })
|
||||
|
||||
func (s *DefScheduler) handleAutoAcceptOrder(orderID string, vendorID int, userMobile string, jxStoreID int, db orm.Ormer, handler func(accepted bool)) int {
|
||||
handleType := 0
|
||||
if userMobile != "" {
|
||||
if db == nil {
|
||||
db = orm.NewOrm()
|
||||
}
|
||||
user := &models.BlackClient{
|
||||
Mobile: userMobile,
|
||||
}
|
||||
if err := db.Read(user, "Mobile"); err != nil {
|
||||
if err != orm.ErrNoRows {
|
||||
globals.SugarLogger.Errorf("read data error:%v, data:%v, vendorID:%d", err, user, vendorID)
|
||||
}
|
||||
// 在访问数据库出错的情况下,也需要自动接单
|
||||
handleType = 1
|
||||
} else {
|
||||
// 强制拒单
|
||||
globals.SugarLogger.Infof("force reject order:%s, vendorID:%d", orderID, vendorID)
|
||||
handleType = -1
|
||||
}
|
||||
} else {
|
||||
globals.SugarLogger.Infof("order:%s, vendorID:%d, mobile is empty, should accept order", orderID, vendorID)
|
||||
handleType = 1
|
||||
}
|
||||
|
||||
if handleType == 1 {
|
||||
handler(true)
|
||||
} else if handleType == -1 {
|
||||
handler(false)
|
||||
}
|
||||
return handleType
|
||||
}
|
||||
|
||||
@@ -41,7 +41,8 @@ type DeliveryPlatformHandler interface {
|
||||
}
|
||||
|
||||
type OrderManager interface {
|
||||
MasterWaybillStatusChanged(*model.Waybill) (err error)
|
||||
OnOrderStatusChanged(status *model.OrderStatus) (err error) // 此消息是否使用还不确定
|
||||
UpdateWaybillVendorID(bill *model.Waybill) (err error)
|
||||
}
|
||||
|
||||
type Scheduler interface {
|
||||
@@ -51,7 +52,6 @@ type Scheduler interface {
|
||||
|
||||
// 以下是订单
|
||||
OnOrderNew(order *model.GoodsOrder) (err error)
|
||||
OnOrderAccepted(order *model.GoodsOrder) (err error)
|
||||
OnOrderStatusChanged(status *model.OrderStatus) (err error)
|
||||
|
||||
// 以下是运单
|
||||
@@ -59,36 +59,36 @@ type Scheduler interface {
|
||||
}
|
||||
|
||||
type BaseScheduler struct {
|
||||
orderManager OrderManager
|
||||
purchasePlatformHandlers map[int]PurchasePlatformHandler
|
||||
deliveryPlatformHandlers map[int]DeliveryPlatformHandler
|
||||
CurOrderManager OrderManager
|
||||
PurchasePlatformHandlers map[int]PurchasePlatformHandler
|
||||
DeliveryPlatformHandlers map[int]DeliveryPlatformHandler
|
||||
}
|
||||
|
||||
func (c *BaseScheduler) Init() {
|
||||
c.purchasePlatformHandlers = make(map[int]PurchasePlatformHandler)
|
||||
c.deliveryPlatformHandlers = make(map[int]DeliveryPlatformHandler)
|
||||
c.PurchasePlatformHandlers = make(map[int]PurchasePlatformHandler)
|
||||
c.DeliveryPlatformHandlers = make(map[int]DeliveryPlatformHandler)
|
||||
}
|
||||
|
||||
func (c *BaseScheduler) RegisterOrderManager(handler OrderManager) {
|
||||
c.orderManager = handler
|
||||
c.CurOrderManager = handler
|
||||
}
|
||||
|
||||
func (c *BaseScheduler) RegisterPurchasePlatform(vendorID int, handler PurchasePlatformHandler) {
|
||||
if !(vendorID >= model.VendorIDPurchaseBegin && vendorID <= model.VendorIDPurchaseEnd) {
|
||||
panic(fmt.Sprintf("purchase vendor:%d is illegal", vendorID))
|
||||
}
|
||||
if _, ok := c.purchasePlatformHandlers[vendorID]; ok {
|
||||
if _, ok := c.PurchasePlatformHandlers[vendorID]; ok {
|
||||
panic(fmt.Sprintf("purchase vendor:%d, already exists", vendorID))
|
||||
}
|
||||
c.purchasePlatformHandlers[vendorID] = handler
|
||||
c.PurchasePlatformHandlers[vendorID] = handler
|
||||
}
|
||||
|
||||
func (c *BaseScheduler) RegisterDeliveryPlatform(vendorID int, handler DeliveryPlatformHandler) {
|
||||
if !(vendorID >= model.VendorIDDeliveryBegin && vendorID <= model.VendorIDDeliveryEnd) {
|
||||
panic(fmt.Sprintf("delivery vendor:%d is illegal", vendorID))
|
||||
}
|
||||
if _, ok := c.deliveryPlatformHandlers[vendorID]; ok {
|
||||
if _, ok := c.DeliveryPlatformHandlers[vendorID]; ok {
|
||||
panic(fmt.Sprintf("delivery vendor:%d, already exists", vendorID))
|
||||
}
|
||||
c.deliveryPlatformHandlers[vendorID] = handler
|
||||
c.DeliveryPlatformHandlers[vendorID] = handler
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user