diff --git a/business/partner/partner.go b/business/partner/partner.go index 471896580..705632112 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -172,55 +172,15 @@ type IStoreManager interface { type IPurchasePlatformHandler interface { IPurchasePlatformActHandler + IPurchasePlatformOrderHandler + GetVendorID() int - GetStatusFromVendorStatus(vendorStatus string) int - Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder) - GetOrder(vendorOrderID string) (order *model.GoodsOrder, err error) - GetStatusActionTimeout(order *model.GoodsOrder, statusType, status int) (params *StatusActionParams) - - AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) - PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) - - AcceptOrRefuseFailedGetOrder(ctx *jxcontext.Context, order *model.GoodsOrder, isAcceptIt bool) (err error) - CallCourier(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) // 取货失败后再次招唤平台配送 - ConfirmReceiveGoods(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) // 投递失败后确认收到退货 - - // 将订单从购物平台配送转为自送 - Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) - - // 将订单从购物平台配送转为自送后又送达 - Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) - - // 完全自送的门店表示开始配送 - SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) - - // 完全自送的门店表示配送完成 - SelfDeliverDelivered(order *model.GoodsOrder, userName string) (err error) - - GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error) - - ReplyOrderComment(ctx *jxcontext.Context, orderComment *model.OrderComment, replyComment string) (err error) - - AgreeOrRefuseCancel(ctx *jxcontext.Context, order *model.GoodsOrder, isAgree bool, reason string) (err error) - CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) - // order.Skus要包含原始订单中的Sku信息,removedSkuList中是要移除的Sku信息 - AdjustOrder(ctx *jxcontext.Context, order *model.GoodsOrder, removedSkuList []*model.OrderSku, 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) - // 审核售后单申请 - AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) - // // 确认收到退货 - ConfirmReceivedReturnGoods(ctx *jxcontext.Context, order *model.AfsOrder) (err error) - //////// // Store ReadStore(vendorStoreID string) (store *model.Store, err error) UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error) + GetStoreStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string) (storeStatus int, err error) // EnableAutoAcceptOrder(vendorStoreID string, isEnabled bool) error // OpenStore(vendorStoreID string, userName string) error // CloseStore(vendorStoreID, closeNotice, userName string) error @@ -231,7 +191,6 @@ type IPurchasePlatformHandler interface { // !!!注意,此操作会先清除门店已有的商品,一般用于初始化,小心使用 FullSyncStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, isAsync, isContinueWhenError bool) (hint string, err error) UploadImg(ctx *jxcontext.Context, imgURL string, imgData []byte, imgName string) (imgHint string, err error) - GetStoreStatus(ctx *jxcontext.Context, vendorStoreID string) (storeStatus int, err error) GetVendorCategories(ctx *jxcontext.Context) (vendorCats []*model.SkuVendorCategory, err error) // todo GetStoresSku应该与GetStoreSkusInfo合并 diff --git a/business/partner/partner_order.go b/business/partner/partner_order.go new file mode 100644 index 000000000..d78cb6491 --- /dev/null +++ b/business/partner/partner_order.go @@ -0,0 +1,50 @@ +package partner + +import ( + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" + "git.rosy.net.cn/jx-callback/business/model" +) + +type IPurchasePlatformOrderHandler interface { + Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder) + GetOrder(vendorOrderID string) (order *model.GoodsOrder, err error) + GetStatusActionTimeout(order *model.GoodsOrder, statusType, status int) (params *StatusActionParams) + + AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) + PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) + + AcceptOrRefuseFailedGetOrder(ctx *jxcontext.Context, order *model.GoodsOrder, isAcceptIt bool) (err error) + CallCourier(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) // 取货失败后再次招唤平台配送 + ConfirmReceiveGoods(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) // 投递失败后确认收到退货 + + // 将订单从购物平台配送转为自送 + Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) + + // 将订单从购物平台配送转为自送后又送达 + Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) + + // 完全自送的门店表示开始配送 + SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) + + // 完全自送的门店表示配送完成 + SelfDeliverDelivered(order *model.GoodsOrder, userName string) (err error) + + GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error) + + ReplyOrderComment(ctx *jxcontext.Context, orderComment *model.OrderComment, replyComment string) (err error) + + AgreeOrRefuseCancel(ctx *jxcontext.Context, order *model.GoodsOrder, isAgree bool, reason string) (err error) + CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) + // order.Skus要包含原始订单中的Sku信息,removedSkuList中是要移除的Sku信息 + AdjustOrder(ctx *jxcontext.Context, order *model.GoodsOrder, removedSkuList []*model.OrderSku, 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) + // 审核售后单申请 + AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) + // // 确认收到退货 + ConfirmReceivedReturnGoods(ctx *jxcontext.Context, order *model.AfsOrder) (err error) +} diff --git a/business/partner/purchase/ebai/order.go b/business/partner/purchase/ebai/order.go index 683c7e874..939a2e3be 100644 --- a/business/partner/purchase/ebai/order.go +++ b/business/partner/purchase/ebai/order.go @@ -58,7 +58,7 @@ var ( } ) -func (p *PurchaseHandler) GetStatusFromVendorStatus(vendorStatus string) int { +func (p *PurchaseHandler) getStatusFromVendorStatus(vendorStatus string) int { if status, ok := VendorStatus2StatusMap[vendorStatus]; ok { return status } @@ -197,7 +197,7 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo if order.StoreID > math.MaxInt32 { order.StoreID = 0 } - order.Status = p.GetStatusFromVendorStatus(order.VendorStatus) + order.Status = p.getStatusFromVendorStatus(order.VendorStatus) if utils.MustInterface2Int64(orderMap["send_immediately"]) == 1 { order.BusinessType = model.BusinessTypeImmediate } else { @@ -452,7 +452,7 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *ebaiapi.CallbackMsg) (orderSta } orderStatus.Remark = utils.Interface2String(msg.Body["reason"]) } - orderStatus.Status = c.GetStatusFromVendorStatus(orderStatus.VendorStatus) + orderStatus.Status = c.getStatusFromVendorStatus(orderStatus.VendorStatus) return orderStatus } diff --git a/business/partner/purchase/ebai/store.go b/business/partner/purchase/ebai/store.go index d44ae6816..6a9aa8376 100644 --- a/business/partner/purchase/ebai/store.go +++ b/business/partner/purchase/ebai/store.go @@ -393,7 +393,7 @@ func genStoreMapFromStore(store *tEbaiStoreInfo) map[string]interface{} { return params } -func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorStoreID string) (storeStatus int, err error) { +func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string) (storeStatus int, err error) { ebaiStatus, err := api.EbaiAPI.ShopBusStatusGet("", utils.Str2Int64(vendorStoreID), ebaiapi.PlatformFlagElm) if err == nil { storeStatus = EbaiBusStatus2JxStatus(ebaiStatus) @@ -404,10 +404,11 @@ func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorStoreID s func (c *PurchaseHandler) onShopMsgPush(msg *ebaiapi.CallbackMsg) (response *ebaiapi.CallbackResponse) { var err error vendorStoreID := utils.Interface2String(msg.Body["baidu_shop_id"]) + storeID := int(utils.Interface2Int64WithDefault(msg.Body["shop_id"], 0)) storeStatus := model.StoreStatusOpened switch utils.Interface2String(msg.Body["msg_type"]) { case "online", "offline": - storeStatus, err = c.GetStoreStatus(jxcontext.AdminCtx, vendorStoreID) + storeStatus, err = c.GetStoreStatus(jxcontext.AdminCtx, storeID, vendorStoreID) case "shop_open", "shop_pause", "shop_close": if int(utils.ForceInterface2Int64(msg.Body["business_ele"])) == 1 { storeStatus = model.StoreStatusOpened diff --git a/business/partner/purchase/elm/order.go b/business/partner/purchase/elm/order.go index 42765e751..935956d9f 100644 --- a/business/partner/purchase/elm/order.go +++ b/business/partner/purchase/elm/order.go @@ -160,7 +160,7 @@ func (c *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo ActualPayPrice: jxutils.StandardPrice2Int(utils.MustInterface2Float64(result["totalPrice"])), Skus: []*model.OrderSku{}, } - order.Status = c.GetStatusFromVendorStatus(order.VendorStatus) + order.Status = c.getStatusFromVendorStatus(order.VendorStatus) if result["book"].(bool) { order.BusinessType = model.BusinessTypeDingshida } else { @@ -243,7 +243,7 @@ func (c *PurchaseHandler) spliltCompositeState(compositeState string) (state str } // IPurchasePlatformHandler -func (c *PurchaseHandler) GetStatusFromVendorStatus(vendorStatus string) int { +func (c *PurchaseHandler) getStatusFromVendorStatus(vendorStatus string) int { state, _ := c.spliltCompositeState(vendorStatus) if status, ok := VendorStatus2StatusMap[state]; ok { return status diff --git a/business/partner/purchase/elm/store.go b/business/partner/purchase/elm/store.go index b55d91d13..0a0429e3c 100644 --- a/business/partner/purchase/elm/store.go +++ b/business/partner/purchase/elm/store.go @@ -33,6 +33,6 @@ func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask // return nil // } -func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorStoreID string) (storeStatus int, err error) { +func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string) (storeStatus int, err error) { return storeStatus, err } diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index 36e054902..b64eb3710 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -179,7 +179,7 @@ func (c *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo OriginalData: string(utils.MustMarshal(result)), ActualPayPrice: utils.MustInterface2Int64(result["orderBuyerPayableMoney"]), } - order.Status = c.GetStatusFromVendorStatus(order.VendorStatus) + order.Status = c.getStatusFromVendorStatus(order.VendorStatus) businessTage := utils.Interface2String(result["businessTag"]) if strings.Index(businessTage, "dj_aging_immediately") >= 0 { order.BusinessType = model.BusinessTypeImmediate @@ -266,7 +266,7 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *jdapi.CallbackOrderMsg) *model RefVendorOrderID: msg.BillID, RefVendorID: model.VendorIDJD, VendorStatus: msg.StatusID, - Status: c.GetStatusFromVendorStatus(msg.StatusID), + Status: c.getStatusFromVendorStatus(msg.StatusID), StatusTime: utils.Str2Time(msg.Timestamp), Remark: msg.Remark, } @@ -285,7 +285,7 @@ func (c *PurchaseHandler) postFakeMsg(vendorOrderID, vendorStatus string) { } // IPurchasePlatformHandler -func (c *PurchaseHandler) GetStatusFromVendorStatus(vendorStatus string) int { +func (c *PurchaseHandler) getStatusFromVendorStatus(vendorStatus string) int { if status, ok := VendorStatus2StatusMap[vendorStatus]; ok { return status } diff --git a/business/partner/purchase/jd/store.go b/business/partner/purchase/jd/store.go index d934d16f9..9ddcf6fe8 100644 --- a/business/partner/purchase/jd/store.go +++ b/business/partner/purchase/jd/store.go @@ -288,7 +288,7 @@ func JdDeliveryType2Jx(deliveryType int) int8 { return scheduler.StoreDeliveryTypeByPlatform } -func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorStoreID string) (storeStatus int, err error) { +func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string) (storeStatus int, err error) { result, err := api.JdAPI.GetStoreInfoByStationNo(vendorStoreID) if err == nil { storeStatus = JdStoreStatus2JxStatus(result["yn"], result["closeStatus"]) diff --git a/business/partner/purchase/mtwm/order.go b/business/partner/purchase/mtwm/order.go index ea5eea566..4c849397b 100644 --- a/business/partner/purchase/mtwm/order.go +++ b/business/partner/purchase/mtwm/order.go @@ -72,7 +72,7 @@ var ( } ) -func (p *PurchaseHandler) GetStatusFromVendorStatus(vendorStatus string) int { +func (p *PurchaseHandler) getStatusFromVendorStatus(vendorStatus string) int { if status, ok := VendorStatus2StatusMap[vendorStatus]; ok { return status } @@ -124,7 +124,7 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo if utils.IsTimeZero(order.PickDeadline) && !utils.IsTimeZero(order.StatusTime) { order.PickDeadline = order.StatusTime.Add(pickupOrderDelay) // 美团外卖要求在5分钟内拣货,不然订单会被取消 } - order.Status = p.GetStatusFromVendorStatus(order.VendorStatus) + order.Status = p.getStatusFromVendorStatus(order.VendorStatus) if utils.IsTimeZero(order.ExpectedDeliveredTime) { order.BusinessType = model.BusinessTypeImmediate } else { @@ -363,7 +363,7 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *mtwmapi.CallbackMsg) (orderSta RefVendorOrderID: orderID, RefVendorID: model.VendorIDMTWM, VendorStatus: vendorStatus, - Status: c.GetStatusFromVendorStatus(vendorStatus), + Status: c.getStatusFromVendorStatus(vendorStatus), StatusTime: getTimeFromTimestamp(statusTime), Remark: remark, } diff --git a/business/partner/purchase/mtwm/store.go b/business/partner/purchase/mtwm/store.go index 215d4e64d..b53db13ae 100644 --- a/business/partner/purchase/mtwm/store.go +++ b/business/partner/purchase/mtwm/store.go @@ -148,7 +148,7 @@ func (p *PurchaseHandler) onStoreStatusChanged(msg *mtwmapi.CallbackMsg) (respon } else if poiStatus == mtwmapi.MsgPoiStatusOffline { storeStatus = model.StoreStatusDisabled } else { - storeStatus, err = p.GetStoreStatus(jxcontext.AdminCtx, vendorStoreID) + storeStatus, err = p.GetStoreStatus(jxcontext.AdminCtx, 0, vendorStoreID) } if err == nil { err = partner.CurStoreManager.OnStoreStatusChanged(vendorStoreID, model.VendorIDMTWM, storeStatus) @@ -157,7 +157,7 @@ func (p *PurchaseHandler) onStoreStatusChanged(msg *mtwmapi.CallbackMsg) (respon return response } -func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorStoreID string) (storeStatus int, err error) { +func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string) (storeStatus int, err error) { result, err := api.MtwmAPI.PoiGet(vendorStoreID) if err == nil { return bizStatusMtwm2JX(result.OpenLevel, result.IsOnline), nil diff --git a/business/partner/purchase/weimob/wsc/order.go b/business/partner/purchase/weimob/wsc/order.go index da175f764..a9631c1ec 100644 --- a/business/partner/purchase/weimob/wsc/order.go +++ b/business/partner/purchase/weimob/wsc/order.go @@ -83,7 +83,7 @@ func (p *PurchaseHandler) callbackMsg2Status(msg *weimobapi.CallbackMsg, orderMa RefVendorOrderID: orderID, RefVendorID: model.VendorIDWSC, VendorStatus: vendorStatus, - Status: p.GetStatusFromVendorStatus(vendorStatus), + Status: p.getStatusFromVendorStatus(vendorStatus), StatusTime: msg.StatusTime, Remark: "", } @@ -94,7 +94,7 @@ func (p *PurchaseHandler) getOrderStatus(orderMapData map[string]interface{}) (s return utils.Int64ToStr(utils.MustInterface2Int64(orderMapData["orderStatus"])) } -func (p *PurchaseHandler) GetStatusFromVendorStatus(vendorStatus string) int { +func (p *PurchaseHandler) getStatusFromVendorStatus(vendorStatus string) int { if status, ok := VendorStatus2StatusMap[vendorStatus]; ok { return status } @@ -149,7 +149,7 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo order.StoreName = utils.Interface2String(selfPickupDetail["selfPickupSiteName"]) } } - order.Status = p.GetStatusFromVendorStatus(order.VendorStatus) + order.Status = p.getStatusFromVendorStatus(order.VendorStatus) itemList := result["itemList"].([]interface{}) for _, v := range itemList { item := v.(map[string]interface{}) diff --git a/business/partner/purchase/weimob/wsc/store.go b/business/partner/purchase/weimob/wsc/store.go index 1f18863b7..4b4e51cf7 100644 --- a/business/partner/purchase/weimob/wsc/store.go +++ b/business/partner/purchase/weimob/wsc/store.go @@ -21,6 +21,6 @@ func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask return hint, err } -func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorStoreID string) (storeStatus int, err error) { +func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string) (storeStatus int, err error) { return 0, err }