From 738f1820d5fcd1dfefe2f46c2d2f34a37deb9e51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 7 Mar 2024 14:56:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=95=86=E6=88=B7=E6=95=B4?= =?UTF-8?q?=E5=8D=95=E5=8F=96=E6=B6=88=E5=92=8C=E9=83=A8=E5=88=86=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/vendor_sku.go | 28 +++--- business/partner/purchase/ebai/order.go | 69 ++++++++++++--- business/partner/purchase/ebai/order_afs.go | 97 +++++++++++++-------- 3 files changed, 140 insertions(+), 54 deletions(-) diff --git a/business/jxstore/cms/vendor_sku.go b/business/jxstore/cms/vendor_sku.go index bb6329385..53189e583 100644 --- a/business/jxstore/cms/vendor_sku.go +++ b/business/jxstore/cms/vendor_sku.go @@ -49,17 +49,25 @@ func GetMtSkuDetailInfo(ctx *jxcontext.Context, vendorOrderID string, vendorSkuN skuName := &model.SkuNameExt{ SkuName: model.SkuName{ - Prefix: "", - Name: mtSkuDetail.Name, - Upc: utils.String2Pointer(mtSkuDetail.UpcCode), - Status: 1, - CategoryID: 291, // ? - IsGlobal: 1, - Unit: mtSkuDetail.Unit, - Price: utils.Float64TwoInt(mtSkuDetail.Price * float64(100)), - DescImg: mtSkuDetail.PictureContents, + Prefix: "", + Name: mtSkuDetail.Name, + Upc: utils.String2Pointer(mtSkuDetail.UpcCode), + Status: 1, + CategoryID: 291, // ? + IsGlobal: 1, + Unit: mtSkuDetail.Unit, + Price: utils.Float64TwoInt(mtSkuDetail.Price * float64(100)), + DescImg: mtSkuDetail.PictureContents, + JdsStockSwitch: 1, + PreparationTime: 0, + MtAttribute: "", + // 京西创建是传入的属性 + // [{"attr_id":"1200000088","attr_name":"品牌","valueList":[{"value":"其他"}]},{"attr_id":"1200000135","attr_name":"包装方式","valueList":[{"value_id":"1300000231","value":"袋装"}]}] + // 美团获取的属性,不太好转换,暂时不弄 + // [{"attrId":1200000202,"attrName":"品种","setAttrId":true,"setAttrName":true,"setValueList":true,"valueList":[{"setValue":true,"setValueId":true,"value":"二荆条","valueId":1300015565}],"valueListIterator":[{"$ref":"$[0].valueList[0]"}],"valueListSize":1},{"attrId":1200000135,"attrName":"包装方式","setAttrId":true,"setAttrName":true,"setValueList":true,"valueList":[{"setValue":true,"setValueId":true,"value":"散装","valueId":1300000232}],"valueListIterator":[{"$ref":"$[1].valueList[0]"}],"valueListSize":1}] }, - Skus: nil, + Skus: nil, + MtwmCategoryID: utils.Int2Str(mtSkuDetail.TagID), } skus := make([]*model.SkuWithVendor, 0, 0) diff --git a/business/partner/purchase/ebai/order.go b/business/partner/purchase/ebai/order.go index b48d10d47..bc1b70068 100644 --- a/business/partner/purchase/ebai/order.go +++ b/business/partner/purchase/ebai/order.go @@ -361,7 +361,16 @@ func (p *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI p.postFakeMsg(order.VendorOrderID, fakeAcceptOrder) } else { if globals.EnableEbaiStoreWrite { - err = api.EbaiAPI.OrderCancel(order.VendorOrderID, ebaiapi.CancelTypeCustom, "bu") + //err = api.EbaiAPI.OrderCancel(order.VendorOrderID, ebaiapi.CancelTypeCustom, "bu") + err = api.EbaiAPI.OrderReverseApply(&ebaiapi.OrderReverseApplyParam{ + OrderId: order.VendorOrderID, + IdempotentId: utils.Int64ToStr(time.Now().Unix()), + RefundType: ebaiapi.MerchantOrderReverseApplyCancel, + ReasonCode: "7015", + ReasonRemarks: "", + NeedIvrUser: 0, + RefundProductList: nil, + }) } } return err @@ -689,7 +698,16 @@ func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *mod func (c *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) { if globals.EnableEbaiStoreWrite { - err = api.EbaiAPI.OrderCancel(order.VendorOrderID, ebaiapi.CancelTypeCustom, reason) + err = api.EbaiAPI.OrderReverseApply(&ebaiapi.OrderReverseApplyParam{ + OrderId: order.VendorOrderID, + IdempotentId: utils.Int64ToStr(time.Now().Unix()), + RefundType: ebaiapi.MerchantOrderReverseApplyCancel, + ReasonCode: "7015", + ReasonRemarks: reason, + NeedIvrUser: 0, + RefundProductList: nil, + }) + //err = api.EbaiAPI.OrderCancel(order.VendorOrderID, ebaiapi.CancelTypeCustom, reason) } return err } @@ -700,16 +718,47 @@ func (c *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.Goods err = c.PickupGoods(order, false, ctx.GetUserName()) } if err == nil { - var skuList []*ebaiapi.RefundSku - for _, sku := range removedSkuList { - skuList = append(skuList, &ebaiapi.RefundSku{ - CustomeSkuID: utils.Int2Str(jxutils.GetSkuIDFromOrderSku(sku)), - Number: utils.Int2Str(sku.Count), - }) + //var skuList []*ebaiapi.RefundSku + //for _, sku := range removedSkuList { + // skuList = append(skuList, &ebaiapi.RefundSku{ + // CustomeSkuID: utils.Int2Str(jxutils.GetSkuIDFromOrderSku(sku)), + // Number: utils.Int2Str(sku.Count), + // }) + //} + //if globals.EnableEbaiStoreWrite { + // err = api.EbaiAPI.OrderPartRefund(order.VendorOrderID, skuList) + //} + eabiApi := api.EbaiAPI + orderDetail, err := eabiApi.OrderGet2(order.VendorOrderID) + if err != nil { + return err } - if globals.EnableEbaiStoreWrite { - err = api.EbaiAPI.OrderPartRefund(order.VendorOrderID, skuList) + refundSkuList := make([]*ebaiapi.RefundProductListParam, 0, 0) + for _, r := range removedSkuList { + for _, v := range orderDetail.Products[0] { + if utils.Int2Str(jxutils.GetSkuIDFromOrderSku(r)) == v.CustomSkuID || r.VendorSkuID == v.BaiduProductID { + refundSkuList = append(refundSkuList, &ebaiapi.RefundProductListParam{ + SubBizOrderId: v.SubBizOrderID, + PlatformSkuId: v.BaiduProductID, + Number: utils.Int2Str(r.Count), + RefundAmount: "", + FundCalculateType: "0", + }) + } + } } + + // 部分退款 + err = eabiApi.OrderReverseApply(&ebaiapi.OrderReverseApplyParam{ + OrderId: order.VendorOrderID, + IdempotentId: utils.Int64ToStr(time.Now().Unix()), + RefundType: ebaiapi.MerchantOrderReverseApplyPartCancel, + ReasonCode: "7015", + ReasonRemarks: reason, + NeedIvrUser: 1, + RefundProductList: refundSkuList, + }) + } return err } diff --git a/business/partner/purchase/ebai/order_afs.go b/business/partner/purchase/ebai/order_afs.go index ef35d475c..a161a453a 100644 --- a/business/partner/purchase/ebai/order_afs.go +++ b/business/partner/purchase/ebai/order_afs.go @@ -328,50 +328,79 @@ func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.G if order.Status < model.OrderStatusEndBegin { return fmt.Errorf("订单处于未结束状态,请稍后重试") } + eabiApi := api.EbaiAPI - param := &ebaiapi.RefundOrderExamine{ - ReverseOrderId: "", - OrderId: order.VendorOrderID, - IdempotentId: utils.Int64ToStr(time.Now().UnixNano()), - ActionType: ebaiapi.RefundTypeAgree, - ReasonCode: "", - ReasonRemarks: reason, - } date, removerAll, err := api.EbaiAPI.GetReverseOrder(order.VendorOrderID) if err != nil { return err } - - refundProductList := make([]*ebaiapi.RefundProductList, 0, 0) - if date != nil && len(date) != model.NO { - for _, v := range date { - v2 := v.(map[string]interface{}) - refundProduct := &ebaiapi.RefundProductList{ - SubBizOrderId: v2["sub_biz_order_id"].(string), - PlatformSkuId: utils.Int64ToStr(utils.Interface2Int64WithDefault(v2["platform_sku_id"], 0)), - } - param.ReverseOrderId = utils.Int64ToStr(utils.MustInterface2Int64(v2["refund_order_id"])) - switch utils.MustInterface2Int64(v2["fund_calculate_type"]) { - case 0: - refundProduct.Number = utils.Int64ToStr(utils.MustInterface2Int64(v2["refund_quantity"])) - case 1: - refundProduct.RefundAmount = utils.Int64ToStr(utils.MustInterface2Int64(v2["refund_user_amount"])) - } - refundProductList = append(refundProductList, refundProduct) - } - param.RefundProductList = refundProductList - } - //售后部分多次退款 if removerAll { - err = api.EbaiAPI.OrderAgreePartRefund(param) - } else { - if reason == "" { - return fmt.Errorf("拒绝退单时,请填写拒单原因") + param := &ebaiapi.RefundOrderExamine{ + ReverseOrderId: "", + OrderId: order.VendorOrderID, + IdempotentId: utils.Int64ToStr(time.Now().UnixNano()), + ActionType: ebaiapi.RefundTypeAgree, + ReasonCode: "", + ReasonRemarks: reason, } - if err := api.EbaiAPI.OrderPartRefund(order.VendorOrderID, orderSkus2AfsSkus(refundSkuList)); err != nil { + refundProductList := make([]*ebaiapi.RefundProductList, 0, 0) + if date != nil && len(date) != model.NO { + for _, v := range date { + v2 := v.(map[string]interface{}) + refundProduct := &ebaiapi.RefundProductList{ + SubBizOrderId: v2["sub_biz_order_id"].(string), + PlatformSkuId: utils.Int64ToStr(utils.Interface2Int64WithDefault(v2["platform_sku_id"], 0)), + } + param.ReverseOrderId = utils.Int64ToStr(utils.MustInterface2Int64(v2["refund_order_id"])) + switch utils.MustInterface2Int64(v2["fund_calculate_type"]) { + case 0: + refundProduct.Number = utils.Int64ToStr(utils.MustInterface2Int64(v2["refund_quantity"])) + case 1: + refundProduct.RefundAmount = utils.Int64ToStr(utils.MustInterface2Int64(v2["refund_user_amount"])) + } + refundProductList = append(refundProductList, refundProduct) + } + param.RefundProductList = refundProductList + } + err = eabiApi.OrderAgreePartRefund(param) + } else { + orderDetail, err := eabiApi.OrderGet2(order.VendorOrderID) + if err != nil { return err } + skuList2 := make([]*ebaiapi.RefundProductListParam, 0, 0) + for _, r := range refundSkuList { + for _, v := range orderDetail.Products[0] { + if utils.Int2Str(jxutils.GetSkuIDFromOrderSku(r)) == v.CustomSkuID || r.VendorSkuID == v.BaiduProductID { + skuList2 = append(skuList2, &ebaiapi.RefundProductListParam{ + SubBizOrderId: v.SubBizOrderID, + PlatformSkuId: v.BaiduProductID, + Number: utils.Int2Str(r.Count), + RefundAmount: "", + FundCalculateType: "0", + }) + } + } + } + + // 部分退款 + err = eabiApi.OrderReverseApply(&ebaiapi.OrderReverseApplyParam{ + OrderId: order.VendorOrderID, + IdempotentId: utils.Int64ToStr(time.Now().Unix()), + RefundType: ebaiapi.MerchantOrderReverseApplyPartCancel, + ReasonCode: "7015", + ReasonRemarks: reason, + NeedIvrUser: 1, + RefundProductList: skuList2, + }) + + //if reason == "" { + // return fmt.Errorf("拒绝退单时,请填写拒单原因") + //} + //if err := api.EbaiAPI.OrderPartRefund(order.VendorOrderID, orderSkus2AfsSkus(refundSkuList)); err != nil { + // return err + //} } return err }