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 }