- empty scheduler added.

This commit is contained in:
gazebo
2018-07-12 20:53:22 +08:00
parent 1c6ba2e43a
commit 52248ca427
13 changed files with 338 additions and 238 deletions

View File

@@ -0,0 +1,34 @@
package defsch
import (
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/scheduler"
)
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) 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) {
return nil
}

View File

@@ -0,0 +1,85 @@
package scheduler
import (
"fmt"
"time"
"git.rosy.net.cn/jx-callback/business/model"
)
var (
CurrentScheduler Scheduler
)
type AutoStatusChangeConfig struct {
NextStatus int
Timeout time.Duration
}
type StatusConfig struct {
AutoStatusChange map[int][]*AutoStatusChangeConfig
}
type PurchasePlatformHandler interface {
AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool) (err error)
ForcePickUp(order *model.GoodsOrder) (err error)
SwtichSelfDeliver(order *model.GoodsOrder) (err error)
}
type DeliveryPlatformHandler interface {
CreateWaybill(bill *model.Waybill) (err error)
CancelWaybill(bill *model.Waybill) (err error)
}
type OrderManager interface {
MasterWaybillStatusChanged(*model.Waybill) (err error)
}
type Scheduler interface {
RegisterOrderManager(handler OrderManager)
RegisterPurchasePlatform(vendorID int, handler PurchasePlatformHandler)
RegisterDeliveryPlatform(vendorID int, handler DeliveryPlatformHandler)
// 以下是定单
OnOrderNew(order *model.GoodsOrder) (err error)
OnOrderAccepted(order *model.GoodsOrder) (err error)
OnOrderStatusChanged(status *model.OrderStatus) (err error)
// 以下是运单
OnWaybillStatusChanged(bill *model.Waybill) (err error)
}
type BaseScheduler struct {
orderManager 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)
}
func (c *BaseScheduler) RegisterOrderManager(handler OrderManager) {
c.orderManager = 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 {
panic(fmt.Sprintf("purchase vendor:%d, already exists", vendorID))
}
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 {
panic(fmt.Sprintf("delivery vendor:%d, already exists", vendorID))
}
c.deliveryPlatformHandlers[vendorID] = handler
}