- refactor file structure.

This commit is contained in:
gazebo
2018-08-17 13:59:15 +08:00
parent d872d4d0ec
commit d40186e930
25 changed files with 153 additions and 150 deletions

View File

@@ -1,4 +1,4 @@
package controller
package orderman
import (
"fmt"
@@ -6,22 +6,14 @@ import (
"git.rosy.net.cn/baseapi"
"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/model"
"git.rosy.net.cn/jx-callback/business/scheduler"
"git.rosy.net.cn/jx-callback/globals"
"github.com/astaxie/beego/orm"
)
// 所有公共接口调用前要求在order里或status中设置合适的Status
type OrderController struct {
}
func NewOrderManager() *OrderController {
return &OrderController{}
}
func (c *OrderController) LoadPendingOrders() []*model.GoodsOrder {
func (c *OrderManager) LoadPendingOrders() []*model.GoodsOrder {
db := orm.NewOrm()
var orders []*model.GoodsOrder
tillTime := time.Now().Add(-pendingOrderGapMax)
@@ -46,7 +38,7 @@ func (c *OrderController) LoadPendingOrders() []*model.GoodsOrder {
// msgVendorStatus的意思是事件本身的类型类似有时收到NewOrder事件去取订单状态不一定就是New的
// 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
db := orm.NewOrm()
if order.Status == model.OrderStatusUnknown {
@@ -65,7 +57,7 @@ func (c *OrderController) OnOrderNew(order *model.GoodsOrder, msgVendorStatus st
}
// 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
db := orm.NewOrm()
if order.Status == model.OrderStatusUnknown {
@@ -99,7 +91,7 @@ func (c *OrderController) OnOrderAdjust(order *model.GoodsOrder, msgVendorStatus
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)
if err == nil && !isDuplicated {
err = scheduler.CurrentScheduler.OnOrderStatusChanged(orderStatus, false)
@@ -111,7 +103,7 @@ func (c *OrderController) OnOrderStatusChanged(orderStatus *model.OrderStatus) (
}
// 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信息错误
c.updateOrderOtherInfo(order, db)
order.ID = 0
@@ -170,7 +162,7 @@ func (c *OrderController) saveOrder(order *model.GoodsOrder, isAdjust bool, db o
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)
if jxStoreID == 0 {
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
}
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
if order.VendorID == model.VendorIDJD {
sql = `
@@ -274,7 +266,7 @@ func (c *OrderController) updateOrderOtherInfo(order *model.GoodsOrder, db orm.O
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 {
db = orm.NewOrm()
}
@@ -329,7 +321,7 @@ func (c *OrderController) addOrderStatus(orderStatus *model.OrderStatus, db orm.
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()
order = &model.GoodsOrder{
VendorOrderID: vendorOrderID,
@@ -348,7 +340,7 @@ func (c *OrderController) LoadOrder(vendorOrderID string, vendorID int) (order *
}
//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)
db := orm.NewOrm()
params := orm.Params{

View File

@@ -1,4 +1,4 @@
package controller
package orderman
import (
"strings"
@@ -124,7 +124,7 @@ func legacyMapWaybillStatus(status int) (retVal int8) {
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{}
businessTags := ""
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
}
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)
if orderStatus != JX_STATUS_UNKNOWN {
if status.VendorID == model.VendorIDELM {
@@ -268,7 +268,7 @@ func (c *OrderController) legacyJxOrderStatusChanged(status *model.OrderStatus,
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)
if deliveryStatus != JX_STATUS_UNKNOWN {
if db == nil {

View File

@@ -1,14 +1,15 @@
package controller
package orderman
import (
"sort"
"time"
"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/model"
"git.rosy.net.cn/jx-callback/business/scheduler"
_ "git.rosy.net.cn/jx-callback/business/scheduler/defsch" // 导入缺省订单调度器
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals"
"github.com/astaxie/beego/orm"
)
@@ -20,10 +21,17 @@ const (
)
var (
OrderManager *OrderController
WaybillManager *WaybillController
CurOrderManager *OrderManager
)
// 所有公共接口调用前要求在order里或status中设置合适的Status
type OrderManager struct {
}
func NewOrderManager() *OrderManager {
return &OrderManager{}
}
type StatusTimer interface {
GetStatusTime() time.Time
}
@@ -45,9 +53,8 @@ func (s StatusTimerSlice) Swap(i, j int) {
}
func init() {
OrderManager = NewOrderManager()
WaybillManager = NewWaybillManager()
scheduler.CurrentScheduler.RegisterOrderManager(OrderManager)
CurOrderManager = NewOrderManager()
partner.Init(CurOrderManager)
}
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 最好还是改成全事件回放算了
func LoadPendingOrders() {
orders := OrderManager.LoadPendingOrders()
orders := CurOrderManager.LoadPendingOrders()
globals.SugarLogger.Infof("LoadPendingOrders orders count:%d", len(orders))
ordersCount := len(orders)
if ordersCount > 0 {
bills := WaybillManager.LoadPendingWaybills()
bills := CurOrderManager.LoadPendingWaybills()
globals.SugarLogger.Infof("LoadPendingOrders waybills count:%d", len(bills))
var sortOrders StatusTimerSlice
for _, order := range orders {

View File

@@ -1,24 +1,16 @@
package controller
package orderman
import (
"time"
"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/scheduler"
"git.rosy.net.cn/jx-callback/globals"
"github.com/astaxie/beego/orm"
)
// 所有公共接口调用前要求在order里或status中设置合适的Status
type WaybillController struct {
}
func NewWaybillManager() *WaybillController {
return &WaybillController{}
}
func (w *WaybillController) LoadPendingWaybills() []*model.Waybill {
func (w *OrderManager) LoadPendingWaybills() []*model.Waybill {
db := orm.NewOrm()
var bills []*model.Waybill
tillTime := time.Now().Add(-pendingOrderGapMax)
@@ -39,7 +31,7 @@ func (w *WaybillController) LoadPendingWaybills() []*model.Waybill {
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)
isDuplicated, err = addOrderOrWaybillStatus(model.Waybill2Status(bill2), db)
if err == nil && !isDuplicated {
@@ -71,7 +63,7 @@ func (w *WaybillController) onWaybillNew(bill2 *model.Waybill, db orm.Ormer) (is
return isDuplicated, err
}
func (w *WaybillController) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
var isDuplicated bool
db := orm.NewOrm()
if bill.Status == model.WaybillStatusNew {
@@ -96,7 +88,7 @@ func (w *WaybillController) OnWaybillStatusChanged(bill *model.Waybill) (err 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)
isDuplicated, err = addOrderOrWaybillStatus(waybillStatus, db)
if err == nil && !isDuplicated && waybillStatus.Status > model.WaybillStatusUnknown { // todo 这里应该和addOrderStatus一样的改法状态不能回绕

View File

@@ -2,16 +2,16 @@ package defsch
import (
"fmt"
"math/rand"
"time"
"math/rand"
"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/weixinmsg"
"git.rosy.net.cn/jx-callback/business/legacymodel"
"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"
"github.com/astaxie/beego/orm"
)
@@ -503,7 +503,7 @@ func (s *DefScheduler) loadSavedOrderFromMap(status *model.OrderStatus, isAutoLo
} else {
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)
} else {
realSavedInfo.SetOrder(&model.GoodsOrder{
@@ -661,7 +661,7 @@ func (s *DefScheduler) updateOrderByBill(order *model.GoodsOrder, bill *model.Wa
if bill.WaybillVendorID == model.VendorIDUnknown {
bill.VendorWaybillID = ""
}
s.CurOrderManager.UpdateWaybillVendorID(bill, revertStatus)
partner.CurOrderManager.UpdateWaybillVendorID(bill, revertStatus)
order.WaybillVendorID = bill.WaybillVendorID
order.VendorWaybillID = bill.VendorWaybillID
if revertStatus {

View File

@@ -7,6 +7,7 @@ import (
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals"
)
@@ -42,47 +43,14 @@ var (
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 {
Handler DeliveryPlatformHandler
Handler partner.IDeliveryPlatformHandler
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 {
RegisterOrderManager(handler OrderManager)
RegisterPurchasePlatform(vendorID int, handler PurchasePlatformHandler)
RegisterDeliveryPlatform(vendorID int, handler DeliveryPlatformHandler, isUse4CreateWaybill bool)
RegisterPurchasePlatform(vendorID int, handler partner.IPurchasePlatformHandler)
RegisterDeliveryPlatform(vendorID int, handler partner.IDeliveryPlatformHandler, isUse4CreateWaybill bool)
// 以下是订单
OnOrderNew(order *model.GoodsOrder, isPending bool) (err error)
@@ -93,22 +61,17 @@ type Scheduler interface {
}
type BaseScheduler struct {
CurOrderManager OrderManager
PurchasePlatformHandlers map[int]PurchasePlatformHandler
PurchasePlatformHandlers map[int]partner.IPurchasePlatformHandler
DeliveryPlatformHandlers map[int]*DeliveryPlatformHandlerInfo
IsReallyCallPlatformAPI bool
}
func (c *BaseScheduler) Init() {
c.PurchasePlatformHandlers = make(map[int]PurchasePlatformHandler)
c.PurchasePlatformHandlers = make(map[int]partner.IPurchasePlatformHandler)
c.DeliveryPlatformHandlers = make(map[int]*DeliveryPlatformHandlerInfo)
}
func (c *BaseScheduler) RegisterOrderManager(handler OrderManager) {
c.CurOrderManager = handler
}
func (c *BaseScheduler) RegisterPurchasePlatform(vendorID int, handler PurchasePlatformHandler) {
func (c *BaseScheduler) RegisterPurchasePlatform(vendorID int, handler partner.IPurchasePlatformHandler) {
if !(vendorID >= model.VendorIDPurchaseBegin && vendorID <= model.VendorIDPurchaseEnd) {
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
}
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) {
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]
}

View File

@@ -6,10 +6,10 @@ import (
"git.rosy.net.cn/baseapi/platformapi/dadaapi"
"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/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/api"
"github.com/astaxie/beego/orm"
@@ -58,7 +58,7 @@ func (c *WaybillController) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dada
default:
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) {
@@ -81,7 +81,7 @@ func (c *WaybillController) callbackMsg2Waybill(msg *dadaapi.CallbackMsg) (retVa
return retVal
}
// DeliveryPlatformHandler
// IDeliveryPlatformHandler
func (c *WaybillController) CreateWaybill(order *model.GoodsOrder) (err error) {
billParams := &dadaapi.OperateOrderRequiredParams{
ShopNo: utils.Int2Str(order.StoreID), // 当前达达的门店号与京西是一样的

View File

@@ -4,7 +4,7 @@ import (
"testing"
"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/globals"
"git.rosy.net.cn/jx-callback/globals/api"
@@ -23,7 +23,7 @@ func init() {
func TestCreateWaybill(t *testing.T) {
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)
c := new(WaybillController)
if err = c.CreateWaybill(order); err == nil {

View File

@@ -8,11 +8,11 @@ import (
"git.rosy.net.cn/baseapi/platformapi/mtpsapi"
"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/legacymodel"
"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/api"
"github.com/astaxie/beego"
@@ -57,7 +57,7 @@ func (c *WaybillController) OnWaybillExcept(msg *mtpsapi.CallbackOrderExceptionM
StatusTime: utils.Timestamp2Time(msg.Timestamp),
}
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)
return retVal
}
@@ -80,7 +80,7 @@ func (c *WaybillController) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal
globals.SugarLogger.Warnf("onWaybillMsg unknown msg:%v", msg)
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) {
@@ -154,7 +154,7 @@ func (c *WaybillController) calculateOrderDeliveryFee(order *model.GoodsOrder, b
}
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 {
return 0, 0
}
@@ -162,7 +162,7 @@ func (c *WaybillController) calculateBillDeliveryFee(bill *model.Waybill) (deliv
return deliveryFee, addFee
}
// DeliveryPlatformHandler
// IDeliveryPlatformHandler
func (c *WaybillController) CreateWaybill(order *model.GoodsOrder) (err error) {
db := orm.NewOrm()
_, addFee, err := c.calculateOrderDeliveryFee(order, time.Now(), db)

View File

@@ -3,7 +3,7 @@ package mtps
import (
"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/globals"
"git.rosy.net.cn/jx-callback/globals/api"
@@ -22,7 +22,7 @@ func init() {
func TestCreateWaybill(t *testing.T) {
orerID := "817109342000022"
order, _ := controller.OrderManager.LoadOrder(orerID, model.VendorIDJD)
order, _ := orderman.CurOrderManager.LoadOrder(orerID, model.VendorIDJD)
// globals.SugarLogger.Debug(order)
c := new(WaybillController)
if err := c.CreateWaybill(order); err != nil {

View 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
}

View File

@@ -11,10 +11,10 @@ import (
"git.rosy.net.cn/baseapi/platformapi/elmapi"
"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/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"
)
@@ -102,13 +102,13 @@ func (c *OrderController) onOrderStatusMsg(msg *elmapi.CallbackOrderStatusMsg) (
globals.SugarLogger.Warnf("onOrderStatusMsg elm msg:%v not handled", msg)
return elmapi.SuccessResponse
}
err := controller.OrderManager.OnOrderStatusChanged(status)
err := partner.CurOrderManager.OnOrderStatusChanged(status)
// 直接跳到拣货完成
if msg.MsgType == elmapi.MsgTypeOrderAccepted {
status.Status = model.OrderStatusFinishedPickup
status.VendorStatus = fakePickedUp
err = controller.OrderManager.OnOrderStatusChanged(status)
err = partner.CurOrderManager.OnOrderStatusChanged(status)
}
// if globals.HandleLegacyJxOrder && err == nil {
// c.legacyElmOrderStatusChanged(status)
@@ -126,7 +126,7 @@ func (c *OrderController) onOrderCancelRefundMsg(msg *elmapi.CallbackOrderCancel
default:
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) {
@@ -191,8 +191,8 @@ func (c *OrderController) GetOrder(orderID string) (order *model.GoodsOrder, err
order.Weight += sku.Weight * sku.Count
}
}
}
setOrederDetailFee(result, order)
}
return order, err
}
@@ -222,7 +222,7 @@ func (c *OrderController) onOrderNew(msg map[string]interface{}) (response *elma
order, err := c.GetOrder(msg["orderId"].(string))
if err == nil {
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 {
// c.legacyWriteElmOrder(order)
// }
@@ -244,7 +244,7 @@ func (c *OrderController) onOrderUserUrgeOrder(msg *elmapi.CallbackOrderUrgeMsg)
if globals.ReallyCallPlatformAPI {
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 {
@@ -263,7 +263,7 @@ func (c *OrderController) spliltCompositeState(compositeState string) (state str
return compositeState, 0
}
// PurchasePlatformHandler
// IPurchasePlatformHandler
func (c *OrderController) GetStatusFromVendorStatus(vendorStatus string) int {
state, _ := c.spliltCompositeState(vendorStatus)
if status, ok := VendorStatus2StatusMap[state]; ok {

View File

@@ -1,14 +1,11 @@
package elm
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/jx-callback/business/legacymodel"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/globals"
"github.com/astaxie/beego/orm"
)
// 为了兼容之前的表,造出原来需要的数据

View File

@@ -3,6 +3,7 @@ package elm
import (
"testing"
_ "git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api"
"git.rosy.net.cn/jx-callback/globals/db"

View File

@@ -5,9 +5,9 @@ import (
"git.rosy.net.cn/baseapi/platformapi/elmapi"
"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/model"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals/api"
)
@@ -48,7 +48,7 @@ func (c *WaybillController) onWaybillStatusMsg(msg *elmapi.CallbackWaybillStatus
// MsgTypeDeiverBySelf
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) {

View File

@@ -6,10 +6,10 @@ import (
"git.rosy.net.cn/baseapi/platformapi/autonavi"
"git.rosy.net.cn/baseapi/platformapi/jdapi"
"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/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/api"
"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)
}
}
err := controller.OrderManager.OnOrderStatusChanged(status)
err := partner.CurOrderManager.OnOrderStatusChanged(status)
// if globals.HandleLegacyJxOrder && err == nil {
// 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.Weight += sku.Weight * sku.Count
}
}
setOrederDetailFee(result, order)
}
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) {
order, err := c.GetOrder(msg.BillID)
if err == nil {
err = controller.OrderManager.OnOrderNew(order, msg.StatusID)
err = partner.CurOrderManager.OnOrderNew(order, msg.StatusID)
// if err == nil {
// 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 {
order, err := c.GetOrder(msg.BillID)
if err == nil {
err = controller.OrderManager.OnOrderAdjust(order, msg.StatusID)
err = partner.CurOrderManager.OnOrderAdjust(order, msg.StatusID)
// if globals.HandleLegacyJxOrder && err == nil {
// c.legacyWriteJdOrder(order, true)
// }
@@ -185,7 +185,7 @@ func (c *OrderController) callbackMsg2Status(msg *jdapi.CallbackOrderMsg) *model
return orderStatus
}
// PurchasePlatformHandler
// IPurchasePlatformHandler
func (c *OrderController) GetStatusFromVendorStatus(vendorStatus string) int {
if status, ok := VendorStatus2StatusMap[vendorStatus]; ok {
return status

View File

@@ -3,7 +3,7 @@ package jd
import (
"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/globals"
"git.rosy.net.cn/jx-callback/globals/api"
@@ -22,7 +22,7 @@ func init() {
func TestSwitch2SelfDeliver(t *testing.T) {
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)
c := new(OrderController)
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")
if err != nil {
panic(err.Error())
t.Fatal(err.Error())
}
}

View File

@@ -3,9 +3,9 @@ package jd
import (
"git.rosy.net.cn/baseapi/platformapi/jdapi"
"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/model"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals/api"
)
@@ -46,7 +46,7 @@ func (c *WaybillController) onWaybillMsg(msg *jdapi.CallbackDeliveryStatusMsg) (
default:
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) {

View File

@@ -2,7 +2,7 @@ package controllers
import (
"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/api"
"git.rosy.net.cn/jx-callback/legacy/dada/controller"

View File

@@ -3,7 +3,7 @@ package controllers
import (
"git.rosy.net.cn/baseapi/platformapi/elmapi"
"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/api"
"git.rosy.net.cn/jx-callback/legacy/elm/controller"

View File

@@ -3,7 +3,7 @@ package controllers
import (
"git.rosy.net.cn/baseapi/platformapi/jdapi"
"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/api"
"git.rosy.net.cn/jx-callback/legacy/jd/controller"

View File

@@ -2,7 +2,7 @@ package controllers
import (
"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/api"
"git.rosy.net.cn/jx-callback/legacy/mtps/controller"

View File

@@ -5,7 +5,7 @@ import (
"fmt"
"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/api"
"git.rosy.net.cn/jx-callback/globals/db"
@@ -86,9 +86,8 @@ func main() {
if globals.CallLegacyMsgHandler {
controller.InitOrder()
}
orderman.LoadPendingOrders()
}
bzcon.LoadPendingOrders()
if beego.BConfig.RunMode == "dev" {
beego.BConfig.WebConfig.DirectoryIndex = true
beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger"