更新商户整单取消和部分取消接口
This commit is contained in:
@@ -49,17 +49,25 @@ func GetMtSkuDetailInfo(ctx *jxcontext.Context, vendorOrderID string, vendorSkuN
|
|||||||
|
|
||||||
skuName := &model.SkuNameExt{
|
skuName := &model.SkuNameExt{
|
||||||
SkuName: model.SkuName{
|
SkuName: model.SkuName{
|
||||||
Prefix: "",
|
Prefix: "",
|
||||||
Name: mtSkuDetail.Name,
|
Name: mtSkuDetail.Name,
|
||||||
Upc: utils.String2Pointer(mtSkuDetail.UpcCode),
|
Upc: utils.String2Pointer(mtSkuDetail.UpcCode),
|
||||||
Status: 1,
|
Status: 1,
|
||||||
CategoryID: 291, // ?
|
CategoryID: 291, // ?
|
||||||
IsGlobal: 1,
|
IsGlobal: 1,
|
||||||
Unit: mtSkuDetail.Unit,
|
Unit: mtSkuDetail.Unit,
|
||||||
Price: utils.Float64TwoInt(mtSkuDetail.Price * float64(100)),
|
Price: utils.Float64TwoInt(mtSkuDetail.Price * float64(100)),
|
||||||
DescImg: mtSkuDetail.PictureContents,
|
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)
|
skus := make([]*model.SkuWithVendor, 0, 0)
|
||||||
|
|||||||
@@ -361,7 +361,16 @@ func (p *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI
|
|||||||
p.postFakeMsg(order.VendorOrderID, fakeAcceptOrder)
|
p.postFakeMsg(order.VendorOrderID, fakeAcceptOrder)
|
||||||
} else {
|
} else {
|
||||||
if globals.EnableEbaiStoreWrite {
|
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
|
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) {
|
func (c *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) {
|
||||||
if globals.EnableEbaiStoreWrite {
|
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
|
return err
|
||||||
}
|
}
|
||||||
@@ -700,16 +718,47 @@ func (c *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.Goods
|
|||||||
err = c.PickupGoods(order, false, ctx.GetUserName())
|
err = c.PickupGoods(order, false, ctx.GetUserName())
|
||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
var skuList []*ebaiapi.RefundSku
|
//var skuList []*ebaiapi.RefundSku
|
||||||
for _, sku := range removedSkuList {
|
//for _, sku := range removedSkuList {
|
||||||
skuList = append(skuList, &ebaiapi.RefundSku{
|
// skuList = append(skuList, &ebaiapi.RefundSku{
|
||||||
CustomeSkuID: utils.Int2Str(jxutils.GetSkuIDFromOrderSku(sku)),
|
// CustomeSkuID: utils.Int2Str(jxutils.GetSkuIDFromOrderSku(sku)),
|
||||||
Number: utils.Int2Str(sku.Count),
|
// 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 {
|
refundSkuList := make([]*ebaiapi.RefundProductListParam, 0, 0)
|
||||||
err = api.EbaiAPI.OrderPartRefund(order.VendorOrderID, skuList)
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -328,50 +328,79 @@ func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.G
|
|||||||
if order.Status < model.OrderStatusEndBegin {
|
if order.Status < model.OrderStatusEndBegin {
|
||||||
return fmt.Errorf("订单处于未结束状态,请稍后重试")
|
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)
|
date, removerAll, err := api.EbaiAPI.GetReverseOrder(order.VendorOrderID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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 {
|
if removerAll {
|
||||||
err = api.EbaiAPI.OrderAgreePartRefund(param)
|
param := &ebaiapi.RefundOrderExamine{
|
||||||
} else {
|
ReverseOrderId: "",
|
||||||
if reason == "" {
|
OrderId: order.VendorOrderID,
|
||||||
return fmt.Errorf("拒绝退单时,请填写拒单原因")
|
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
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user