diff --git a/business/jxcallback/orderman/order_afs.go b/business/jxcallback/orderman/order_afs.go index f2b570d50..25c3d6939 100644 --- a/business/jxcallback/orderman/order_afs.go +++ b/business/jxcallback/orderman/order_afs.go @@ -4,6 +4,8 @@ import ( "fmt" "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/model/dao" "git.rosy.net.cn/jx-callback/globals" @@ -54,11 +56,7 @@ func (c *OrderManager) onAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *mode return err } dao.Commit(db) - if orderStatus.Status == model.AfsOrderStatusWait4Approve { - - } else { - - } + scheduler.CurrentScheduler.OnAfsOrderNew(afsOrder, false) return err } @@ -141,7 +139,7 @@ func (c *OrderManager) OnAfsOrderStatusChanged(orderStatus *model.OrderStatus) ( } } }() - isDuplicated, _, err := c.addAfsOrderStatus(db, orderStatus) + isDuplicated, afsOrder, err := c.addAfsOrderStatus(db, orderStatus) if err != nil || isDuplicated { if err == nil { dao.Commit(db) @@ -149,6 +147,7 @@ func (c *OrderManager) OnAfsOrderStatusChanged(orderStatus *model.OrderStatus) ( return err } dao.Commit(db) + scheduler.CurrentScheduler.OnAfsOrderStatusChanged(afsOrder, orderStatus, false) return err } @@ -195,10 +194,7 @@ func (c *OrderManager) addAfsOrderStatus(db *dao.DaoDB, orderStatus *model.Order func (c *OrderManager) updateAfsOrderSkuOtherInfo(db *dao.DaoDB, order *model.AfsOrder) (err error) { globals.SugarLogger.Debugf("updateAfsOrderSkuOtherInfo orderID:%s, VendorStoreID:%s", order.VendorOrderID, order.VendorStoreID) - jxStoreID := order.JxStoreID - if jxStoreID == 0 { - jxStoreID = order.StoreID - } + jxStoreID := jxutils.GetSaleStoreIDFromAfsOrder(order) opNumStr := "2" if jxStoreID == 0 { globals.SugarLogger.Infof("updateAfsOrderSkuOtherInfo [运营%s]订单在京西与平台都找不到京西门店信息orderID:%s, VendorStoreID:%s", opNumStr, order.VendorOrderID, order.VendorStoreID) diff --git a/business/jxcallback/scheduler/defsch/defsch_afs.go b/business/jxcallback/scheduler/defsch/defsch_afs.go new file mode 100644 index 000000000..917428a81 --- /dev/null +++ b/business/jxcallback/scheduler/defsch/defsch_afs.go @@ -0,0 +1,24 @@ +package defsch + +import ( + "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/business/msghub" +) + +func (s *DefScheduler) OnAfsOrderNew(order *model.AfsOrder, isPending bool) (err error) { + if order.Status == model.AfsOrderStatusWait4Approve { + if !isPending { + msghub.OnNewWait4ApproveAfsOrder(order) + } + } + return err +} + +func (s *DefScheduler) OnAfsOrderStatusChanged(order *model.AfsOrder, status *model.OrderStatus, isPending bool) (err error) { + if status.Status == model.AfsOrderStatusWait4ReceiveGoods { + if !isPending { + msghub.OnKeyAfsOrderStatusChanged(order) + } + } + return err +} diff --git a/business/jxcallback/scheduler/scheduler.go b/business/jxcallback/scheduler/scheduler.go index 2c66d3a60..e4a57e155 100644 --- a/business/jxcallback/scheduler/scheduler.go +++ b/business/jxcallback/scheduler/scheduler.go @@ -40,4 +40,8 @@ type IScheduler interface { // 以下是运单 OnWaybillStatusChanged(bill *model.Waybill, isPending bool) (err error) + + // 以下是售后单 + OnAfsOrderNew(order *model.AfsOrder, isPending bool) (err error) + OnAfsOrderStatusChanged(order *model.AfsOrder, status *model.OrderStatus, isPending bool) (err error) } diff --git a/business/jxutils/jxutils.go b/business/jxutils/jxutils.go index 092aade76..2100e0e80 100644 --- a/business/jxutils/jxutils.go +++ b/business/jxutils/jxutils.go @@ -82,6 +82,13 @@ func GetSkuIDFromOrderSku(sku *model.OrderSku) (skuID int) { return sku.SkuID } +func GetSaleStoreIDFromAfsOrder(order *model.AfsOrder) (retVal int) { + if order.JxStoreID > 0 { + return order.JxStoreID + } + return order.StoreID +} + func SplitUniversalOrderID(universalOrderID string) (orderID string, vendorID int) { index := strings.Index(universalOrderID, "|") if index != -1 { diff --git a/business/msghub/msghub.go b/business/msghub/msghub.go index bb5c61951..115e740b7 100644 --- a/business/msghub/msghub.go +++ b/business/msghub/msghub.go @@ -19,6 +19,9 @@ const ( ServerMsgNewOrder = "newOrder" ServerMsgKeyOrderStatusChanged = "keyOrderStatusChanged" // 重要订单状态变化 + + ServerMsgNewWait4ApproveAfsOrder = "newWait4ApproveAfsOrder" + ServerMsgKeyAfsOrderStatusChanged = "keyAfsOrderStatusChanged" // 重要售后单状态变化 ) const ( @@ -174,11 +177,28 @@ func OnKeyOrderStatusChanged(order *model.GoodsOrder) { Type: ServerMsgKeyOrderStatusChanged, StoreID: jxutils.GetSaleStoreIDFromOrder(order), MsgData: order, - // MsgData: []*model.GoodsOrderExt{ - // &model.GoodsOrderExt{ - // GoodsOrder: *order, - // }, - // }, + } + }) +} + +func OnNewWait4ApproveAfsOrder(order *model.AfsOrder) { + globals.SugarLogger.Debugf("msghub OnNewWait4ApproveAfsOrder, order:%s", utils.Format4Output(order, true)) + utils.CallFuncAsync(func() { + msgChan <- &ServerMsg{ + Type: ServerMsgNewWait4ApproveAfsOrder, + StoreID: jxutils.GetSaleStoreIDFromAfsOrder(order), + MsgData: order, + } + }) +} + +func OnKeyAfsOrderStatusChanged(order *model.AfsOrder) { + globals.SugarLogger.Debugf("msghub OnKeyAfsOrderStatusChanged, order:%s", utils.Format4Output(order, true)) + utils.CallFuncAsync(func() { + msgChan <- &ServerMsg{ + Type: ServerMsgKeyAfsOrderStatusChanged, + StoreID: jxutils.GetSaleStoreIDFromAfsOrder(order), + MsgData: order, } }) } diff --git a/business/partner/purchase/jd/order_afs.go b/business/partner/purchase/jd/order_afs.go index 127d43c5f..b6a9ece3c 100644 --- a/business/partner/purchase/jd/order_afs.go +++ b/business/partner/purchase/jd/order_afs.go @@ -136,7 +136,7 @@ func (c *PurchaseHandler) buildAfsOrder(afsInfo *jdapi.AfsServiceResponse) (afsO VendorReasonType: utils.Int2Str(afsInfo.QuestionTypeCid), ReasonType: c.convertAfsReasonType(afsInfo.QuestionTypeCid), ReasonDesc: utils.LimitUTF8StringLen(afsInfo.QuestionDesc, 1024), - ReasonImgList: utils.LimitUTF8StringLen(afsInfo.QuestionPic, 1024), + ReasonImgList: utils.LimitUTF8StringLen(jdapi.ProcessQuestionPic(afsInfo.QuestionPic), 1024), VendorAppealType: afsInfo.ApplyDeal, AppealType: c.convertAfsAppealType(afsInfo.ApplyDeal), }