- refactor file structure.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
package controller
|
package orderman
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -6,22 +6,14 @@ import (
|
|||||||
|
|
||||||
"git.rosy.net.cn/baseapi"
|
"git.rosy.net.cn/baseapi"
|
||||||
"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/scheduler"
|
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"github.com/astaxie/beego/orm"
|
"github.com/astaxie/beego/orm"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 所有公共接口调用前,要求在order里或status中设置合适的Status
|
func (c *OrderManager) LoadPendingOrders() []*model.GoodsOrder {
|
||||||
type OrderController struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewOrderManager() *OrderController {
|
|
||||||
return &OrderController{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *OrderController) LoadPendingOrders() []*model.GoodsOrder {
|
|
||||||
db := orm.NewOrm()
|
db := orm.NewOrm()
|
||||||
var orders []*model.GoodsOrder
|
var orders []*model.GoodsOrder
|
||||||
tillTime := time.Now().Add(-pendingOrderGapMax)
|
tillTime := time.Now().Add(-pendingOrderGapMax)
|
||||||
@@ -46,7 +38,7 @@ func (c *OrderController) LoadPendingOrders() []*model.GoodsOrder {
|
|||||||
|
|
||||||
// msgVendorStatus的意思是事件本身的类型,类似有时收到NewOrder事件去取,订单状态不一定就是New的
|
// msgVendorStatus的意思是事件本身的类型,类似有时收到NewOrder事件去取,订单状态不一定就是New的
|
||||||
// OnOrderAdjust也类似,而OrderStatus要记录的是消息,所以添加这个
|
// OnOrderAdjust也类似,而OrderStatus要记录的是消息,所以添加这个
|
||||||
func (c *OrderController) OnOrderNew(order *model.GoodsOrder, msgVendorStatus string) (err error) {
|
func (c *OrderManager) OnOrderNew(order *model.GoodsOrder, msgVendorStatus string) (err error) {
|
||||||
// todo transaction
|
// todo transaction
|
||||||
db := orm.NewOrm()
|
db := orm.NewOrm()
|
||||||
if order.Status == model.OrderStatusUnknown {
|
if order.Status == model.OrderStatusUnknown {
|
||||||
@@ -65,7 +57,7 @@ func (c *OrderController) OnOrderNew(order *model.GoodsOrder, msgVendorStatus st
|
|||||||
}
|
}
|
||||||
|
|
||||||
// todo 调整单的处理可能还需要再细化一点,当前只是简单的删除重建
|
// todo 调整单的处理可能还需要再细化一点,当前只是简单的删除重建
|
||||||
func (c *OrderController) OnOrderAdjust(order *model.GoodsOrder, msgVendorStatus string) (err error) {
|
func (c *OrderManager) OnOrderAdjust(order *model.GoodsOrder, msgVendorStatus string) (err error) {
|
||||||
// todo transaction
|
// todo transaction
|
||||||
db := orm.NewOrm()
|
db := orm.NewOrm()
|
||||||
if order.Status == model.OrderStatusUnknown {
|
if order.Status == model.OrderStatusUnknown {
|
||||||
@@ -99,7 +91,7 @@ func (c *OrderController) OnOrderAdjust(order *model.GoodsOrder, msgVendorStatus
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *OrderController) OnOrderStatusChanged(orderStatus *model.OrderStatus) (err error) {
|
func (c *OrderManager) OnOrderStatusChanged(orderStatus *model.OrderStatus) (err error) {
|
||||||
isDuplicated, err := c.addOrderStatus(orderStatus, nil)
|
isDuplicated, err := c.addOrderStatus(orderStatus, nil)
|
||||||
if err == nil && !isDuplicated {
|
if err == nil && !isDuplicated {
|
||||||
err = scheduler.CurrentScheduler.OnOrderStatusChanged(orderStatus, false)
|
err = scheduler.CurrentScheduler.OnOrderStatusChanged(orderStatus, false)
|
||||||
@@ -111,7 +103,7 @@ func (c *OrderController) OnOrderStatusChanged(orderStatus *model.OrderStatus) (
|
|||||||
}
|
}
|
||||||
|
|
||||||
// private
|
// private
|
||||||
func (c *OrderController) saveOrder(order *model.GoodsOrder, isAdjust bool, db orm.Ormer) (isDuplicated bool, err error) {
|
func (c *OrderManager) saveOrder(order *model.GoodsOrder, isAdjust bool, db orm.Ormer) (isDuplicated bool, err error) {
|
||||||
// 忽略查找JX信息错误
|
// 忽略查找JX信息错误
|
||||||
c.updateOrderOtherInfo(order, db)
|
c.updateOrderOtherInfo(order, db)
|
||||||
order.ID = 0
|
order.ID = 0
|
||||||
@@ -170,7 +162,7 @@ func (c *OrderController) saveOrder(order *model.GoodsOrder, isAdjust bool, db o
|
|||||||
return isDuplicated, err
|
return isDuplicated, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *OrderController) updateOrderSkuOtherInfo(order *model.GoodsOrder, db orm.Ormer) (err error) {
|
func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db orm.Ormer) (err error) {
|
||||||
jxStoreID := jxutils.GetJxStoreIDFromOrder(order)
|
jxStoreID := jxutils.GetJxStoreIDFromOrder(order)
|
||||||
if jxStoreID == 0 {
|
if jxStoreID == 0 {
|
||||||
globals.SugarLogger.Infof("updateOrderSkuOtherInfo [运营]订单在京西与平台都找不到京西门店信息orderID:%s, VendorStoreID:%s", order.VendorOrderID, order.VendorStoreID)
|
globals.SugarLogger.Infof("updateOrderSkuOtherInfo [运营]订单在京西与平台都找不到京西门店信息orderID:%s, VendorStoreID:%s", order.VendorOrderID, order.VendorStoreID)
|
||||||
@@ -245,7 +237,7 @@ func (c *OrderController) updateOrderSkuOtherInfo(order *model.GoodsOrder, db or
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *OrderController) updateOrderOtherInfo(order *model.GoodsOrder, db orm.Ormer) (err error) {
|
func (c *OrderManager) updateOrderOtherInfo(order *model.GoodsOrder, db orm.Ormer) (err error) {
|
||||||
var sql string
|
var sql string
|
||||||
if order.VendorID == model.VendorIDJD {
|
if order.VendorID == model.VendorIDJD {
|
||||||
sql = `
|
sql = `
|
||||||
@@ -274,7 +266,7 @@ func (c *OrderController) updateOrderOtherInfo(order *model.GoodsOrder, db orm.O
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *OrderController) addOrderStatus(orderStatus *model.OrderStatus, db orm.Ormer) (isDuplicated bool, err error) {
|
func (c *OrderManager) addOrderStatus(orderStatus *model.OrderStatus, db orm.Ormer) (isDuplicated bool, err error) {
|
||||||
if db == nil {
|
if db == nil {
|
||||||
db = orm.NewOrm()
|
db = orm.NewOrm()
|
||||||
}
|
}
|
||||||
@@ -329,7 +321,7 @@ func (c *OrderController) addOrderStatus(orderStatus *model.OrderStatus, db orm.
|
|||||||
return isDuplicated, err
|
return isDuplicated, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *OrderController) LoadOrder(vendorOrderID string, vendorID int) (order *model.GoodsOrder, err error) {
|
func (c *OrderManager) LoadOrder(vendorOrderID string, vendorID int) (order *model.GoodsOrder, err error) {
|
||||||
db := orm.NewOrm()
|
db := orm.NewOrm()
|
||||||
order = &model.GoodsOrder{
|
order = &model.GoodsOrder{
|
||||||
VendorOrderID: vendorOrderID,
|
VendorOrderID: vendorOrderID,
|
||||||
@@ -348,7 +340,7 @@ func (c *OrderController) LoadOrder(vendorOrderID string, vendorID int) (order *
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Waybill
|
//Waybill
|
||||||
func (c *OrderController) UpdateWaybillVendorID(bill *model.Waybill, revertStatus bool) (err error) {
|
func (c *OrderManager) UpdateWaybillVendorID(bill *model.Waybill, revertStatus bool) (err error) {
|
||||||
globals.SugarLogger.Debugf("UpdateWaybillVendorID bill:%v", bill)
|
globals.SugarLogger.Debugf("UpdateWaybillVendorID bill:%v", bill)
|
||||||
db := orm.NewOrm()
|
db := orm.NewOrm()
|
||||||
params := orm.Params{
|
params := orm.Params{
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package controller
|
package orderman
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
@@ -124,7 +124,7 @@ func legacyMapWaybillStatus(status int) (retVal int8) {
|
|||||||
return retVal
|
return retVal
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *OrderController) legacyWriteJxOrder(order *model.GoodsOrder, db orm.Ormer, isDelFirst bool) (err error) {
|
func (c *OrderManager) legacyWriteJxOrder(order *model.GoodsOrder, db orm.Ormer, isDelFirst bool) (err error) {
|
||||||
var result map[string]interface{}
|
var result map[string]interface{}
|
||||||
businessTags := ""
|
businessTags := ""
|
||||||
if order.VendorID == model.VendorIDJD && utils.UnmarshalUseNumber([]byte(order.OriginalData), &result) == nil {
|
if order.VendorID == model.VendorIDJD && utils.UnmarshalUseNumber([]byte(order.OriginalData), &result) == nil {
|
||||||
@@ -223,7 +223,7 @@ func (c *OrderController) legacyWriteJxOrder(order *model.GoodsOrder, db orm.Orm
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *OrderController) legacyJxOrderStatusChanged(status *model.OrderStatus, db orm.Ormer) (err error) {
|
func (c *OrderManager) legacyJxOrderStatusChanged(status *model.OrderStatus, db orm.Ormer) (err error) {
|
||||||
orderStatus := legacyMapOrderStatus(status.Status)
|
orderStatus := legacyMapOrderStatus(status.Status)
|
||||||
if orderStatus != JX_STATUS_UNKNOWN {
|
if orderStatus != JX_STATUS_UNKNOWN {
|
||||||
if status.VendorID == model.VendorIDELM {
|
if status.VendorID == model.VendorIDELM {
|
||||||
@@ -268,7 +268,7 @@ func (c *OrderController) legacyJxOrderStatusChanged(status *model.OrderStatus,
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *WaybillController) legacyWaybillStatusChanged(bill *model.Waybill, db orm.Ormer) (err error) {
|
func (c *OrderManager) legacyWaybillStatusChanged(bill *model.Waybill, db orm.Ormer) (err error) {
|
||||||
deliveryStatus := legacyMapWaybillStatus(bill.Status)
|
deliveryStatus := legacyMapWaybillStatus(bill.Status)
|
||||||
if deliveryStatus != JX_STATUS_UNKNOWN {
|
if deliveryStatus != JX_STATUS_UNKNOWN {
|
||||||
if db == nil {
|
if db == nil {
|
||||||
@@ -1,14 +1,15 @@
|
|||||||
package controller
|
package orderman
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"sort"
|
"sort"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"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/defsch" // 导入缺省订单调度器
|
||||||
"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/scheduler"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
_ "git.rosy.net.cn/jx-callback/business/scheduler/defsch" // 导入缺省订单调度器
|
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"github.com/astaxie/beego/orm"
|
"github.com/astaxie/beego/orm"
|
||||||
)
|
)
|
||||||
@@ -20,10 +21,17 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
OrderManager *OrderController
|
CurOrderManager *OrderManager
|
||||||
WaybillManager *WaybillController
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// 所有公共接口调用前,要求在order里或status中设置合适的Status
|
||||||
|
type OrderManager struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewOrderManager() *OrderManager {
|
||||||
|
return &OrderManager{}
|
||||||
|
}
|
||||||
|
|
||||||
type StatusTimer interface {
|
type StatusTimer interface {
|
||||||
GetStatusTime() time.Time
|
GetStatusTime() time.Time
|
||||||
}
|
}
|
||||||
@@ -45,9 +53,8 @@ func (s StatusTimerSlice) Swap(i, j int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
OrderManager = NewOrderManager()
|
CurOrderManager = NewOrderManager()
|
||||||
WaybillManager = NewWaybillManager()
|
partner.Init(CurOrderManager)
|
||||||
scheduler.CurrentScheduler.RegisterOrderManager(OrderManager)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func addOrderOrWaybillStatus(status *model.OrderStatus, db orm.Ormer) (isDuplicated bool, err error) {
|
func addOrderOrWaybillStatus(status *model.OrderStatus, db orm.Ormer) (isDuplicated bool, err error) {
|
||||||
@@ -79,12 +86,12 @@ func addOrderOrWaybillStatus(status *model.OrderStatus, db orm.Ormer) (isDuplica
|
|||||||
|
|
||||||
// todo 最好还是改成全事件回放算了
|
// todo 最好还是改成全事件回放算了
|
||||||
func LoadPendingOrders() {
|
func LoadPendingOrders() {
|
||||||
orders := OrderManager.LoadPendingOrders()
|
orders := CurOrderManager.LoadPendingOrders()
|
||||||
globals.SugarLogger.Infof("LoadPendingOrders orders count:%d", len(orders))
|
globals.SugarLogger.Infof("LoadPendingOrders orders count:%d", len(orders))
|
||||||
|
|
||||||
ordersCount := len(orders)
|
ordersCount := len(orders)
|
||||||
if ordersCount > 0 {
|
if ordersCount > 0 {
|
||||||
bills := WaybillManager.LoadPendingWaybills()
|
bills := CurOrderManager.LoadPendingWaybills()
|
||||||
globals.SugarLogger.Infof("LoadPendingOrders waybills count:%d", len(bills))
|
globals.SugarLogger.Infof("LoadPendingOrders waybills count:%d", len(bills))
|
||||||
var sortOrders StatusTimerSlice
|
var sortOrders StatusTimerSlice
|
||||||
for _, order := range orders {
|
for _, order := range orders {
|
||||||
@@ -1,24 +1,16 @@
|
|||||||
package controller
|
package orderman
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"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/scheduler"
|
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"github.com/astaxie/beego/orm"
|
"github.com/astaxie/beego/orm"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 所有公共接口调用前,要求在order里或status中设置合适的Status
|
func (w *OrderManager) LoadPendingWaybills() []*model.Waybill {
|
||||||
type WaybillController struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewWaybillManager() *WaybillController {
|
|
||||||
return &WaybillController{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *WaybillController) LoadPendingWaybills() []*model.Waybill {
|
|
||||||
db := orm.NewOrm()
|
db := orm.NewOrm()
|
||||||
var bills []*model.Waybill
|
var bills []*model.Waybill
|
||||||
tillTime := time.Now().Add(-pendingOrderGapMax)
|
tillTime := time.Now().Add(-pendingOrderGapMax)
|
||||||
@@ -39,7 +31,7 @@ func (w *WaybillController) LoadPendingWaybills() []*model.Waybill {
|
|||||||
return bills
|
return bills
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *WaybillController) onWaybillNew(bill2 *model.Waybill, db orm.Ormer) (isDuplicated bool, err error) {
|
func (w *OrderManager) onWaybillNew(bill2 *model.Waybill, db orm.Ormer) (isDuplicated bool, err error) {
|
||||||
globals.SugarLogger.Debugf("onWaybillNew bill:%v", bill2)
|
globals.SugarLogger.Debugf("onWaybillNew bill:%v", bill2)
|
||||||
isDuplicated, err = addOrderOrWaybillStatus(model.Waybill2Status(bill2), db)
|
isDuplicated, err = addOrderOrWaybillStatus(model.Waybill2Status(bill2), db)
|
||||||
if err == nil && !isDuplicated {
|
if err == nil && !isDuplicated {
|
||||||
@@ -71,7 +63,7 @@ func (w *WaybillController) onWaybillNew(bill2 *model.Waybill, db orm.Ormer) (is
|
|||||||
return isDuplicated, err
|
return isDuplicated, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *WaybillController) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
|
func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
|
||||||
var isDuplicated bool
|
var isDuplicated bool
|
||||||
db := orm.NewOrm()
|
db := orm.NewOrm()
|
||||||
if bill.Status == model.WaybillStatusNew {
|
if bill.Status == model.WaybillStatusNew {
|
||||||
@@ -96,7 +88,7 @@ func (w *WaybillController) OnWaybillStatusChanged(bill *model.Waybill) (err err
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *WaybillController) addWaybillStatus(bill *model.Waybill, db orm.Ormer, addParams orm.Params) (isDuplicated bool, err error) {
|
func (w *OrderManager) addWaybillStatus(bill *model.Waybill, db orm.Ormer, addParams orm.Params) (isDuplicated bool, err error) {
|
||||||
waybillStatus := model.Waybill2Status(bill)
|
waybillStatus := model.Waybill2Status(bill)
|
||||||
isDuplicated, err = addOrderOrWaybillStatus(waybillStatus, db)
|
isDuplicated, err = addOrderOrWaybillStatus(waybillStatus, db)
|
||||||
if err == nil && !isDuplicated && waybillStatus.Status > model.WaybillStatusUnknown { // todo 这里应该和addOrderStatus一样的改法,状态不能回绕
|
if err == nil && !isDuplicated && waybillStatus.Status > model.WaybillStatusUnknown { // todo 这里应该和addOrderStatus一样的改法,状态不能回绕
|
||||||
@@ -2,16 +2,16 @@ package defsch
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"math/rand"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"math/rand"
|
|
||||||
|
|
||||||
"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/jxutils/weixinmsg"
|
"git.rosy.net.cn/jx-callback/business/jxutils/weixinmsg"
|
||||||
"git.rosy.net.cn/jx-callback/business/legacymodel"
|
"git.rosy.net.cn/jx-callback/business/legacymodel"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/scheduler"
|
"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"
|
||||||
)
|
)
|
||||||
@@ -503,7 +503,7 @@ func (s *DefScheduler) loadSavedOrderFromMap(status *model.OrderStatus, isAutoLo
|
|||||||
} else {
|
} else {
|
||||||
globals.SugarLogger.Infof("loadSavedOrderFromMap order is incomplete, orderID:%s, load it", status.RefVendorOrderID)
|
globals.SugarLogger.Infof("loadSavedOrderFromMap order is incomplete, orderID:%s, load it", status.RefVendorOrderID)
|
||||||
}
|
}
|
||||||
if order, err := s.CurOrderManager.LoadOrder(status.RefVendorOrderID, status.RefVendorID); err == nil {
|
if order, err := partner.CurOrderManager.LoadOrder(status.RefVendorOrderID, status.RefVendorID); err == nil {
|
||||||
realSavedInfo.SetOrder(order)
|
realSavedInfo.SetOrder(order)
|
||||||
} else {
|
} else {
|
||||||
realSavedInfo.SetOrder(&model.GoodsOrder{
|
realSavedInfo.SetOrder(&model.GoodsOrder{
|
||||||
@@ -661,7 +661,7 @@ func (s *DefScheduler) updateOrderByBill(order *model.GoodsOrder, bill *model.Wa
|
|||||||
if bill.WaybillVendorID == model.VendorIDUnknown {
|
if bill.WaybillVendorID == model.VendorIDUnknown {
|
||||||
bill.VendorWaybillID = ""
|
bill.VendorWaybillID = ""
|
||||||
}
|
}
|
||||||
s.CurOrderManager.UpdateWaybillVendorID(bill, revertStatus)
|
partner.CurOrderManager.UpdateWaybillVendorID(bill, revertStatus)
|
||||||
order.WaybillVendorID = bill.WaybillVendorID
|
order.WaybillVendorID = bill.WaybillVendorID
|
||||||
order.VendorWaybillID = bill.VendorWaybillID
|
order.VendorWaybillID = bill.VendorWaybillID
|
||||||
if revertStatus {
|
if revertStatus {
|
||||||
@@ -7,6 +7,7 @@ import (
|
|||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -42,47 +43,14 @@ var (
|
|||||||
ErrOrderIsNotSolid = errors.New("订单是临时订单,不完整,不能用于创建运单")
|
ErrOrderIsNotSolid = errors.New("订单是临时订单,不完整,不能用于创建运单")
|
||||||
)
|
)
|
||||||
|
|
||||||
type PurchasePlatformHandler interface {
|
|
||||||
GetStatusFromVendorStatus(vendorStatus string) int
|
|
||||||
GetOrder(vendorOrderID string) (order *model.GoodsOrder, err error)
|
|
||||||
GetStatusActionTimeout(statusType, status int) time.Duration
|
|
||||||
|
|
||||||
AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool) (err error)
|
|
||||||
PickupGoods(order *model.GoodsOrder) (err error)
|
|
||||||
|
|
||||||
// 将订单从购物平台配送转为自送
|
|
||||||
Swtich2SelfDeliver(order *model.GoodsOrder) (err error)
|
|
||||||
|
|
||||||
// 将订单从购物平台配送转为自送后又送达
|
|
||||||
Swtich2SelfDelivered(order *model.GoodsOrder) (err error)
|
|
||||||
|
|
||||||
// 完全自送的门店表示开始配送
|
|
||||||
SelfDeliverDelievering(order *model.GoodsOrder) (err error)
|
|
||||||
|
|
||||||
// 完全自送的门店表示配送完成
|
|
||||||
SelfDeliverDelievered(order *model.GoodsOrder) (err error)
|
|
||||||
}
|
|
||||||
|
|
||||||
type DeliveryPlatformHandler interface {
|
|
||||||
CreateWaybill(order *model.GoodsOrder) (err error)
|
|
||||||
CancelWaybill(bill *model.Waybill) (err error)
|
|
||||||
}
|
|
||||||
|
|
||||||
type DeliveryPlatformHandlerInfo struct {
|
type DeliveryPlatformHandlerInfo struct {
|
||||||
Handler DeliveryPlatformHandler
|
Handler partner.IDeliveryPlatformHandler
|
||||||
Use4CreateWaybill bool
|
Use4CreateWaybill bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type OrderManager interface {
|
|
||||||
LoadOrder(vendorOrderID string, vendorID int) (order *model.GoodsOrder, err error)
|
|
||||||
// OnOrderStatusChanged(status *model.OrderStatus) (err error) // 此消息是否使用还不确定
|
|
||||||
UpdateWaybillVendorID(bill *model.Waybill, revertStatus bool) (err error)
|
|
||||||
}
|
|
||||||
|
|
||||||
type Scheduler interface {
|
type Scheduler interface {
|
||||||
RegisterOrderManager(handler OrderManager)
|
RegisterPurchasePlatform(vendorID int, handler partner.IPurchasePlatformHandler)
|
||||||
RegisterPurchasePlatform(vendorID int, handler PurchasePlatformHandler)
|
RegisterDeliveryPlatform(vendorID int, handler partner.IDeliveryPlatformHandler, isUse4CreateWaybill bool)
|
||||||
RegisterDeliveryPlatform(vendorID int, handler DeliveryPlatformHandler, isUse4CreateWaybill bool)
|
|
||||||
|
|
||||||
// 以下是订单
|
// 以下是订单
|
||||||
OnOrderNew(order *model.GoodsOrder, isPending bool) (err error)
|
OnOrderNew(order *model.GoodsOrder, isPending bool) (err error)
|
||||||
@@ -93,22 +61,17 @@ type Scheduler interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type BaseScheduler struct {
|
type BaseScheduler struct {
|
||||||
CurOrderManager OrderManager
|
PurchasePlatformHandlers map[int]partner.IPurchasePlatformHandler
|
||||||
PurchasePlatformHandlers map[int]PurchasePlatformHandler
|
|
||||||
DeliveryPlatformHandlers map[int]*DeliveryPlatformHandlerInfo
|
DeliveryPlatformHandlers map[int]*DeliveryPlatformHandlerInfo
|
||||||
IsReallyCallPlatformAPI bool
|
IsReallyCallPlatformAPI bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *BaseScheduler) Init() {
|
func (c *BaseScheduler) Init() {
|
||||||
c.PurchasePlatformHandlers = make(map[int]PurchasePlatformHandler)
|
c.PurchasePlatformHandlers = make(map[int]partner.IPurchasePlatformHandler)
|
||||||
c.DeliveryPlatformHandlers = make(map[int]*DeliveryPlatformHandlerInfo)
|
c.DeliveryPlatformHandlers = make(map[int]*DeliveryPlatformHandlerInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *BaseScheduler) RegisterOrderManager(handler OrderManager) {
|
func (c *BaseScheduler) RegisterPurchasePlatform(vendorID int, handler partner.IPurchasePlatformHandler) {
|
||||||
c.CurOrderManager = handler
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *BaseScheduler) RegisterPurchasePlatform(vendorID int, handler PurchasePlatformHandler) {
|
|
||||||
if !(vendorID >= model.VendorIDPurchaseBegin && vendorID <= model.VendorIDPurchaseEnd) {
|
if !(vendorID >= model.VendorIDPurchaseBegin && vendorID <= model.VendorIDPurchaseEnd) {
|
||||||
panic(fmt.Sprintf("purchase vendor:%d is illegal", vendorID))
|
panic(fmt.Sprintf("purchase vendor:%d is illegal", vendorID))
|
||||||
}
|
}
|
||||||
@@ -118,7 +81,7 @@ func (c *BaseScheduler) RegisterPurchasePlatform(vendorID int, handler PurchaseP
|
|||||||
c.PurchasePlatformHandlers[vendorID] = handler
|
c.PurchasePlatformHandlers[vendorID] = handler
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *BaseScheduler) RegisterDeliveryPlatform(vendorID int, handler DeliveryPlatformHandler, isUse4CreateWaybill bool) {
|
func (c *BaseScheduler) RegisterDeliveryPlatform(vendorID int, handler partner.IDeliveryPlatformHandler, isUse4CreateWaybill bool) {
|
||||||
if !(vendorID >= model.VendorIDDeliveryBegin && vendorID <= model.VendorIDDeliveryEnd) {
|
if !(vendorID >= model.VendorIDDeliveryBegin && vendorID <= model.VendorIDDeliveryEnd) {
|
||||||
panic(fmt.Sprintf("delivery vendor:%d is illegal", vendorID))
|
panic(fmt.Sprintf("delivery vendor:%d is illegal", vendorID))
|
||||||
}
|
}
|
||||||
@@ -131,7 +94,7 @@ func (c *BaseScheduler) RegisterDeliveryPlatform(vendorID int, handler DeliveryP
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *BaseScheduler) GetPurchasePlatformFromVendorID(vendorID int) PurchasePlatformHandler {
|
func (c *BaseScheduler) GetPurchasePlatformFromVendorID(vendorID int) partner.IPurchasePlatformHandler {
|
||||||
return c.PurchasePlatformHandlers[vendorID]
|
return c.PurchasePlatformHandlers[vendorID]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6,10 +6,10 @@ 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/controller"
|
"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/scheduler"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
"github.com/astaxie/beego/orm"
|
"github.com/astaxie/beego/orm"
|
||||||
@@ -58,7 +58,7 @@ func (c *WaybillController) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dada
|
|||||||
default:
|
default:
|
||||||
order.Status = model.WaybillStatusUnknown
|
order.Status = model.WaybillStatusUnknown
|
||||||
}
|
}
|
||||||
return dadaapi.Err2CallbackResponse(controller.WaybillManager.OnWaybillStatusChanged(order), utils.Int2Str(order.Status))
|
return dadaapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), utils.Int2Str(order.Status))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *WaybillController) callbackMsg2Waybill(msg *dadaapi.CallbackMsg) (retVal *model.Waybill) {
|
func (c *WaybillController) callbackMsg2Waybill(msg *dadaapi.CallbackMsg) (retVal *model.Waybill) {
|
||||||
@@ -81,7 +81,7 @@ func (c *WaybillController) callbackMsg2Waybill(msg *dadaapi.CallbackMsg) (retVa
|
|||||||
return retVal
|
return retVal
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeliveryPlatformHandler
|
// IDeliveryPlatformHandler
|
||||||
func (c *WaybillController) CreateWaybill(order *model.GoodsOrder) (err error) {
|
func (c *WaybillController) CreateWaybill(order *model.GoodsOrder) (err error) {
|
||||||
billParams := &dadaapi.OperateOrderRequiredParams{
|
billParams := &dadaapi.OperateOrderRequiredParams{
|
||||||
ShopNo: utils.Int2Str(order.StoreID), // 当前达达的门店号与京西是一样的
|
ShopNo: utils.Int2Str(order.StoreID), // 当前达达的门店号与京西是一样的
|
||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/controller"
|
"git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
@@ -23,7 +23,7 @@ func init() {
|
|||||||
|
|
||||||
func TestCreateWaybill(t *testing.T) {
|
func TestCreateWaybill(t *testing.T) {
|
||||||
orderID := "817540316000041"
|
orderID := "817540316000041"
|
||||||
if order, err := controller.OrderManager.LoadOrder(orderID, model.VendorIDJD); err == nil {
|
if order, err := orderman.CurOrderManager.LoadOrder(orderID, model.VendorIDJD); err == nil {
|
||||||
// globals.SugarLogger.Debug(order)
|
// globals.SugarLogger.Debug(order)
|
||||||
c := new(WaybillController)
|
c := new(WaybillController)
|
||||||
if err = c.CreateWaybill(order); err == nil {
|
if err = c.CreateWaybill(order); err == nil {
|
||||||
@@ -8,11 +8,11 @@ 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/controller"
|
"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/legacymodel"
|
"git.rosy.net.cn/jx-callback/business/legacymodel"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/scheduler"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
"github.com/astaxie/beego"
|
"github.com/astaxie/beego"
|
||||||
@@ -57,7 +57,7 @@ func (c *WaybillController) OnWaybillExcept(msg *mtpsapi.CallbackOrderExceptionM
|
|||||||
StatusTime: utils.Timestamp2Time(msg.Timestamp),
|
StatusTime: utils.Timestamp2Time(msg.Timestamp),
|
||||||
}
|
}
|
||||||
order.VendorOrderID, order.OrderVendorID = jxutils.SplitUniversalOrderID(msg.OrderID)
|
order.VendorOrderID, order.OrderVendorID = jxutils.SplitUniversalOrderID(msg.OrderID)
|
||||||
retVal = mtpsapi.Err2CallbackResponse(controller.WaybillManager.OnWaybillStatusChanged(order), "mtps OnWaybillExcept")
|
retVal = mtpsapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), "mtps OnWaybillExcept")
|
||||||
}, msg.OrderID)
|
}, msg.OrderID)
|
||||||
return retVal
|
return retVal
|
||||||
}
|
}
|
||||||
@@ -80,7 +80,7 @@ func (c *WaybillController) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal
|
|||||||
globals.SugarLogger.Warnf("onWaybillMsg unknown msg:%v", msg)
|
globals.SugarLogger.Warnf("onWaybillMsg unknown msg:%v", msg)
|
||||||
return mtpsapi.SuccessResponse
|
return mtpsapi.SuccessResponse
|
||||||
}
|
}
|
||||||
return mtpsapi.Err2CallbackResponse(controller.WaybillManager.OnWaybillStatusChanged(order), order.VendorStatus)
|
return mtpsapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *WaybillController) callbackMsg2Waybill(msg *mtpsapi.CallbackOrderMsg) (retVal *model.Waybill) {
|
func (c *WaybillController) callbackMsg2Waybill(msg *mtpsapi.CallbackOrderMsg) (retVal *model.Waybill) {
|
||||||
@@ -154,7 +154,7 @@ func (c *WaybillController) calculateOrderDeliveryFee(order *model.GoodsOrder, b
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *WaybillController) calculateBillDeliveryFee(bill *model.Waybill) (deliveryFee, addFee int64) {
|
func (c *WaybillController) calculateBillDeliveryFee(bill *model.Waybill) (deliveryFee, addFee int64) {
|
||||||
order, err := controller.OrderManager.LoadOrder(bill.VendorOrderID, bill.OrderVendorID)
|
order, err := partner.CurOrderManager.LoadOrder(bill.VendorOrderID, bill.OrderVendorID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, 0
|
return 0, 0
|
||||||
}
|
}
|
||||||
@@ -162,7 +162,7 @@ func (c *WaybillController) calculateBillDeliveryFee(bill *model.Waybill) (deliv
|
|||||||
return deliveryFee, addFee
|
return deliveryFee, addFee
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeliveryPlatformHandler
|
// IDeliveryPlatformHandler
|
||||||
func (c *WaybillController) CreateWaybill(order *model.GoodsOrder) (err error) {
|
func (c *WaybillController) CreateWaybill(order *model.GoodsOrder) (err error) {
|
||||||
db := orm.NewOrm()
|
db := orm.NewOrm()
|
||||||
_, addFee, err := c.calculateOrderDeliveryFee(order, time.Now(), db)
|
_, addFee, err := c.calculateOrderDeliveryFee(order, time.Now(), db)
|
||||||
@@ -3,7 +3,7 @@ package mtps
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/controller"
|
"git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
@@ -22,7 +22,7 @@ func init() {
|
|||||||
|
|
||||||
func TestCreateWaybill(t *testing.T) {
|
func TestCreateWaybill(t *testing.T) {
|
||||||
orerID := "817109342000022"
|
orerID := "817109342000022"
|
||||||
order, _ := controller.OrderManager.LoadOrder(orerID, model.VendorIDJD)
|
order, _ := orderman.CurOrderManager.LoadOrder(orerID, model.VendorIDJD)
|
||||||
// globals.SugarLogger.Debug(order)
|
// globals.SugarLogger.Debug(order)
|
||||||
c := new(WaybillController)
|
c := new(WaybillController)
|
||||||
if err := c.CreateWaybill(order); err != nil {
|
if err := c.CreateWaybill(order); err != nil {
|
||||||
52
business/partner/partner.go
Normal file
52
business/partner/partner.go
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
package partner
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
CurOrderManager IOrderManager
|
||||||
|
)
|
||||||
|
|
||||||
|
type IOrderManager interface {
|
||||||
|
OnOrderNew(order *model.GoodsOrder, msgVendorStatus string) (err error)
|
||||||
|
OnOrderAdjust(order *model.GoodsOrder, msgVendorStatus string) (err error)
|
||||||
|
OnOrderStatusChanged(orderStatus *model.OrderStatus) (err error)
|
||||||
|
|
||||||
|
OnWaybillStatusChanged(bill *model.Waybill) (err error)
|
||||||
|
|
||||||
|
LoadOrder(vendorOrderID string, vendorID int) (order *model.GoodsOrder, err error)
|
||||||
|
UpdateWaybillVendorID(bill *model.Waybill, revertStatus bool) (err error)
|
||||||
|
}
|
||||||
|
|
||||||
|
type IPurchasePlatformHandler interface {
|
||||||
|
GetStatusFromVendorStatus(vendorStatus string) int
|
||||||
|
GetOrder(vendorOrderID string) (order *model.GoodsOrder, err error)
|
||||||
|
GetStatusActionTimeout(statusType, status int) time.Duration
|
||||||
|
|
||||||
|
AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool) (err error)
|
||||||
|
PickupGoods(order *model.GoodsOrder) (err error)
|
||||||
|
|
||||||
|
// 将订单从购物平台配送转为自送
|
||||||
|
Swtich2SelfDeliver(order *model.GoodsOrder) (err error)
|
||||||
|
|
||||||
|
// 将订单从购物平台配送转为自送后又送达
|
||||||
|
Swtich2SelfDelivered(order *model.GoodsOrder) (err error)
|
||||||
|
|
||||||
|
// 完全自送的门店表示开始配送
|
||||||
|
SelfDeliverDelievering(order *model.GoodsOrder) (err error)
|
||||||
|
|
||||||
|
// 完全自送的门店表示配送完成
|
||||||
|
SelfDeliverDelievered(order *model.GoodsOrder) (err error)
|
||||||
|
}
|
||||||
|
|
||||||
|
type IDeliveryPlatformHandler interface {
|
||||||
|
CreateWaybill(order *model.GoodsOrder) (err error)
|
||||||
|
CancelWaybill(bill *model.Waybill) (err error)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Init(curOrderManager IOrderManager) {
|
||||||
|
CurOrderManager = curOrderManager
|
||||||
|
}
|
||||||
@@ -11,10 +11,10 @@ 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/controller"
|
"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/scheduler"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
"git.rosy.net.cn/jx-callback/legacy/freshfood"
|
"git.rosy.net.cn/jx-callback/legacy/freshfood"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -102,13 +102,13 @@ func (c *OrderController) onOrderStatusMsg(msg *elmapi.CallbackOrderStatusMsg) (
|
|||||||
globals.SugarLogger.Warnf("onOrderStatusMsg elm msg:%v not handled", msg)
|
globals.SugarLogger.Warnf("onOrderStatusMsg elm msg:%v not handled", msg)
|
||||||
return elmapi.SuccessResponse
|
return elmapi.SuccessResponse
|
||||||
}
|
}
|
||||||
err := controller.OrderManager.OnOrderStatusChanged(status)
|
err := partner.CurOrderManager.OnOrderStatusChanged(status)
|
||||||
|
|
||||||
// 直接跳到拣货完成
|
// 直接跳到拣货完成
|
||||||
if msg.MsgType == elmapi.MsgTypeOrderAccepted {
|
if msg.MsgType == elmapi.MsgTypeOrderAccepted {
|
||||||
status.Status = model.OrderStatusFinishedPickup
|
status.Status = model.OrderStatusFinishedPickup
|
||||||
status.VendorStatus = fakePickedUp
|
status.VendorStatus = fakePickedUp
|
||||||
err = controller.OrderManager.OnOrderStatusChanged(status)
|
err = partner.CurOrderManager.OnOrderStatusChanged(status)
|
||||||
}
|
}
|
||||||
// if globals.HandleLegacyJxOrder && err == nil {
|
// if globals.HandleLegacyJxOrder && err == nil {
|
||||||
// c.legacyElmOrderStatusChanged(status)
|
// c.legacyElmOrderStatusChanged(status)
|
||||||
@@ -126,7 +126,7 @@ func (c *OrderController) onOrderCancelRefundMsg(msg *elmapi.CallbackOrderCancel
|
|||||||
default:
|
default:
|
||||||
status.Status = model.OrderStatusUnknown
|
status.Status = model.OrderStatusUnknown
|
||||||
}
|
}
|
||||||
return elmapi.Err2CallbackResponse(controller.OrderManager.OnOrderStatusChanged(status), status.VendorStatus)
|
return elmapi.Err2CallbackResponse(partner.CurOrderManager.OnOrderStatusChanged(status), status.VendorStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *OrderController) GetOrder(orderID string) (order *model.GoodsOrder, err error) {
|
func (c *OrderController) GetOrder(orderID string) (order *model.GoodsOrder, err error) {
|
||||||
@@ -191,8 +191,8 @@ func (c *OrderController) GetOrder(orderID string) (order *model.GoodsOrder, err
|
|||||||
order.Weight += sku.Weight * sku.Count
|
order.Weight += sku.Weight * sku.Count
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
setOrederDetailFee(result, order)
|
||||||
}
|
}
|
||||||
setOrederDetailFee(result, order)
|
|
||||||
return order, err
|
return order, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -222,7 +222,7 @@ func (c *OrderController) onOrderNew(msg map[string]interface{}) (response *elma
|
|||||||
order, err := c.GetOrder(msg["orderId"].(string))
|
order, err := c.GetOrder(msg["orderId"].(string))
|
||||||
if err == nil {
|
if err == nil {
|
||||||
order.VendorStatus = c.stateAndType2Str(order.VendorStatus, elmapi.MsgTypeOrderValid)
|
order.VendorStatus = c.stateAndType2Str(order.VendorStatus, elmapi.MsgTypeOrderValid)
|
||||||
err = controller.OrderManager.OnOrderNew(order, c.stateAndType2Str(msg["status"].(string), elmapi.MsgTypeOrderValid))
|
err = partner.CurOrderManager.OnOrderNew(order, c.stateAndType2Str(msg["status"].(string), elmapi.MsgTypeOrderValid))
|
||||||
// if globals.HandleLegacyJxOrder && err == nil {
|
// if globals.HandleLegacyJxOrder && err == nil {
|
||||||
// c.legacyWriteElmOrder(order)
|
// c.legacyWriteElmOrder(order)
|
||||||
// }
|
// }
|
||||||
@@ -244,7 +244,7 @@ func (c *OrderController) onOrderUserUrgeOrder(msg *elmapi.CallbackOrderUrgeMsg)
|
|||||||
if globals.ReallyCallPlatformAPI {
|
if globals.ReallyCallPlatformAPI {
|
||||||
freshfood.FreshFoodAPI.ELMClientUrgeOrder(msg.OrderID)
|
freshfood.FreshFoodAPI.ELMClientUrgeOrder(msg.OrderID)
|
||||||
}
|
}
|
||||||
return elmapi.Err2CallbackResponse(controller.OrderManager.OnOrderStatusChanged(status), status.VendorStatus)
|
return elmapi.Err2CallbackResponse(partner.CurOrderManager.OnOrderStatusChanged(status), status.VendorStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *OrderController) stateAndType2Str(state string, msgType int) string {
|
func (c *OrderController) stateAndType2Str(state string, msgType int) string {
|
||||||
@@ -263,7 +263,7 @@ func (c *OrderController) spliltCompositeState(compositeState string) (state str
|
|||||||
return compositeState, 0
|
return compositeState, 0
|
||||||
}
|
}
|
||||||
|
|
||||||
// PurchasePlatformHandler
|
// IPurchasePlatformHandler
|
||||||
func (c *OrderController) GetStatusFromVendorStatus(vendorStatus string) int {
|
func (c *OrderController) GetStatusFromVendorStatus(vendorStatus string) int {
|
||||||
state, _ := c.spliltCompositeState(vendorStatus)
|
state, _ := c.spliltCompositeState(vendorStatus)
|
||||||
if status, ok := VendorStatus2StatusMap[state]; ok {
|
if status, ok := VendorStatus2StatusMap[state]; ok {
|
||||||
@@ -1,14 +1,11 @@
|
|||||||
package elm
|
package elm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/astaxie/beego/orm"
|
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/legacymodel"
|
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/legacymodel"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
"github.com/astaxie/beego/orm"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 为了兼容之前的表,造出原来需要的数据
|
// 为了兼容之前的表,造出原来需要的数据
|
||||||
@@ -3,6 +3,7 @@ package elm
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
_ "git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
"git.rosy.net.cn/jx-callback/globals/db"
|
"git.rosy.net.cn/jx-callback/globals/db"
|
||||||
@@ -5,9 +5,9 @@ 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/controller"
|
|
||||||
"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"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ func (c *WaybillController) onWaybillStatusMsg(msg *elmapi.CallbackWaybillStatus
|
|||||||
// MsgTypeDeiverBySelf
|
// MsgTypeDeiverBySelf
|
||||||
order.Status = model.WaybillStatusUnknown
|
order.Status = model.WaybillStatusUnknown
|
||||||
}
|
}
|
||||||
return elmapi.Err2CallbackResponse(controller.WaybillManager.OnWaybillStatusChanged(order), order.VendorStatus)
|
return elmapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *WaybillController) callbackMsg2Waybill(msg *elmapi.CallbackWaybillStatusMsg) (retVal *model.Waybill) {
|
func (c *WaybillController) callbackMsg2Waybill(msg *elmapi.CallbackWaybillStatusMsg) (retVal *model.Waybill) {
|
||||||
@@ -6,10 +6,10 @@ import (
|
|||||||
"git.rosy.net.cn/baseapi/platformapi/autonavi"
|
"git.rosy.net.cn/baseapi/platformapi/autonavi"
|
||||||
"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/controller"
|
"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/scheduler"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
"git.rosy.net.cn/jx-callback/legacy/freshfood"
|
"git.rosy.net.cn/jx-callback/legacy/freshfood"
|
||||||
@@ -59,7 +59,7 @@ func (c *OrderController) onOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi
|
|||||||
freshfood.FreshFoodAPI.JDOrderComment(msg)
|
freshfood.FreshFoodAPI.JDOrderComment(msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
err := controller.OrderManager.OnOrderStatusChanged(status)
|
err := partner.CurOrderManager.OnOrderStatusChanged(status)
|
||||||
// if globals.HandleLegacyJxOrder && err == nil {
|
// if globals.HandleLegacyJxOrder && err == nil {
|
||||||
// c.legacyJdOrderStatusChanged(status)
|
// c.legacyJdOrderStatusChanged(status)
|
||||||
// }
|
// }
|
||||||
@@ -136,8 +136,8 @@ func (c *OrderController) GetOrder(orderID string) (order *model.GoodsOrder, err
|
|||||||
order.SalePrice += sku.SalePrice * int64(sku.Count)
|
order.SalePrice += sku.SalePrice * int64(sku.Count)
|
||||||
order.Weight += sku.Weight * sku.Count
|
order.Weight += sku.Weight * sku.Count
|
||||||
}
|
}
|
||||||
|
setOrederDetailFee(result, order)
|
||||||
}
|
}
|
||||||
setOrederDetailFee(result, order)
|
|
||||||
return order, err
|
return order, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,7 +151,7 @@ func setOrederDetailFee(result map[string]interface{}, order *model.GoodsOrder)
|
|||||||
func (c *OrderController) onOrderNew(msg *jdapi.CallbackOrderMsg) (response *jdapi.CallbackResponse) {
|
func (c *OrderController) onOrderNew(msg *jdapi.CallbackOrderMsg) (response *jdapi.CallbackResponse) {
|
||||||
order, err := c.GetOrder(msg.BillID)
|
order, err := c.GetOrder(msg.BillID)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
err = controller.OrderManager.OnOrderNew(order, msg.StatusID)
|
err = partner.CurOrderManager.OnOrderNew(order, msg.StatusID)
|
||||||
// if err == nil {
|
// if err == nil {
|
||||||
// c.legacyWriteJdOrder(order, false)
|
// c.legacyWriteJdOrder(order, false)
|
||||||
// }
|
// }
|
||||||
@@ -162,7 +162,7 @@ func (c *OrderController) onOrderNew(msg *jdapi.CallbackOrderMsg) (response *jda
|
|||||||
func (c *OrderController) onOrderAdjust(msg *jdapi.CallbackOrderMsg) *jdapi.CallbackResponse {
|
func (c *OrderController) onOrderAdjust(msg *jdapi.CallbackOrderMsg) *jdapi.CallbackResponse {
|
||||||
order, err := c.GetOrder(msg.BillID)
|
order, err := c.GetOrder(msg.BillID)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
err = controller.OrderManager.OnOrderAdjust(order, msg.StatusID)
|
err = partner.CurOrderManager.OnOrderAdjust(order, msg.StatusID)
|
||||||
// if globals.HandleLegacyJxOrder && err == nil {
|
// if globals.HandleLegacyJxOrder && err == nil {
|
||||||
// c.legacyWriteJdOrder(order, true)
|
// c.legacyWriteJdOrder(order, true)
|
||||||
// }
|
// }
|
||||||
@@ -185,7 +185,7 @@ func (c *OrderController) callbackMsg2Status(msg *jdapi.CallbackOrderMsg) *model
|
|||||||
return orderStatus
|
return orderStatus
|
||||||
}
|
}
|
||||||
|
|
||||||
// PurchasePlatformHandler
|
// IPurchasePlatformHandler
|
||||||
func (c *OrderController) GetStatusFromVendorStatus(vendorStatus string) int {
|
func (c *OrderController) GetStatusFromVendorStatus(vendorStatus string) int {
|
||||||
if status, ok := VendorStatus2StatusMap[vendorStatus]; ok {
|
if status, ok := VendorStatus2StatusMap[vendorStatus]; ok {
|
||||||
return status
|
return status
|
||||||
@@ -3,7 +3,7 @@ package jd
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/controller"
|
"git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
@@ -22,7 +22,7 @@ func init() {
|
|||||||
|
|
||||||
func TestSwitch2SelfDeliver(t *testing.T) {
|
func TestSwitch2SelfDeliver(t *testing.T) {
|
||||||
orderID := "817540316000041"
|
orderID := "817540316000041"
|
||||||
if order, err := controller.OrderManager.LoadOrder(orderID, model.VendorIDJD); err == nil {
|
if order, err := orderman.CurOrderManager.LoadOrder(orderID, model.VendorIDJD); err == nil {
|
||||||
// globals.SugarLogger.Debug(order)
|
// globals.SugarLogger.Debug(order)
|
||||||
c := new(OrderController)
|
c := new(OrderController)
|
||||||
if err = c.Swtich2SelfDeliver(order); err == nil {
|
if err = c.Swtich2SelfDeliver(order); err == nil {
|
||||||
@@ -34,9 +34,9 @@ func TestSwitch2SelfDeliver(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Test_GetOrder(t *testing.T) {
|
func TestGetOrder(t *testing.T) {
|
||||||
_, err := new(OrderController).GetOrder("815536199000222")
|
_, err := new(OrderController).GetOrder("815536199000222")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err.Error())
|
t.Fatal(err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,9 +3,9 @@ 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/controller"
|
|
||||||
"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"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ func (c *WaybillController) onWaybillMsg(msg *jdapi.CallbackDeliveryStatusMsg) (
|
|||||||
default:
|
default:
|
||||||
order.Status = model.WaybillStatusUnknown
|
order.Status = model.WaybillStatusUnknown
|
||||||
}
|
}
|
||||||
return jdapi.Err2CallbackResponse(controller.WaybillManager.OnWaybillStatusChanged(order), order.VendorStatus)
|
return jdapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *WaybillController) callbackMsg2Waybill(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *model.Waybill) {
|
func (c *WaybillController) callbackMsg2Waybill(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *model.Waybill) {
|
||||||
@@ -2,7 +2,7 @@ package controllers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/controller/dada"
|
"git.rosy.net.cn/jx-callback/business/partner/delivery/dada"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
"git.rosy.net.cn/jx-callback/legacy/dada/controller"
|
"git.rosy.net.cn/jx-callback/legacy/dada/controller"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package controllers
|
|||||||
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/controller/elm"
|
"git.rosy.net.cn/jx-callback/business/partner/purchase/elm"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
"git.rosy.net.cn/jx-callback/legacy/elm/controller"
|
"git.rosy.net.cn/jx-callback/legacy/elm/controller"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package controllers
|
|||||||
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/controller/jd"
|
"git.rosy.net.cn/jx-callback/business/partner/purchase/jd"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
"git.rosy.net.cn/jx-callback/legacy/jd/controller"
|
"git.rosy.net.cn/jx-callback/legacy/jd/controller"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package controllers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/controller/mtps"
|
"git.rosy.net.cn/jx-callback/business/partner/delivery/mtps"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
"git.rosy.net.cn/jx-callback/legacy/mtps/controller"
|
"git.rosy.net.cn/jx-callback/legacy/mtps/controller"
|
||||||
|
|||||||
5
main.go
5
main.go
@@ -5,7 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
bzcon "git.rosy.net.cn/jx-callback/business/controller"
|
"git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
"git.rosy.net.cn/jx-callback/globals/db"
|
"git.rosy.net.cn/jx-callback/globals/db"
|
||||||
@@ -86,9 +86,8 @@ func main() {
|
|||||||
if globals.CallLegacyMsgHandler {
|
if globals.CallLegacyMsgHandler {
|
||||||
controller.InitOrder()
|
controller.InitOrder()
|
||||||
}
|
}
|
||||||
|
orderman.LoadPendingOrders()
|
||||||
}
|
}
|
||||||
bzcon.LoadPendingOrders()
|
|
||||||
|
|
||||||
if beego.BConfig.RunMode == "dev" {
|
if beego.BConfig.RunMode == "dev" {
|
||||||
beego.BConfig.WebConfig.DirectoryIndex = true
|
beego.BConfig.WebConfig.DirectoryIndex = true
|
||||||
beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger"
|
beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger"
|
||||||
|
|||||||
Reference in New Issue
Block a user