86 lines
2.4 KiB
Go
86 lines
2.4 KiB
Go
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 {
|
|
scheduler.BaseScheduler
|
|
}
|
|
|
|
func init() {
|
|
sch := &DefScheduler{}
|
|
sch.Init()
|
|
scheduler.CurrentScheduler = sch
|
|
}
|
|
|
|
// 以下是订单
|
|
func (s *DefScheduler) OnOrderNew(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
|
|
}
|