- save real order status when new order msg came.

This commit is contained in:
gazebo
2018-07-22 21:57:56 +08:00
parent 7ae0944fc9
commit 52ac5ca64a
5 changed files with 70 additions and 30 deletions

View File

@@ -4,12 +4,11 @@ import (
"fmt"
"time"
"git.rosy.net.cn/jx-callback/business/scheduler"
"git.rosy.net.cn/baseapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils/weixinmsg"
"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"
)
@@ -39,9 +38,14 @@ func (c *OrderController) LoadPendingOrders() []*model.GoodsOrder {
return orders
}
func (c *OrderController) OnOrderNew(order *model.GoodsOrder) (err error) {
// msgVendorStatus的意思是事件本身的类型类似有时收到NewOrder事件去取订单状态不一定就是New的
// OnOrderAdjust也类似而OrderStatus要记录的是消息所以添加这个
func (c *OrderController) OnOrderNew(order *model.GoodsOrder, msgVendorStatus string) (err error) {
db := orm.NewOrm()
isDuplicated, err := addOrderOrWaybillStatus(model.Order2Status(order), db)
status := model.Order2Status(order)
status.Status = model.OrderStatusNew
status.VendorStatus = msgVendorStatus
isDuplicated, err := addOrderOrWaybillStatus(status, db)
if err == nil && !isDuplicated {
if err = c.saveOrder(order, false, db); err == nil {
err = scheduler.CurrentScheduler.OnOrderNew(order)
@@ -52,9 +56,11 @@ func (c *OrderController) OnOrderNew(order *model.GoodsOrder) (err error) {
}
// todo 调整单的处理可能还需要再细化一点,当前只是简单的删除重建
func (c *OrderController) OnOrderAdjust(order *model.GoodsOrder) (err error) {
func (c *OrderController) OnOrderAdjust(order *model.GoodsOrder, msgVendorStatus string) (err error) {
db := orm.NewOrm()
status := model.Order2Status(order)
status.Status = model.OrderStatusAdjust
status.VendorStatus = msgVendorStatus
isDuplicated, err := addOrderOrWaybillStatus(status, db)
if err == nil && !isDuplicated {
err = utils.CallFuncLogError(func() error {
@@ -72,7 +78,8 @@ func (c *OrderController) OnOrderAdjust(order *model.GoodsOrder) (err error) {
return err
}
if err = c.saveOrder(order, true, db); err == nil {
err = scheduler.CurrentScheduler.OnOrderStatusChanged(status)
// 因为订单调度器需要的是真实状态所以用order的状态
err = scheduler.CurrentScheduler.OnOrderStatusChanged(model.Order2Status(order))
}
}
return err