- empty scheduler added.
This commit is contained in:
34
business/scheduler/defsch/defsch.go
Normal file
34
business/scheduler/defsch/defsch.go
Normal 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
|
||||
}
|
||||
85
business/scheduler/scheduler.go
Normal file
85
business/scheduler/scheduler.go
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user