Merge branch 'jdshop' of https://e.coding.net/rosydev/jx-callback into jdshop
This commit is contained in:
@@ -291,61 +291,68 @@ 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
|
||||
if order.Status < model.OrderStatusEndBegin {
|
||||
return fmt.Errorf("订单处于未结束状态,请稍后重试")
|
||||
}
|
||||
|
||||
param := &ebaiapi.RefundOrderExamine{
|
||||
ReverseOrderId: "",
|
||||
OrderId: "",
|
||||
IdempotentId: utils.Int64ToStr(time.Now().UnixNano()),
|
||||
ActionType: ebaiapi.RefundTypeAgree,
|
||||
ReasonCode: "",
|
||||
ReasonRemarks: reason,
|
||||
}
|
||||
date, err := api.EbaiAPI.GetReverseOrder(order.VendorOrderID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if date == nil {
|
||||
return fmt.Errorf("GetReverseOrder 饿百售后数据查询为空")
|
||||
}
|
||||
|
||||
refundProductList := make([]*ebaiapi.RefundProductList, 0, 0)
|
||||
removerAll := false
|
||||
for k, 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)),
|
||||
}
|
||||
afsOrderInfo = CurPurchaseHandler.AfsOrderDetail2Financial(result)
|
||||
// 全退
|
||||
if k == model.NO && utils.MustInterface2Int64(v2["is_refund_all"]) == model.YES {
|
||||
removerAll = true
|
||||
}
|
||||
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 order.Status > model.OrderStatusEndBegin {
|
||||
param := &ebaiapi.RefundOrderExamine{
|
||||
ReverseOrderId: afsOrderInfo.AfsOrderID,
|
||||
OrderId: afsOrderInfo.VendorOrderID,
|
||||
IdempotentId: utils.Int64ToStr(time.Now().UnixNano()),
|
||||
ActionType: ebaiapi.RefundTypeAgree,
|
||||
ReasonCode: "",
|
||||
ReasonRemarks: reason,
|
||||
}
|
||||
date, _ := api.EbaiAPI.GetReverseOrder(order.VendorOrderID)
|
||||
refundProductList := make([]*ebaiapi.RefundProductList, 0, 0)
|
||||
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)),
|
||||
}
|
||||
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 = api.EbaiAPI.OrderAgreePartRefund(param)
|
||||
} else {
|
||||
if reason == "" {
|
||||
return fmt.Errorf("拒绝退单时,请填写拒单原因")
|
||||
}
|
||||
//售后部分多次退款
|
||||
if removerAll {
|
||||
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
|
||||
}
|
||||
//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
|
||||
}
|
||||
}
|
||||
return err
|
||||
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
"fmt"
|
||||
"git.rosy.net.cn/jx-callback/business/bidding"
|
||||
"git.rosy.net.cn/jx-callback/business/partner/delivery"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -871,6 +872,7 @@ func (c *OrderController) PartRefundOrder() {
|
||||
order, err = partner.CurOrderManager.LoadOrder(params.VendorOrderID, params.VendorID)
|
||||
if err == nil {
|
||||
removedAll, err2 := fillSkuList(skuList, order.Skus)
|
||||
globals.SugarLogger.Debugf("========removedAll := %v", removedAll)
|
||||
if err = err2; err == nil {
|
||||
if removedAll {
|
||||
err = defsch.FixedScheduler.RefundOrder(params.Ctx, order, params.Reason)
|
||||
|
||||
Reference in New Issue
Block a user