diff --git a/business/jxcallback/orderman/order_comment.go b/business/jxcallback/orderman/order_comment.go index 8dab8c5ab..54c985cb7 100644 --- a/business/jxcallback/orderman/order_comment.go +++ b/business/jxcallback/orderman/order_comment.go @@ -167,7 +167,7 @@ func (c *OrderManager) replyOrderComment(orderComment *model.OrderComment) (err content := config.comments[rand.Intn(len(config.comments))] globals.SugarLogger.Debugf("replyOrderComment orderID:%s, delaySeconds:%d, content:%s", orderComment.VendorOrderID, delaySeconds, content) utils.AfterFuncWithRecover(time.Duration(delaySeconds)*time.Second, func() { - if handler := partner.GetPurchasePlatformFromVendorID(orderComment.VendorID); handler != nil { + if handler := partner.GetPurchaseOrderHandlerFromVendorID(orderComment.VendorID); handler != nil { if err = handler.ReplyOrderComment(jxcontext.AdminCtx, orderComment, content); err != nil { globals.SugarLogger.Debugf("replyOrderComment orderID:%s, error:%v", orderComment.VendorOrderID, err) } diff --git a/business/jxcallback/orderman/orderman_ext.go b/business/jxcallback/orderman/orderman_ext.go index a1cc23bd2..6cb8414a1 100644 --- a/business/jxcallback/orderman/orderman_ext.go +++ b/business/jxcallback/orderman/orderman_ext.go @@ -133,7 +133,7 @@ func (c *OrderManager) GetOrderInfo(ctx *jxcontext.Context, vendorOrderID string if err == nil && num > 0 { order = orders[0] if isRefresh && vendorID == model.VendorIDJD { - tmpOrder, err2 := partner.GetPurchasePlatformFromVendorID(vendorID).GetOrder(vendorOrderID) + tmpOrder, err2 := partner.GetPurchaseOrderHandlerFromVendorID(vendorID).GetOrder(vendorOrderID) if err = err2; err == nil { order.CurrentConsigneeMobile = tmpOrder.ConsigneeMobile } else { @@ -1113,7 +1113,7 @@ func (c *OrderManager) AmendMissingOrders(ctx *jxcontext.Context, vendorIDs []in task1 := tasksch.NewParallelTask("AmendMissingOrders ListOrders", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { vendorDate := batchItemList[0].(*tDateVendorPair) - if handler, _ := partner.GetPurchasePlatformFromVendorID(vendorDate.VendorID).(partner.IPurchasePlatformStoreSkuHandler); handler != nil { + if handler, _ := partner.GetPurchaseOrderHandlerFromVendorID(vendorDate.VendorID).(partner.IPurchasePlatformStoreSkuHandler); handler != nil { orderIDs, err2 := handler.ListOrders(ctx, task, vendorDate.QueryDate, vendorStoreIDMap[vendorDate.VendorID]) if err = err2; err == nil && len(orderIDs) > 0 { var orderList []*tOrderVendorPair @@ -1152,7 +1152,7 @@ func (c *OrderManager) AmendMissingOrders(ctx *jxcontext.Context, vendorIDs []in task2 := tasksch.NewParallelTask("AmendMissingOrders GetOrders", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { pair := batchItemList[0].(*tOrderVendorPair) - if handler := partner.GetPurchasePlatformFromVendorID(pair.VendorID); handler != nil { + if handler := partner.GetPurchaseOrderHandlerFromVendorID(pair.VendorID); handler != nil { order, err2 := handler.GetOrder(pair.VendorOrderID) if err = err2; err == nil { isDuplicated, err2 := c.SaveOrder(order, false, dao.GetDB()) @@ -1204,7 +1204,7 @@ func (c *OrderManager) RefreshOrderFinancial(ctx *jxcontext.Context, fromTime, t task := tasksch.NewParallelTask("RefreshOrderFinancial", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { order := batchItemList[0].(*model.GoodsOrder) - handler := partner.GetPurchasePlatformFromVendorID(order.VendorID) + handler := partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID) if handler != nil { remoteOrder, err2 := handler.GetOrder(order.VendorOrderID) if err = err2; err == nil { diff --git a/business/jxcallback/scheduler/basesch/basesch.go b/business/jxcallback/scheduler/basesch/basesch.go index 7706be007..7e037fda1 100644 --- a/business/jxcallback/scheduler/basesch/basesch.go +++ b/business/jxcallback/scheduler/basesch/basesch.go @@ -23,7 +23,7 @@ func (c *BaseScheduler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt if /*order.LockStatus == model.OrderStatusUnknown && */ order.Status == model.OrderStatusNew { if c.IsReallyCallPlatformAPI { err = utils.CallFuncLogErrorWithInfo(func() error { - return partner.GetPurchasePlatformFromVendorID(order.VendorID).AcceptOrRefuseOrder(order, isAcceptIt, userName) + return partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).AcceptOrRefuseOrder(order, isAcceptIt, userName) }, "AcceptOrRefuseOrder orderID:%s, isAcceptIt:%t", order.VendorOrderID, isAcceptIt) } } else { @@ -38,7 +38,7 @@ func (c *BaseScheduler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool if /*order.LockStatus == model.OrderStatusUnknown && */ order.Status == model.OrderStatusAccepted { if c.IsReallyCallPlatformAPI { err = utils.CallFuncLogErrorWithInfo(func() error { - return partner.GetPurchasePlatformFromVendorID(order.VendorID).PickupGoods(order, isSelfDelivery, userName) + return partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).PickupGoods(order, isSelfDelivery, userName) }, "PickupGoods orderID:%s", order.VendorOrderID) } } else { @@ -58,7 +58,7 @@ func (c *BaseScheduler) Swtich2SelfDeliver(order *model.GoodsOrder, userName str if /*order.LockStatus == model.OrderStatusUnknown && */ order.Status >= model.OrderStatusFinishedPickup && order.Status <= model.OrderStatusDelivering { if order.DeliveryFlag&model.OrderDeliveryFlagMaskPurcahseDisabled == 0 && c.IsReallyCallPlatformAPI { err = utils.CallFuncLogErrorWithInfo(func() error { - return partner.GetPurchasePlatformFromVendorID(order.VendorID).Swtich2SelfDeliver(order, userName) + return partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).Swtich2SelfDeliver(order, userName) }, "Swtich2SelfDeliver orderID:%s", order.VendorOrderID) } if err == nil { // 因为有些平台转自送后,不会再发送订单在配送中消息过来,所以成功后就强制设置状态为配送中 @@ -83,7 +83,7 @@ func (c *BaseScheduler) Swtich2SelfDelivered(order *model.GoodsOrder, userName s if /*order.LockStatus == model.OrderStatusUnknown && */ order.Status == model.OrderStatusDelivering { if c.IsReallyCallPlatformAPI { err = utils.CallFuncLogError(func() error { - return partner.GetPurchasePlatformFromVendorID(order.VendorID).Swtich2SelfDelivered(order, userName) + return partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).Swtich2SelfDelivered(order, userName) }, "Swtich2SelfDelivered orderID:%s", order.VendorOrderID) } } else { @@ -103,7 +103,7 @@ func (c *BaseScheduler) SelfDeliverDelivering(order *model.GoodsOrder, userName if /*order.LockStatus == model.OrderStatusUnknown && */ order.Status == model.OrderStatusFinishedPickup { if c.IsReallyCallPlatformAPI { err = utils.CallFuncLogError(func() error { - return partner.GetPurchasePlatformFromVendorID(order.VendorID).SelfDeliverDelivering(order, userName) + return partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).SelfDeliverDelivering(order, userName) }, "SelfDeliverDelivering orderID:%s", order.VendorOrderID) if err == nil { // 因为有些平台设置配送中后,不会发送订单在配送中消息过来,所以成功后就强制设置状态为配送中 order.Status = model.OrderStatusDelivering @@ -127,7 +127,7 @@ func (c *BaseScheduler) SelfDeliverDelivered(order *model.GoodsOrder, userName s if /*order.LockStatus == model.OrderStatusUnknown && */ order.Status == model.OrderStatusDelivering { if c.IsReallyCallPlatformAPI { err = utils.CallFuncLogError(func() error { - return partner.GetPurchasePlatformFromVendorID(order.VendorID).SelfDeliverDelivered(order, userName) + return partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).SelfDeliverDelivered(order, userName) }, "SelfDeliverDelivered orderID:%s", order.VendorOrderID) } } else { diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index 669ee98bf..640a16796 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -132,21 +132,21 @@ func (c *BaseScheduler) GetStoreDeliveryType(order *model.GoodsOrder, storeMap * func (c *BaseScheduler) AdjustOrder(ctx *jxcontext.Context, order *model.GoodsOrder, removedSkuList []*model.OrderSku, reason string) (err error) { if c.IsReallyCallPlatformAPI { - err = partner.GetPurchasePlatformFromVendorID(order.VendorID).AdjustOrder(ctx, order, removedSkuList, reason) + err = partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).AdjustOrder(ctx, order, removedSkuList, reason) } return err } func (c *BaseScheduler) CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) { if c.IsReallyCallPlatformAPI { - err = partner.GetPurchasePlatformFromVendorID(order.VendorID).CancelOrder(ctx, order, reason) + err = partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).CancelOrder(ctx, order, reason) } return err } func (c *BaseScheduler) AcceptOrRefuseFailedGetOrder(ctx *jxcontext.Context, order *model.GoodsOrder, isAcceptIt bool, reason string) (err error) { if c.IsReallyCallPlatformAPI { - err = partner.GetPurchasePlatformFromVendorID(order.VendorID).AcceptOrRefuseFailedGetOrder(ctx, order, isAcceptIt) + err = partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).AcceptOrRefuseFailedGetOrder(ctx, order, isAcceptIt) } if err == nil { flag := model.OrderFlagAgreeFailedGetGoods @@ -160,7 +160,7 @@ func (c *BaseScheduler) AcceptOrRefuseFailedGetOrder(ctx *jxcontext.Context, ord func (c *BaseScheduler) CallPMCourier(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) { if c.IsReallyCallPlatformAPI { - err = partner.GetPurchasePlatformFromVendorID(order.VendorID).CallCourier(ctx, order) + err = partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).CallCourier(ctx, order) } if err == nil { dao.SetOrderFlag(dao.GetDB(), ctx.GetUserName(), order.VendorOrderID, order.VendorID, model.OrderFlagMaskCallPMCourier) @@ -170,7 +170,7 @@ func (c *BaseScheduler) CallPMCourier(ctx *jxcontext.Context, order *model.Goods func (c *BaseScheduler) ConfirmReceiveGoods(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) { if c.IsReallyCallPlatformAPI { - err = partner.GetPurchasePlatformFromVendorID(order.VendorID).ConfirmReceiveGoods(ctx, order) + err = partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).ConfirmReceiveGoods(ctx, order) } if err == nil { dao.SetOrderFlag(dao.GetDB(), ctx.GetUserName(), order.VendorOrderID, order.VendorID, model.OrderFlagMaskFailedDeliver) @@ -180,7 +180,7 @@ func (c *BaseScheduler) ConfirmReceiveGoods(ctx *jxcontext.Context, order *model func (c *BaseScheduler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *model.GoodsOrder, isAcceptIt bool, reason string) (err error) { if c.IsReallyCallPlatformAPI { - err = partner.GetPurchasePlatformFromVendorID(order.VendorID).AgreeOrRefuseCancel(ctx, order, isAcceptIt, reason) + err = partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).AgreeOrRefuseCancel(ctx, order, isAcceptIt, reason) } if err == nil { flag := model.OrderFlagAgreeUserApplyCancel @@ -204,7 +204,7 @@ func (c *BaseScheduler) AgreeOrRefuseRefund(ctx *jxcontext.Context, afsOrderID s afsOrder, err := partner.CurOrderManager.LoadAfsOrder(afsOrderID, vendorID) if err == nil { if c.IsReallyCallPlatformAPI { - err = partner.GetPurchasePlatformFromVendorID(vendorID).AgreeOrRefuseRefund(ctx, afsOrder, approveType, reason) + err = partner.GetPurchaseOrderHandlerFromVendorID(vendorID).AgreeOrRefuseRefund(ctx, afsOrder, approveType, reason) } if err == nil { flag := model.AfsOrderFlagAgreeUserRefund @@ -223,7 +223,7 @@ func (c *BaseScheduler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, afsOr afsOrder, err := partner.CurOrderManager.LoadAfsOrder(afsOrderID, vendorID) if err == nil { if c.IsReallyCallPlatformAPI { - err = partner.GetPurchasePlatformFromVendorID(vendorID).ConfirmReceivedReturnGoods(ctx, afsOrder) + err = partner.GetPurchaseOrderHandlerFromVendorID(vendorID).ConfirmReceivedReturnGoods(ctx, afsOrder) } if err == nil { dao.SetAfsOrderFlag(dao.GetDB(), ctx.GetUserName(), afsOrderID, vendorID, model.AfsOrderFlagMaskReturnGoods) @@ -234,14 +234,14 @@ func (c *BaseScheduler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, afsOr func (c *BaseScheduler) PartRefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, refundSkuList []*model.OrderSku, reason string) (err error) { if c.IsReallyCallPlatformAPI { - err = partner.GetPurchasePlatformFromVendorID(order.VendorID).PartRefundOrder(ctx, order, refundSkuList, reason) + err = partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).PartRefundOrder(ctx, order, refundSkuList, reason) } return err } func (c *BaseScheduler) RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) { if c.IsReallyCallPlatformAPI { - err = partner.GetPurchasePlatformFromVendorID(order.VendorID).RefundOrder(ctx, order, reason) + err = partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).RefundOrder(ctx, order, reason) } return err } diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 559e85f40..5d48196a9 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -173,7 +173,7 @@ func init() { partner.CurOrderManager.OnOrderMsg(order, "自动接单失败", err.Error()) // 为了解决京东新消息与接单消息乱序的问题 if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 && errWithCode.IntCode() == -1 { - if order2, err2 := partner.GetPurchasePlatformFromVendorID(order.VendorID).GetOrder(order.VendorOrderID); err2 == nil && order2.Status > order.Status { + if order2, err2 := partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).GetOrder(order.VendorOrderID); err2 == nil && order2.Status > order.Status { order.Status = order2.Status jxutils.CallMsgHandlerAsync(func() { sch.OnOrderStatusChanged(order, model.Order2Status(order2), false) @@ -864,7 +864,7 @@ func (s *DefScheduler) mergeOrderStatusConfig(savedOrderInfo *WatchOrderInfo, st } } if vendorActionParams == nil { - vendorActionParams = partner.GetPurchasePlatformFromVendorID(order.VendorID).GetStatusActionTimeout(order, statusType, status) + vendorActionParams = partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).GetStatusActionTimeout(order, statusType, status) } // 自动拣货TIMER if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusAccepted { @@ -1029,7 +1029,7 @@ func (s *DefScheduler) handleWaybillTip(savedOrderInfo *WatchOrderInfo) { if !utils.IsTimeZero(savedOrderInfo.pmWaybillCreatedAt) && !savedOrderInfo.isAddWaybillTipDisabled { if tipFee := s.getWaybillTip(savedOrderInfo); tipFee > 0 { - if handler, ok := partner.GetPurchasePlatformFromVendorID(order.VendorID).(partner.IAddWaybillTip); ok && handler != nil { + if handler, ok := partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).(partner.IAddWaybillTip); ok && handler != nil { var remark string vendorStatus := fmt.Sprintf("设置小费:%s", jxutils.IntPrice2StandardCurrencyString(tipFee)) if curTipFee, err := handler.GetWaybillTip(jxcontext.AdminCtx, order); err == nil { diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 42ad92e47..787450358 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1055,7 +1055,7 @@ func CreateConsumerFromOrders(ctx *jxcontext.Context, vendorIDs []int, fromDate, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { order := batchItemList[0].(*GoodsOrderWithOriginal) if isForce || order.UserID == "" { - if handler := partner.GetPurchasePlatformFromVendorID(order.VendorID); handler != nil { + if handler := partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID); handler != nil { var updateFields []string if isForce || order.VendorUserID == "" { var order2 *model.GoodsOrder diff --git a/business/partner/partner.go b/business/partner/partner.go index a24aec6be..3a37b5e20 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -80,6 +80,7 @@ var ( CurStoreManager IStoreManager PurchasePlatformHandlers map[int]IPurchasePlatformHandler + PurchaseOrderHandlers map[int]IPurchasePlatformOrderHandler ) type IOrderManager interface { @@ -221,10 +222,22 @@ func RegisterPurchasePlatform(handler IPurchasePlatformHandler) { PurchasePlatformHandlers[vendorID] = handler } +func RegisterPurchaseOrderHandler(vendorID int, handler IPurchasePlatformOrderHandler) { + PurchaseOrderHandlers[vendorID] = handler +} + func GetPurchasePlatformFromVendorID(vendorID int) IPurchasePlatformHandler { return PurchasePlatformHandlers[vendorID] } +func GetPurchaseOrderHandlerFromVendorID(vendorID int) (handler IPurchasePlatformOrderHandler) { + handler = PurchasePlatformHandlers[vendorID] + if handler == nil { + handler = PurchaseOrderHandlers[vendorID] + } + return handler +} + func GetPurchasePlatformVendorIDs() (vendorIDs []int) { for k := range PurchasePlatformHandlers { vendorIDs = append(vendorIDs, k) diff --git a/business/partner/purchase/jx/jx.go b/business/partner/purchase/jx/jx.go index 44673830f..5a67b7215 100644 --- a/business/partner/purchase/jx/jx.go +++ b/business/partner/purchase/jx/jx.go @@ -21,6 +21,7 @@ func init() { CurPurchaseHandler = new(PurchaseHandler) // 不能注册京西 // partner.RegisterPurchasePlatform(CurPurchaseHandler) + partner.RegisterPurchaseOrderHandler(CurPurchaseHandler.GetVendorID(), CurPurchaseHandler) } }