From ef9e074dd4a6073a7ef716b8c13dc022736a3016 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 25 Aug 2023 16:13:02 +0800 Subject: [PATCH] 1 --- business/partner/purchase/ebai/order.go | 22 ++++++- business/partner/purchase/ebai/order_afs.go | 66 +++++++++++++++---- .../partner/purchase/tao_vegetable/order.go | 9 ++- 3 files changed, 83 insertions(+), 14 deletions(-) diff --git a/business/partner/purchase/ebai/order.go b/business/partner/purchase/ebai/order.go index 4a79547ea..8cf8e5aaf 100644 --- a/business/partner/purchase/ebai/order.go +++ b/business/partner/purchase/ebai/order.go @@ -659,9 +659,27 @@ func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *mode func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *model.GoodsOrder, isAcceptIt bool, reason string) (err error) { if globals.EnableEbaiStoreWrite { if isAcceptIt { - err = api.EbaiAPI.OrderAgreeRefund(order.VendorOrderID) + err = api.EbaiAPI.OrderAgreeRefund(&ebaiapi.RefundOrderExamine{ + ReverseOrderId: "", + OrderId: order.VendorOrderID, + IdempotentId: utils.Int64ToStr(time.Now().UnixNano()), + ActionType: ebaiapi.RefundTypeAgree, + ReasonRemarks: reason, + }) } else { - err = api.EbaiAPI.OrderDisagreeRefund(order.VendorOrderID, reason) + if reason == "" { + return fmt.Errorf("拒绝退单时,请填写拒单原因") + } + + err = api.EbaiAPI.OrderDisagreeRefund(&ebaiapi.RefundOrderExamine{ + ReverseOrderId: "", + OrderId: order.VendorOrderID, + IdempotentId: utils.Int64ToStr(time.Now().UnixNano()), + ActionType: ebaiapi.RefundTypeAgree, + ReasonCode: "7001", + ReasonRemarks: reason, + RefundProductList: "", + }) } } return err diff --git a/business/partner/purchase/ebai/order_afs.go b/business/partner/purchase/ebai/order_afs.go index 33af86e67..988b078a5 100644 --- a/business/partner/purchase/ebai/order_afs.go +++ b/business/partner/purchase/ebai/order_afs.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "strings" + "time" "git.rosy.net.cn/baseapi/platformapi/ebaiapi" "git.rosy.net.cn/baseapi/utils" @@ -225,11 +226,32 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msg *ebaiapi.CallbackMsg) (order func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) { if globals.EnableEbaiStoreWrite { if approveType == partner.AfsApproveTypeRefused { - err = api.EbaiAPI.OrderDisagreeReturnGoods(order.VendorOrderID, order.AfsOrderID, reason) + if reason == "" { + return fmt.Errorf("拒绝退单时请填写原因") + } + param := &ebaiapi.RefundOrderExamine{ + ReverseOrderId: order.AfsOrderID, + OrderId: order.VendorOrderID, + IdempotentId: utils.Int64ToStr(time.Now().UnixNano()), + ActionType: ebaiapi.RefundTypeRefuseGoods, + ReasonCode: "7001", + ReasonRemarks: reason, + RefundProductList: "", + } + err = api.EbaiAPI.OrderDisagreeReturnGoods(param) } else if approveType == partner.AfsApproveTypeRefusedToRefundMoney { return errors.New("此平台暂时不支持") } else { - err = api.EbaiAPI.OrderAgreeReturnGoods(order.VendorOrderID, order.AfsOrderID) + param := &ebaiapi.RefundOrderExamine{ + ReverseOrderId: order.AfsOrderID, + OrderId: order.VendorOrderID, + IdempotentId: utils.Int64ToStr(time.Now().UnixNano()), + ActionType: ebaiapi.RefundTypeAgreeGoods, + ReasonCode: "", + ReasonRemarks: reason, + RefundProductList: "", + } + err = api.EbaiAPI.OrderAgreeReturnGoods(param) } } return err @@ -250,19 +272,41 @@ func (c *PurchaseHandler) RefundOrder(ctx *jxcontext.Context, order *model.Goods // 发起部分退款 售后/售中 func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, refundSkuList []*model.OrderSku, reason string) (err error) { if globals.EnableEbaiStoreWrite { + //获取afsOrder + var afsOrderInfo *model.AfsOrder + result, err := api.EbaiAPI.OrderPartRefundGet(order.VendorOrderID) + if err != nil { + return err + } + afsOrderInfo = CurPurchaseHandler.AfsOrderDetail2Financial(result) + //售后部分多次退款 if order.Status > model.OrderStatusEndBegin { - //获取afsOrder - var afsOrderInfo *model.AfsOrder - result, err := api.EbaiAPI.OrderPartRefundGet(order.VendorOrderID) - if err != nil { - return err - } - afsOrderInfo = CurPurchaseHandler.AfsOrderDetail2Financial(result) - if err := api.EbaiAPI.OrderAgreePartRefund(afsOrderInfo.VendorOrderID, orderSkus2AfsSkus(refundSkuList), afsOrderInfo.AfsOrderID); err != nil { - return err + param := &ebaiapi.RefundOrderExamine{ + ReverseOrderId: afsOrderInfo.AfsOrderID, + OrderId: afsOrderInfo.VendorOrderID, + IdempotentId: utils.Int64ToStr(time.Now().UnixNano()), + ActionType: ebaiapi.RefundTypeAgree, + ReasonCode: "", + ReasonRemarks: reason, + RefundProductList: "", } + err = api.EbaiAPI.OrderAgreePartRefund(param) } else { + if reason == "" { + return fmt.Errorf("拒绝退单时,请填写拒单原因") + } + + //param := &ebaiapi.RefundOrderExamine{ + // ReverseOrderId: afsOrderInfo.AfsOrderID, + // OrderId: afsOrderInfo.VendorOrderID, + // IdempotentId: utils.Int64ToStr(time.Now().UnixNano()), + // ActionType: ebaiapi.RefundTypeRefuse, + // ReasonCode: "7001", + // ReasonRemarks: reason, + // RefundProductList: "", + //} + //err = api.EbaiAPI.OrderPartRefund(param) if err := api.EbaiAPI.OrderPartRefund(order.VendorOrderID, orderSkus2AfsSkus(refundSkuList)); err != nil { return err } diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index d96c9faec..265e358f3 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -502,9 +502,16 @@ func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bo if err != nil { return err } - if err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").DeliveryFinish(param); err != nil { + api := getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "") + err = api.DeliveryFinish(param) + + if err != nil && strings.Contains(err.Error(), "并发操作,执行失败,请重试") { + time.Sleep(200 * time.Millisecond) + api.DeliveryFinish(param) + } else if err != nil { return err } + c.postFakeMsg(order.VendorOrderID, tao_vegetable.OrderStatusPickedUp, tao_vegetable.OrderStatusPickedUp) } return err