- refactor basesch, move register partner to partner.
This commit is contained in:
@@ -5,11 +5,11 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/basesch"
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/excel"
|
"git.rosy.net.cn/jx-callback/business/jxutils/excel"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"github.com/astaxie/beego/orm"
|
"github.com/astaxie/beego/orm"
|
||||||
)
|
)
|
||||||
@@ -163,7 +163,7 @@ func (c *OrderManager) GetOrderInfo(vendorOrderID string, vendorID int, isRefres
|
|||||||
if err == nil && num > 0 {
|
if err == nil && num > 0 {
|
||||||
order = orders[0]
|
order = orders[0]
|
||||||
if isRefresh && vendorID == model.VendorIDJD {
|
if isRefresh && vendorID == model.VendorIDJD {
|
||||||
tmpOrder, err2 := basesch.FixedBaseScheduler.GetPurchasePlatformFromVendorID(vendorID).GetOrder(vendorOrderID)
|
tmpOrder, err2 := partner.GetPurchasePlatformFromVendorID(vendorID).GetOrder(vendorOrderID)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
order.CurrentConsigneeMobile = tmpOrder.ConsigneeMobile
|
order.CurrentConsigneeMobile = tmpOrder.ConsigneeMobile
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package basesch
|
package basesch
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
|
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
@@ -15,47 +13,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type BaseScheduler struct {
|
type BaseScheduler struct {
|
||||||
PurchasePlatformHandlers map[int]partner.IPurchasePlatformHandler
|
IsReallyCallPlatformAPI bool
|
||||||
DeliveryPlatformHandlers map[int]*scheduler.DeliveryPlatformHandlerInfo
|
|
||||||
IsReallyCallPlatformAPI bool
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *BaseScheduler) Init() {
|
|
||||||
c.PurchasePlatformHandlers = make(map[int]partner.IPurchasePlatformHandler)
|
|
||||||
c.DeliveryPlatformHandlers = make(map[int]*scheduler.DeliveryPlatformHandlerInfo)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *BaseScheduler) RegisterPurchasePlatform(handler partner.IPurchasePlatformHandler) {
|
|
||||||
vendorID := handler.GetVendorID()
|
|
||||||
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(handler partner.IDeliveryPlatformHandler, isUse4CreateWaybill bool) {
|
|
||||||
vendorID := handler.GetVendorID()
|
|
||||||
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] = &scheduler.DeliveryPlatformHandlerInfo{
|
|
||||||
Handler: handler,
|
|
||||||
Use4CreateWaybill: isUse4CreateWaybill,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *BaseScheduler) GetPurchasePlatformFromVendorID(vendorID int) partner.IPurchasePlatformHandler {
|
|
||||||
return c.PurchasePlatformHandlers[vendorID]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *BaseScheduler) GetDeliveryPlatformFromVendorID(vendorID int) *scheduler.DeliveryPlatformHandlerInfo {
|
|
||||||
return c.DeliveryPlatformHandlers[vendorID]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *BaseScheduler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) {
|
func (c *BaseScheduler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) {
|
||||||
@@ -63,7 +21,7 @@ func (c *BaseScheduler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt
|
|||||||
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusNew {
|
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusNew {
|
||||||
if c.IsReallyCallPlatformAPI {
|
if c.IsReallyCallPlatformAPI {
|
||||||
err = utils.CallFuncLogErrorWithInfo(func() error {
|
err = utils.CallFuncLogErrorWithInfo(func() error {
|
||||||
return c.GetPurchasePlatformFromVendorID(order.VendorID).AcceptOrRefuseOrder(order, isAcceptIt, userName)
|
return partner.GetPurchasePlatformFromVendorID(order.VendorID).AcceptOrRefuseOrder(order, isAcceptIt, userName)
|
||||||
}, "AcceptOrRefuseOrder orderID:%s, isAcceptIt:%t", order.VendorOrderID, isAcceptIt)
|
}, "AcceptOrRefuseOrder orderID:%s, isAcceptIt:%t", order.VendorOrderID, isAcceptIt)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -78,7 +36,7 @@ func (c *BaseScheduler) PickupGoods(order *model.GoodsOrder, userName string) (e
|
|||||||
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusAccepted {
|
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusAccepted {
|
||||||
if c.IsReallyCallPlatformAPI {
|
if c.IsReallyCallPlatformAPI {
|
||||||
err = utils.CallFuncLogErrorWithInfo(func() error {
|
err = utils.CallFuncLogErrorWithInfo(func() error {
|
||||||
return c.GetPurchasePlatformFromVendorID(order.VendorID).PickupGoods(order, userName)
|
return partner.GetPurchasePlatformFromVendorID(order.VendorID).PickupGoods(order, userName)
|
||||||
}, "PickupGoods orderID:%s", order.VendorOrderID)
|
}, "PickupGoods orderID:%s", order.VendorOrderID)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -98,7 +56,7 @@ func (c *BaseScheduler) Swtich2SelfDeliver(order *model.GoodsOrder, userName str
|
|||||||
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusFinishedPickup {
|
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusFinishedPickup {
|
||||||
if c.IsReallyCallPlatformAPI {
|
if c.IsReallyCallPlatformAPI {
|
||||||
err = utils.CallFuncLogErrorWithInfo(func() error {
|
err = utils.CallFuncLogErrorWithInfo(func() error {
|
||||||
return c.GetPurchasePlatformFromVendorID(order.VendorID).Swtich2SelfDeliver(order, userName)
|
return partner.GetPurchasePlatformFromVendorID(order.VendorID).Swtich2SelfDeliver(order, userName)
|
||||||
}, "Swtich2SelfDeliver orderID:%s", order.VendorOrderID)
|
}, "Swtich2SelfDeliver orderID:%s", order.VendorOrderID)
|
||||||
if err == nil { // 因为有些平台转自送后,不会再发送订单在配送中消息过来,所以成功后就强制设置状态为配送中
|
if err == nil { // 因为有些平台转自送后,不会再发送订单在配送中消息过来,所以成功后就强制设置状态为配送中
|
||||||
order.Status = model.OrderStatusDelivering
|
order.Status = model.OrderStatusDelivering
|
||||||
@@ -122,7 +80,7 @@ func (c *BaseScheduler) Swtich2SelfDelivered(order *model.GoodsOrder, userName s
|
|||||||
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusDelivering {
|
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusDelivering {
|
||||||
if c.IsReallyCallPlatformAPI {
|
if c.IsReallyCallPlatformAPI {
|
||||||
err = utils.CallFuncLogError(func() error {
|
err = utils.CallFuncLogError(func() error {
|
||||||
return c.GetPurchasePlatformFromVendorID(order.VendorID).Swtich2SelfDelivered(order, userName)
|
return partner.GetPurchasePlatformFromVendorID(order.VendorID).Swtich2SelfDelivered(order, userName)
|
||||||
}, "Swtich2SelfDelivered orderID:%s", order.VendorOrderID)
|
}, "Swtich2SelfDelivered orderID:%s", order.VendorOrderID)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -142,7 +100,7 @@ func (c *BaseScheduler) SelfDeliverDelivering(order *model.GoodsOrder, userName
|
|||||||
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusFinishedPickup {
|
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusFinishedPickup {
|
||||||
if c.IsReallyCallPlatformAPI {
|
if c.IsReallyCallPlatformAPI {
|
||||||
err = utils.CallFuncLogError(func() error {
|
err = utils.CallFuncLogError(func() error {
|
||||||
return c.GetPurchasePlatformFromVendorID(order.VendorID).SelfDeliverDelivering(order, userName)
|
return partner.GetPurchasePlatformFromVendorID(order.VendorID).SelfDeliverDelivering(order, userName)
|
||||||
}, "SelfDeliverDelivering orderID:%s", order.VendorOrderID)
|
}, "SelfDeliverDelivering orderID:%s", order.VendorOrderID)
|
||||||
if err == nil { // 因为有些平台设置配送中后,不会发送订单在配送中消息过来,所以成功后就强制设置状态为配送中
|
if err == nil { // 因为有些平台设置配送中后,不会发送订单在配送中消息过来,所以成功后就强制设置状态为配送中
|
||||||
order.Status = model.OrderStatusDelivering
|
order.Status = model.OrderStatusDelivering
|
||||||
@@ -165,7 +123,7 @@ func (c *BaseScheduler) SelfDeliverDelievered(order *model.GoodsOrder, userName
|
|||||||
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusDelivering {
|
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusDelivering {
|
||||||
if c.IsReallyCallPlatformAPI {
|
if c.IsReallyCallPlatformAPI {
|
||||||
err = utils.CallFuncLogError(func() error {
|
err = utils.CallFuncLogError(func() error {
|
||||||
return c.GetPurchasePlatformFromVendorID(order.VendorID).SelfDeliverDelievered(order, userName)
|
return partner.GetPurchasePlatformFromVendorID(order.VendorID).SelfDeliverDelievered(order, userName)
|
||||||
}, "SelfDeliverDelievered orderID:%s", order.VendorOrderID)
|
}, "SelfDeliverDelievered orderID:%s", order.VendorOrderID)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -187,7 +145,7 @@ func (c *BaseScheduler) CreateWaybill(platformVendorID int, order *model.GoodsOr
|
|||||||
return nil, scheduler.ErrOrderIsNotSolid
|
return nil, scheduler.ErrOrderIsNotSolid
|
||||||
}
|
}
|
||||||
if c.IsReallyCallPlatformAPI {
|
if c.IsReallyCallPlatformAPI {
|
||||||
handlerInfo := c.GetDeliveryPlatformFromVendorID(platformVendorID)
|
handlerInfo := partner.GetDeliveryPlatformFromVendorID(platformVendorID)
|
||||||
if handlerInfo != nil && handlerInfo.Use4CreateWaybill {
|
if handlerInfo != nil && handlerInfo.Use4CreateWaybill {
|
||||||
bill, err = handlerInfo.Handler.CreateWaybill(order, policy)
|
bill, err = handlerInfo.Handler.CreateWaybill(order, policy)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -203,7 +161,7 @@ func (c *BaseScheduler) CreateWaybill(platformVendorID int, order *model.GoodsOr
|
|||||||
func (c *BaseScheduler) CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) {
|
func (c *BaseScheduler) CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) {
|
||||||
globals.SugarLogger.Infof("CancelWaybill bill:%v, cancelReasonID:%d cancelReason:%s", bill, cancelReasonID, cancelReason)
|
globals.SugarLogger.Infof("CancelWaybill bill:%v, cancelReasonID:%d cancelReason:%s", bill, cancelReasonID, cancelReason)
|
||||||
if c.IsReallyCallPlatformAPI && bill.OrderVendorID != bill.WaybillVendorID {
|
if c.IsReallyCallPlatformAPI && bill.OrderVendorID != bill.WaybillVendorID {
|
||||||
if handlerInfo := c.GetDeliveryPlatformFromVendorID(bill.WaybillVendorID); handlerInfo != nil {
|
if handlerInfo := partner.GetDeliveryPlatformFromVendorID(bill.WaybillVendorID); handlerInfo != nil {
|
||||||
err = utils.CallFuncLogError(func() error {
|
err = utils.CallFuncLogError(func() error {
|
||||||
return handlerInfo.Handler.CancelWaybill(bill, cancelReasonID, cancelReason)
|
return handlerInfo.Handler.CancelWaybill(bill, cancelReasonID, cancelReason)
|
||||||
}, "CancelWaybill bill:%v", bill)
|
}, "CancelWaybill bill:%v", bill)
|
||||||
|
|||||||
@@ -186,7 +186,6 @@ func init() {
|
|||||||
basesch.FixedBaseScheduler = &sch.BaseScheduler
|
basesch.FixedBaseScheduler = &sch.BaseScheduler
|
||||||
FixedScheduler = sch
|
FixedScheduler = sch
|
||||||
sch.IsReallyCallPlatformAPI = globals.ReallyCallPlatformAPI
|
sch.IsReallyCallPlatformAPI = globals.ReallyCallPlatformAPI
|
||||||
sch.Init()
|
|
||||||
scheduler.CurrentScheduler = sch
|
scheduler.CurrentScheduler = sch
|
||||||
sch.defWorkflowConfig = []map[int]*StatusActionConfig{
|
sch.defWorkflowConfig = []map[int]*StatusActionConfig{
|
||||||
map[int]*StatusActionConfig{
|
map[int]*StatusActionConfig{
|
||||||
@@ -199,7 +198,7 @@ func init() {
|
|||||||
if err = sch.AcceptOrRefuseOrder(order, isAcceptIt, ""); err != nil && err != scheduler.ErrOrderStatusAlreadySatisfyCurOperation {
|
if err = sch.AcceptOrRefuseOrder(order, isAcceptIt, ""); err != nil && err != scheduler.ErrOrderStatusAlreadySatisfyCurOperation {
|
||||||
// 为了解决京东新消息与接单消息乱序的问题
|
// 为了解决京东新消息与接单消息乱序的问题
|
||||||
if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 && errWithCode.IntCode() == -1 {
|
if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 && errWithCode.IntCode() == -1 {
|
||||||
if order2, err2 := sch.GetPurchasePlatformFromVendorID(order.VendorID).GetOrder(order.VendorOrderID); err2 == nil && order2.Status > order.Status {
|
if order2, err2 := partner.GetPurchasePlatformFromVendorID(order.VendorID).GetOrder(order.VendorOrderID); err2 == nil && order2.Status > order.Status {
|
||||||
sch.OnOrderStatusChanged(model.Order2Status(order2), false)
|
sch.OnOrderStatusChanged(model.Order2Status(order2), false)
|
||||||
err = nil
|
err = nil
|
||||||
} else {
|
} else {
|
||||||
@@ -472,7 +471,7 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
|
|||||||
if savedOrderInfo.retryCount <= maxWaybillRetryCount {
|
if savedOrderInfo.retryCount <= maxWaybillRetryCount {
|
||||||
successCount := 0
|
successCount := 0
|
||||||
for _, vendorID := range savedOrderInfo.supported3rdCarriers {
|
for _, vendorID := range savedOrderInfo.supported3rdCarriers {
|
||||||
handlerInfo := s.GetDeliveryPlatformFromVendorID(vendorID)
|
handlerInfo := partner.GetDeliveryPlatformFromVendorID(vendorID)
|
||||||
if handlerInfo != nil && handlerInfo.Use4CreateWaybill && savedOrderInfo.waybills[vendorID] == nil && (excludeBill == nil || vendorID != excludeBill.WaybillVendorID) {
|
if handlerInfo != nil && handlerInfo.Use4CreateWaybill && savedOrderInfo.waybills[vendorID] == nil && (excludeBill == nil || vendorID != excludeBill.WaybillVendorID) {
|
||||||
if _, err = s.CreateWaybill(vendorID, order, func(deliveryFee, addFee int64) error {
|
if _, err = s.CreateWaybill(vendorID, order, func(deliveryFee, addFee int64) error {
|
||||||
if addFee > maxAddFee {
|
if addFee > maxAddFee {
|
||||||
@@ -736,7 +735,7 @@ func (s *DefScheduler) handleAutoAcceptOrder(orderID string, vendorID int, userM
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *DefScheduler) mergeOrderStatusConfig(statusType, status int, purchaseVendorID int) (retVal *StatusActionConfig) {
|
func (s *DefScheduler) mergeOrderStatusConfig(statusType, status int, purchaseVendorID int) (retVal *StatusActionConfig) {
|
||||||
vendorTimeout := s.GetPurchasePlatformFromVendorID(purchaseVendorID).GetStatusActionTimeout(statusType, status)
|
vendorTimeout := partner.GetPurchasePlatformFromVendorID(purchaseVendorID).GetStatusActionTimeout(statusType, status)
|
||||||
defConfig := s.defWorkflowConfig[statusType][status]
|
defConfig := s.defWorkflowConfig[statusType][status]
|
||||||
if defConfig == nil {
|
if defConfig == nil {
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -2,10 +2,8 @@ package scheduler
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"time"
|
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/partner"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -43,15 +41,7 @@ var (
|
|||||||
ErrDeliverProviderWrong = errors.New("快递商不存在或不能用于创建运单")
|
ErrDeliverProviderWrong = errors.New("快递商不存在或不能用于创建运单")
|
||||||
)
|
)
|
||||||
|
|
||||||
type DeliveryPlatformHandlerInfo struct {
|
|
||||||
Handler partner.IDeliveryPlatformHandler
|
|
||||||
Use4CreateWaybill bool
|
|
||||||
}
|
|
||||||
|
|
||||||
type IScheduler interface {
|
type IScheduler interface {
|
||||||
RegisterPurchasePlatform(handler partner.IPurchasePlatformHandler)
|
|
||||||
RegisterDeliveryPlatform(handler partner.IDeliveryPlatformHandler, isUse4CreateWaybill bool)
|
|
||||||
|
|
||||||
// 以下是订单
|
// 以下是订单
|
||||||
OnOrderNew(order *model.GoodsOrder, isPending bool) (err error)
|
OnOrderNew(order *model.GoodsOrder, isPending bool) (err error)
|
||||||
OnOrderStatusChanged(status *model.OrderStatus, isPending bool) (err error)
|
OnOrderStatusChanged(status *model.OrderStatus, isPending bool) (err error)
|
||||||
@@ -59,10 +49,3 @@ type IScheduler interface {
|
|||||||
// 以下是运单
|
// 以下是运单
|
||||||
OnWaybillStatusChanged(bill *model.Waybill, isPending bool) (err error)
|
OnWaybillStatusChanged(bill *model.Waybill, isPending bool) (err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type BasePurchasePlatform struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *BasePurchasePlatform) GetStatusActionTimeout(statusType, status int) time.Duration {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -6,11 +6,11 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/basesch"
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
"git.rosy.net.cn/jx-callback/business/model/legacymodel"
|
"git.rosy.net.cn/jx-callback/business/model/legacymodel"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -160,7 +160,7 @@ func GetStores(keyword string, params map[string]interface{}, offset, pageSize i
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetVendorStore(vendorStoreID string, vendorID int) (retVal *StoreExt, err error) {
|
func GetVendorStore(vendorStoreID string, vendorID int) (retVal *StoreExt, err error) {
|
||||||
if handler := CurVendorSync.GetMultiStoreHandler(vendorID); handler != nil {
|
if handler := CurVendorSync.GetStoreHandler(vendorID); handler != nil {
|
||||||
result, err2 := handler.ReadStore(vendorStoreID)
|
result, err2 := handler.ReadStore(vendorStoreID)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
retVal = &StoreExt{
|
retVal = &StoreExt{
|
||||||
@@ -381,7 +381,7 @@ func GetStoreCourierMaps(db *dao.DaoDB, storeID int, vendorID int) (storeCourier
|
|||||||
}
|
}
|
||||||
|
|
||||||
func AddStoreCourierMap(db *dao.DaoDB, storeID, vendorID int, storeCourierMap *model.StoreCourierMap, userName string) (outStoreCourierMap *model.StoreCourierMap, err error) {
|
func AddStoreCourierMap(db *dao.DaoDB, storeID, vendorID int, storeCourierMap *model.StoreCourierMap, userName string) (outStoreCourierMap *model.StoreCourierMap, err error) {
|
||||||
if handler := basesch.FixedBaseScheduler.GetDeliveryPlatformFromVendorID(vendorID); handler != nil {
|
if handler := partner.GetDeliveryPlatformFromVendorID(vendorID); handler != nil {
|
||||||
dao.WrapAddIDCULDEntity(storeCourierMap, userName)
|
dao.WrapAddIDCULDEntity(storeCourierMap, userName)
|
||||||
storeCourierMap.StoreID = storeID
|
storeCourierMap.StoreID = storeID
|
||||||
storeCourierMap.VendorID = vendorID
|
storeCourierMap.VendorID = vendorID
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/basesch"
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
@@ -53,7 +52,7 @@ func Init() {
|
|||||||
model.VendorIDEBAI: api.EbaiAPI,
|
model.VendorIDEBAI: api.EbaiAPI,
|
||||||
}
|
}
|
||||||
CurVendorSync.PurchaseHandlers = make(map[int]partner.IPurchasePlatformHandler)
|
CurVendorSync.PurchaseHandlers = make(map[int]partner.IPurchasePlatformHandler)
|
||||||
for k, v := range basesch.FixedBaseScheduler.PurchasePlatformHandlers {
|
for k, v := range partner.PurchasePlatformHandlers {
|
||||||
if !reflect.ValueOf(apiMap[k]).IsNil() {
|
if !reflect.ValueOf(apiMap[k]).IsNil() {
|
||||||
if multiHandler, ok := v.(partner.IMultipleStoresHandler); ok {
|
if multiHandler, ok := v.(partner.IMultipleStoresHandler); ok {
|
||||||
CurVendorSync.MultiStoreVendorIDs = append(CurVendorSync.MultiStoreVendorIDs, k)
|
CurVendorSync.MultiStoreVendorIDs = append(CurVendorSync.MultiStoreVendorIDs, k)
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/basesch"
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -144,5 +144,5 @@ func (m *DurableTaskMan) StartTask(taskID string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func defObjCreator(objHint string) interface{} {
|
func defObjCreator(objHint string) interface{} {
|
||||||
return basesch.FixedBaseScheduler.GetPurchasePlatformFromVendorID(0)
|
return partner.GetPurchasePlatformFromVendorID(0)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import (
|
|||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/dadaapi"
|
"git.rosy.net.cn/baseapi/platformapi/dadaapi"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
@@ -33,7 +32,7 @@ type DeliveryHandler struct {
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
curDeliveryHandler = new(DeliveryHandler)
|
curDeliveryHandler = new(DeliveryHandler)
|
||||||
scheduler.CurrentScheduler.RegisterDeliveryPlatform(curDeliveryHandler, true)
|
partner.RegisterDeliveryPlatform(curDeliveryHandler, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
func OnWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) {
|
func OnWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) {
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import (
|
|||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/mtpsapi"
|
"git.rosy.net.cn/baseapi/platformapi/mtpsapi"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
@@ -35,7 +34,7 @@ type DeliveryHandler struct {
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
curDeliveryHandler = new(DeliveryHandler)
|
curDeliveryHandler = new(DeliveryHandler)
|
||||||
scheduler.CurrentScheduler.RegisterDeliveryPlatform(curDeliveryHandler, true)
|
partner.RegisterDeliveryPlatform(curDeliveryHandler, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *DeliveryHandler) GetVendorID() int {
|
func (c *DeliveryHandler) GetVendorID() int {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package partner
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
@@ -31,6 +32,9 @@ var (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
CurOrderManager IOrderManager
|
CurOrderManager IOrderManager
|
||||||
|
|
||||||
|
PurchasePlatformHandlers map[int]IPurchasePlatformHandler
|
||||||
|
DeliveryPlatformHandlers map[int]*DeliveryPlatformHandlerInfo
|
||||||
)
|
)
|
||||||
|
|
||||||
type IOrderManager interface {
|
type IOrderManager interface {
|
||||||
@@ -116,6 +120,55 @@ type IDeliveryPlatformHandler interface {
|
|||||||
GetVendorID() int
|
GetVendorID() int
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type DeliveryPlatformHandlerInfo struct {
|
||||||
|
Handler IDeliveryPlatformHandler
|
||||||
|
Use4CreateWaybill bool
|
||||||
|
}
|
||||||
|
|
||||||
|
type BasePurchasePlatform struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *BasePurchasePlatform) GetStatusActionTimeout(statusType, status int) time.Duration {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
PurchasePlatformHandlers = make(map[int]IPurchasePlatformHandler)
|
||||||
|
DeliveryPlatformHandlers = make(map[int]*DeliveryPlatformHandlerInfo)
|
||||||
|
}
|
||||||
|
|
||||||
func Init(curOrderManager IOrderManager) {
|
func Init(curOrderManager IOrderManager) {
|
||||||
CurOrderManager = curOrderManager
|
CurOrderManager = curOrderManager
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func RegisterPurchasePlatform(handler IPurchasePlatformHandler) {
|
||||||
|
vendorID := handler.GetVendorID()
|
||||||
|
if !(vendorID >= model.VendorIDPurchaseBegin && vendorID <= model.VendorIDPurchaseEnd) {
|
||||||
|
panic(fmt.Sprintf("purchase vendor:%d is illegal", vendorID))
|
||||||
|
}
|
||||||
|
if _, ok := PurchasePlatformHandlers[vendorID]; ok {
|
||||||
|
panic(fmt.Sprintf("purchase vendor:%d, already exists", vendorID))
|
||||||
|
}
|
||||||
|
PurchasePlatformHandlers[vendorID] = handler
|
||||||
|
}
|
||||||
|
|
||||||
|
func RegisterDeliveryPlatform(handler IDeliveryPlatformHandler, isUse4CreateWaybill bool) {
|
||||||
|
vendorID := handler.GetVendorID()
|
||||||
|
if !(vendorID >= model.VendorIDDeliveryBegin && vendorID <= model.VendorIDDeliveryEnd) {
|
||||||
|
panic(fmt.Sprintf("delivery vendor:%d is illegal", vendorID))
|
||||||
|
}
|
||||||
|
if _, ok := DeliveryPlatformHandlers[vendorID]; ok {
|
||||||
|
panic(fmt.Sprintf("delivery vendor:%d, already exists", vendorID))
|
||||||
|
}
|
||||||
|
DeliveryPlatformHandlers[vendorID] = &DeliveryPlatformHandlerInfo{
|
||||||
|
Handler: handler,
|
||||||
|
Use4CreateWaybill: isUse4CreateWaybill,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
func GetPurchasePlatformFromVendorID(vendorID int) IPurchasePlatformHandler {
|
||||||
|
return PurchasePlatformHandlers[vendorID]
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetDeliveryPlatformFromVendorID(vendorID int) *DeliveryPlatformHandlerInfo {
|
||||||
|
return DeliveryPlatformHandlers[vendorID]
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ package ebai
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
|
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -11,12 +11,12 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type PurchaseHandler struct {
|
type PurchaseHandler struct {
|
||||||
scheduler.BasePurchasePlatform
|
partner.BasePurchasePlatform
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
curPurchaseHandler = new(PurchaseHandler)
|
curPurchaseHandler = new(PurchaseHandler)
|
||||||
scheduler.CurrentScheduler.RegisterPurchasePlatform(curPurchaseHandler)
|
partner.RegisterPurchasePlatform(curPurchaseHandler)
|
||||||
}
|
}
|
||||||
|
|
||||||
func EbaiBusStatus2JxStatus(ebaiStatus int) int {
|
func EbaiBusStatus2JxStatus(ebaiStatus int) int {
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ package elm
|
|||||||
import (
|
import (
|
||||||
"git.rosy.net.cn/baseapi/platformapi/elmapi"
|
"git.rosy.net.cn/baseapi/platformapi/elmapi"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -13,12 +13,12 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type PurchaseHandler struct {
|
type PurchaseHandler struct {
|
||||||
scheduler.BasePurchasePlatform
|
partner.BasePurchasePlatform
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
curPurchaseHandler = new(PurchaseHandler)
|
curPurchaseHandler = new(PurchaseHandler)
|
||||||
scheduler.CurrentScheduler.RegisterPurchasePlatform(curPurchaseHandler)
|
partner.RegisterPurchasePlatform(curPurchaseHandler)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) GetVendorID() int {
|
func (c *PurchaseHandler) GetVendorID() int {
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ package jd
|
|||||||
import (
|
import (
|
||||||
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
|
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -12,12 +12,12 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type PurchaseHandler struct {
|
type PurchaseHandler struct {
|
||||||
scheduler.BasePurchasePlatform
|
partner.BasePurchasePlatform
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
curPurchaseHandler = new(PurchaseHandler)
|
curPurchaseHandler = new(PurchaseHandler)
|
||||||
scheduler.CurrentScheduler.RegisterPurchasePlatform(curPurchaseHandler)
|
partner.RegisterPurchasePlatform(curPurchaseHandler)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) GetVendorID() int {
|
func (c *PurchaseHandler) GetVendorID() int {
|
||||||
|
|||||||
Reference in New Issue
Block a user