diff --git a/business/model/const.go b/business/model/const.go index e33f4223c..acbc84fdb 100644 --- a/business/model/const.go +++ b/business/model/const.go @@ -49,6 +49,7 @@ var ( } OrderStatusName = map[int]string{ + OrderStatusWait4Pay: "待付款", OrderStatusUnlocked: "解锁", OrderStatusLocked: "锁定", OrderStatusApplyUrgeOrder: "催单", @@ -57,7 +58,6 @@ var ( OrderStatusUnknown: "一般事件", - OrderStatusWait4Pay: "待付款", OrderStatusNew: "新订单", OrderStatusAdjust: "调整单", OrderStatusAccepted: "已接单", @@ -116,6 +116,7 @@ const ( ) const ( + OrderStatusWait4Pay = -30 // 下单待支付,微盟在这个时间发新订单事件 OrderStatusUnlocked = -25 OrderStatusLocked = -20 OrderStatusApplyUrgeOrder = -15 @@ -124,7 +125,6 @@ const ( OrderStatusUnknown = 0 - OrderStatusWait4Pay = 3 // 下单待支付,微盟在这个时间发新订单事件 OrderStatusNew = 5 // 新订单 OrderStatusAdjust = 8 // 订单调整 OrderStatusAccepted = 10 // 已经接单,也即待出库,待拣货 diff --git a/business/partner/purchase/weimob/wsc/order.go b/business/partner/purchase/weimob/wsc/order.go index bb83c6f10..30ceb3605 100644 --- a/business/partner/purchase/weimob/wsc/order.go +++ b/business/partner/purchase/weimob/wsc/order.go @@ -41,24 +41,28 @@ var ( ) func (p *PurchaseHandler) onOrderMsg(msg *weimobapi.CallbackMsg) (response *weimobapi.CallbackResponse) { - if weimobapi.MsgEventCreateOrder == msg.Event { - order, err := p.GetOrder(utils.Int64ToStr(msg.OrderNo)) + var ( + err error + status *model.OrderStatus + orderMapData map[string]interface{} + ) + if weimobapi.MsgEventCreateOrder == msg.Event || weimobapi.MsgEventOrderStatusChange == msg.Event { + orderMapData, err = api.WeimobAPI.QueryOrderDetail(msg.OrderNo, false) if err == nil { - order.StatusTime = msg.StatusTime - err = partner.CurOrderManager.OnOrderNew(order, order.VendorStatus) + status = p.callbackMsg2Status(msg, orderMapData) + if status.Status == model.OrderStatusNew { + order := p.Map2Order(orderMapData) + order.StatusTime = msg.StatusTime + err = partner.CurOrderManager.OnOrderNew(order, order.VendorStatus) + } else { + err = partner.CurOrderManager.OnOrderStatusChanged(status) + } } - return weimobapi.Err2CallbackResponse(err, "") - } else { - status, err := p.callbackMsg2Status(msg) - if status != nil { - err = partner.CurOrderManager.OnOrderStatusChanged(status) - } - response = weimobapi.Err2CallbackResponse(err, "") } - return response + return weimobapi.Err2CallbackResponse(err, "") } -func (p *PurchaseHandler) callbackMsg2Status(msg *weimobapi.CallbackMsg) (orderStatus *model.OrderStatus, err error) { +func (p *PurchaseHandler) callbackMsg2Status(msg *weimobapi.CallbackMsg, orderMapData map[string]interface{}) (orderStatus *model.OrderStatus) { orderID := utils.Int64ToStr(msg.OrderNo) var vendorStatus string if msg.IsFake { @@ -67,31 +71,25 @@ func (p *PurchaseHandler) callbackMsg2Status(msg *weimobapi.CallbackMsg) (orderS if msg.Event == weimobapi.MsgEventCreateRights { vendorStatus = msg.Event } else { - vendorStatus, err = p.getOrderStatus(msg.OrderNo) + vendorStatus = p.getOrderStatus(orderMapData) } } - if err == nil { - orderStatus = &model.OrderStatus{ - VendorOrderID: orderID, - VendorID: model.VendorIDWSC, - OrderType: model.OrderTypeOrder, - RefVendorOrderID: orderID, - RefVendorID: model.VendorIDWSC, - VendorStatus: vendorStatus, - Status: p.GetStatusFromVendorStatus(vendorStatus), - StatusTime: msg.StatusTime, - Remark: "", - } + orderStatus = &model.OrderStatus{ + VendorOrderID: orderID, + VendorID: model.VendorIDWSC, + OrderType: model.OrderTypeOrder, + RefVendorOrderID: orderID, + RefVendorID: model.VendorIDWSC, + VendorStatus: vendorStatus, + Status: p.GetStatusFromVendorStatus(vendorStatus), + StatusTime: msg.StatusTime, + Remark: "", } - return orderStatus, err + return orderStatus } -func (p *PurchaseHandler) getOrderStatus(orderNo int64) (status string, err error) { - result, err := api.WeimobAPI.QueryOrderDetail(orderNo, false) - if err != nil { - return "", err - } - return utils.Int64ToStr(utils.MustInterface2Int64(result["orderStatus"])), nil +func (p *PurchaseHandler) getOrderStatus(orderMapData map[string]interface{}) (status string) { + return utils.Int64ToStr(utils.MustInterface2Int64(orderMapData["orderStatus"])) } func (p *PurchaseHandler) GetStatusFromVendorStatus(vendorStatus string) int {