diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 1c0b76a4a..ba56ab85a 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -51,7 +51,7 @@ func (c *OrderManager) LoadPendingOrders() []*model.GoodsOrder { // msgVendorStatus的意思是事件本身的类型,类似有时收到NewOrder事件去取,订单状态不一定就是New的 // OnOrderAdjust也类似,而OrderStatus要记录的是消息,所以添加这个 -func (c *OrderManager) OnOrderNew(order *model.GoodsOrder, msgVendorStatus string) (err error) { +func (c *OrderManager) OnOrderNew(order *model.GoodsOrder, orderStatus *model.OrderStatus) (err error) { if order.ConsigneeMobile2 == "" && !jxutils.IsMobileFake(order.ConsigneeMobile) { order.ConsigneeMobile2 = order.ConsigneeMobile } @@ -67,12 +67,7 @@ func (c *OrderManager) OnOrderNew(order *model.GoodsOrder, msgVendorStatus strin if order.Status == model.OrderStatusUnknown { order.Status = model.OrderStatusNew } - status := model.Order2Status(order) - if status.Status > model.OrderStatusNew { - status.Status = model.OrderStatusNew - } - status.VendorStatus = msgVendorStatus - isDuplicated, err := addOrderOrWaybillStatus(status, db) + isDuplicated, err := addOrderOrWaybillStatus(orderStatus, db) if err == nil && !isDuplicated { isDuplicated, err = c.SaveOrder(order, false, db) } @@ -88,7 +83,7 @@ func (c *OrderManager) OnOrderNew(order *model.GoodsOrder, msgVendorStatus strin } // todo 调整单的处理可能还需要再细化一点,当前只是简单的删除重建 -func (c *OrderManager) OnOrderAdjust(order *model.GoodsOrder, msgVendorStatus string) (err error) { +func (c *OrderManager) OnOrderAdjust(order *model.GoodsOrder, orderStatus *model.OrderStatus) (err error) { if order.ConsigneeMobile2 == "" && !jxutils.IsMobileFake(order.ConsigneeMobile) { order.ConsigneeMobile2 = order.ConsigneeMobile } @@ -104,10 +99,7 @@ func (c *OrderManager) OnOrderAdjust(order *model.GoodsOrder, msgVendorStatus st if order.Status == model.OrderStatusUnknown { order.Status = model.OrderStatusAccepted } - status := model.Order2Status(order) - status.Status = model.OrderStatusAdjust - status.VendorStatus = msgVendorStatus - isDuplicated, err := addOrderOrWaybillStatus(status, db) + isDuplicated, err := addOrderOrWaybillStatus(orderStatus, db) if err == nil && !isDuplicated { err = utils.CallFuncLogError(func() error { _, err = db.Db.Raw("DELETE FROM order_sku WHERE vendor_order_id = ? AND vendor_id = ?", order.VendorOrderID, order.VendorID).Exec() @@ -131,7 +123,7 @@ func (c *OrderManager) OnOrderAdjust(order *model.GoodsOrder, msgVendorStatus st msghub.OnNewOrder(order) // 因为订单调度器需要的是真实状态,所以用order的状态 _ = scheduler.CurrentScheduler.OnOrderNew(order, false) - _ = scheduler.CurrentScheduler.OnOrderStatusChanged(order, model.Order2Status(order), false) + _ = scheduler.CurrentScheduler.OnOrderStatusChanged(order, orderStatus, false) } } else { dao.Rollback(db) diff --git a/business/partner/partner.go b/business/partner/partner.go index fa267577a..a4f5a76b9 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -117,8 +117,8 @@ var ( type IOrderManager interface { SaveOrder(order *model.GoodsOrder, isAdjust bool, db *dao.DaoDB) (isDuplicated bool, err error) - OnOrderNew(order *model.GoodsOrder, msgVendorStatus string) (err error) - OnOrderAdjust(order *model.GoodsOrder, msgVendorStatus string) (err error) + OnOrderNew(order *model.GoodsOrder, orderStatus *model.OrderStatus) (err error) + OnOrderAdjust(order *model.GoodsOrder, orderStatus *model.OrderStatus) (err error) OnOrderStatusChanged(orderStatus *model.OrderStatus) (err error) OnOrderMsg(order *model.GoodsOrder, vendorStatus, remark string) (err error) @@ -187,6 +187,14 @@ type IPurchasePlatformHandler interface { // order.Skus要包含原始订单中的Sku信息,removedSkuList中是要移除的Sku信息 AdjustOrder(ctx *jxcontext.Context, order *model.GoodsOrder, removedSkuList []*model.OrderSku, reason string) (err error) + // 售后 + // 同意用户退款申请 + // AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) + // // 发起全款退款 + // RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) + // // 发起部分退款 + // PartRefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, refundSkuList []*model.OrderSku, reason string) (err error) + //////// // Store ReadStore(vendorStoreID string) (store *model.Store, err error) diff --git a/business/partner/purchase/ebai/order.go b/business/partner/purchase/ebai/order.go index ba892870f..baff49895 100644 --- a/business/partner/purchase/ebai/order.go +++ b/business/partner/purchase/ebai/order.go @@ -304,7 +304,7 @@ func (c *PurchaseHandler) onOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiapi. if status.Status == model.OrderStatusAdjust { var order *model.GoodsOrder if order, err = c.GetOrder4PartRefund(GetOrderIDFromMsg(msg)); err == nil { - err = partner.CurOrderManager.OnOrderAdjust(order, status.VendorStatus) + err = partner.CurOrderManager.OnOrderAdjust(order, status) } } else { err = partner.CurOrderManager.OnOrderStatusChanged(status) @@ -319,7 +319,7 @@ func (c *PurchaseHandler) onOrderNew(msg *ebaiapi.CallbackMsg) (response *ebaiap vendorOrderID := GetOrderIDFromMsg(msg) order, orderMap, err := c.getOrder(vendorOrderID) if err == nil { - if err = partner.CurOrderManager.OnOrderNew(order, order.VendorStatus); err == nil { + if err = partner.CurOrderManager.OnOrderNew(order, c.callbackMsg2Status(msg)); err == nil { utils.CallFuncAsync(func() { c.OnOrderDetail(orderMap, partner.CreatedPeration) }) diff --git a/business/partner/purchase/elm/order.go b/business/partner/purchase/elm/order.go index fb3c1cd35..bc72c7fc0 100644 --- a/business/partner/purchase/elm/order.go +++ b/business/partner/purchase/elm/order.go @@ -202,7 +202,7 @@ func (c *PurchaseHandler) 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 = partner.CurOrderManager.OnOrderNew(order, c.stateAndType2Str(msg["status"].(string), elmapi.MsgTypeOrderValid)) + err = partner.CurOrderManager.OnOrderNew(order, nil) // if globals.HandleLegacyJxOrder && err == nil { // c.legacyWriteElmOrder(order) // } diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index aa3f178ad..93635e100 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -162,7 +162,7 @@ func (c *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo func (c *PurchaseHandler) onOrderNew(msg *jdapi.CallbackOrderMsg) (response *jdapi.CallbackResponse) { order, orderMap, err := c.getOrder(msg.BillID) if err == nil { - if err = partner.CurOrderManager.OnOrderNew(order, msg.StatusID); err == nil { + if err = partner.CurOrderManager.OnOrderNew(order, c.callbackMsg2Status(msg)); err == nil { utils.CallFuncAsync(func() { c.OnOrderDetail(orderMap, partner.CreatedPeration) }) @@ -174,7 +174,7 @@ func (c *PurchaseHandler) onOrderNew(msg *jdapi.CallbackOrderMsg) (response *jda func (c *PurchaseHandler) onOrderAdjust(msg *jdapi.CallbackOrderMsg) *jdapi.CallbackResponse { order, orderMap, err := c.getOrder(msg.BillID) if err == nil { - err = partner.CurOrderManager.OnOrderAdjust(order, msg.StatusID) + err = partner.CurOrderManager.OnOrderAdjust(order, c.callbackMsg2Status(msg)) if err == nil { utils.CallFuncAsync(func() { c.OnOrderDetail(orderMap, partner.UpdatedPeration) diff --git a/business/partner/purchase/mtwm/order.go b/business/partner/purchase/mtwm/order.go index 070d03d1b..4afea5a37 100644 --- a/business/partner/purchase/mtwm/order.go +++ b/business/partner/purchase/mtwm/order.go @@ -156,7 +156,7 @@ func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmap if msg.Cmd == mtwmapi.MsgTypeNewOrder { order, orderMap, err2 := c.getOrder(GetOrderIDFromMsg(msg)) if err = err2; err == nil { - err = partner.CurOrderManager.OnOrderNew(order, order.VendorStatus) + err = partner.CurOrderManager.OnOrderNew(order, c.callbackMsg2Status(msg)) if err == nil { utils.CallFuncAsync(func() { if msg.Cmd == mtwmapi.MsgTypeNewOrder { @@ -181,7 +181,7 @@ func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmap }) } order = jxutils.RemoveSkuFromOrder(order, removedSkuList) - err = partner.CurOrderManager.OnOrderAdjust(order, status.VendorStatus) + err = partner.CurOrderManager.OnOrderAdjust(order, status) } } else { err = partner.CurOrderManager.OnOrderStatusChanged(status) diff --git a/business/partner/purchase/weimob/wsc/order.go b/business/partner/purchase/weimob/wsc/order.go index d4b6daa5c..bb4dde0d4 100644 --- a/business/partner/purchase/weimob/wsc/order.go +++ b/business/partner/purchase/weimob/wsc/order.go @@ -55,7 +55,7 @@ func (p *PurchaseHandler) onOrderMsg(msg *weimobapi.CallbackMsg) (response *weim if status.Status == model.OrderStatusNew { order := p.Map2Order(orderMapData) order.StatusTime = msg.StatusTime - err = partner.CurOrderManager.OnOrderNew(order, order.VendorStatus) + err = partner.CurOrderManager.OnOrderNew(order, status) } else { err = partner.CurOrderManager.OnOrderStatusChanged(status) }