From 32924c7262556f5d07c558b322b111ccbb227852 Mon Sep 17 00:00:00 2001 From: renyutian Date: Wed, 24 Apr 2019 15:30:35 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A5=BF=E7=99=BE=20=E9=83=A8=E5=88=86?= =?UTF-8?q?=E9=80=80=E6=AC=BE=E8=AE=A2=E5=8D=95=E9=80=80=E6=AC=BE=E4=B9=8B?= =?UTF-8?q?=E5=90=8E=E7=94=B1=E4=BA=8E=E5=8E=9F=E6=AD=A3=E5=90=91=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E4=BD=A3=E9=87=91=E6=94=B9=E5=8F=98=E8=80=8C=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E6=89=A3=E6=AC=BE=E9=87=91=E9=A2=9D=E4=B8=8D=E5=87=86?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/financial.go | 2 +- business/model/order_financial.go | 1 + business/partner/purchase/ebai/ebai_test.go | 1 + business/partner/purchase/ebai/financial.go | 10 +++++++++ .../partner/purchase/ebai/financial_test.go | 22 +++++++++++-------- 5 files changed, 26 insertions(+), 10 deletions(-) diff --git a/business/jxcallback/orderman/financial.go b/business/jxcallback/orderman/financial.go index 4e0e76898..e3718efc1 100644 --- a/business/jxcallback/orderman/financial.go +++ b/business/jxcallback/orderman/financial.go @@ -158,7 +158,7 @@ func (c *OrderManager) SaveAfsOrderFinancialInfo(afsOrder *model.AfsOrder) (err }() // 平台结算扣除汇总--平台补贴,售后产生运费,平台收包装费,同城运费、、、 deductionsByPm := afsOrder.PmSubsidyMoney + afsOrder.AfsFreightMoney + afsOrder.BoxMoney + afsOrder.TongchengFreightMoney - afsOrder.RefundMoneyByCal = afsOrder.SkuUserMoney + afsOrder.FreightUserMoney + deductionsByPm + afsOrder.RefundMoneyByCal = afsOrder.SkuUserMoney + afsOrder.FreightUserMoney + deductionsByPm - afsOrder.PmRefundMoney // order.TotalMoney += order.SkuJxMoney // 退款单京西补贴部分先不作计算 if err = dao.CreateEntity(db, afsOrder); err != nil { if !dao.IsDuplicateError(err) { diff --git a/business/model/order_financial.go b/business/model/order_financial.go index 3c63c0725..5eb38bef3 100644 --- a/business/model/order_financial.go +++ b/business/model/order_financial.go @@ -85,6 +85,7 @@ type AfsOrder struct { SkuBoxMoney int64 `json:"skuBoxMoney"` // 应退订单餐盒费 PmSubsidyMoney int64 `json:"pmSubsidyMoney"` // 平台总补贴金额 PmSkuSubsidyMoney int64 `json:"pmSkuSubsidyMoney"` // 平台sku补贴金额 + PmRefundMoney int64 `json:"pmRefundMoney"` // 订单取消后可能存在佣金减少,平台退回部分金额的情况 RefundMoney int64 `json:"refundMoney"` // 平台扣款总额 1 RefundMoneyByCal int64 `json:"refundMoneyByCal"` // 平台扣款总额-通过公式计算平台扣除京西的金额M // JxSkuMoney int64 `json:"jxSkuMoney"` // 京西补贴金额,现阶段是平台扣京西多少钱,京西扣商家多少钱,暂不考虑撤回京西补贴 diff --git a/business/partner/purchase/ebai/ebai_test.go b/business/partner/purchase/ebai/ebai_test.go index 37f0870e7..b82d6bdb4 100644 --- a/business/partner/purchase/ebai/ebai_test.go +++ b/business/partner/purchase/ebai/ebai_test.go @@ -6,6 +6,7 @@ import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" + _ "git.rosy.net.cn/jx-callback/business/jxcallback/orderman" _ "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/defsch" "git.rosy.net.cn/jx-callback/globals/testinit" ) diff --git a/business/partner/purchase/ebai/financial.go b/business/partner/purchase/ebai/financial.go index 01ea3a6d4..c4dd53b9a 100644 --- a/business/partner/purchase/ebai/financial.go +++ b/business/partner/purchase/ebai/financial.go @@ -13,7 +13,9 @@ import ( func OnFinancialMsg(msg *ebaiapi.CallbackMsg) (err error) { if msg.Cmd == ebaiapi.CmdOrderPartRefund { // 部分退款处理 if utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["status"])) == ebaiapi.OrderPartRefundSuccess { + // 获取到部分退款订单id afsOrderID := utils.Interface2String(msg.Body["order_id"]) + // 处理部分退款信息 orderData, err2 := api.EbaiAPI.OrderPartrefundGet(afsOrderID) if err = err2; err == nil { afsOrder := CurPurchaseHandler.AfsOrderDetail2Financial(orderData) @@ -114,6 +116,14 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData map[string]interfac globals.SugarLogger.Warnf("ebai AfsOrderDetail2Financial, afsOrderID:%s is not found from partner.CurOrderManager.LoadOrder", afsOrder.VendorOrderID) err = nil } + // 部分退款订单,第三方平台佣金会变化,金额为 orderData["commission"],是否将该字段更新到正向订单结算表中 + // 不作更新的话,商户可以得到的钱会少几毛钱,最终京西收益 + // 如果要更新,总佣金,京西佣金是否都要更新,而其它一系列连锁反应,是否需要考虑更新 + // 或者换个思路,不考虑变更之前的正向订单,在佣金上入手,退款金额减去佣金减少的部分 + orderFinancial, err := partner.CurOrderManager.LoadOrderFinancial(afsOrder.VendorOrderID, model.VendorIDEBAI) + if err == nil { + afsOrder.PmRefundMoney = orderFinancial.PmMoney - utils.MustInterface2Int64(orderData["commission"]) + } if orderData["refund_detail"] != nil { refundDetail := orderData["refund_detail"].([]interface{}) for _, refundInfo := range refundDetail { diff --git a/business/partner/purchase/ebai/financial_test.go b/business/partner/purchase/ebai/financial_test.go index 9e601de51..198272c13 100644 --- a/business/partner/purchase/ebai/financial_test.go +++ b/business/partner/purchase/ebai/financial_test.go @@ -7,20 +7,24 @@ import ( "time" "git.rosy.net.cn/baseapi/platformapi/ebaiapi" - "git.rosy.net.cn/baseapi/utils" ) func TestOnFinancialMsg(t *testing.T) { msg := &ebaiapi.CallbackMsg{ - // Cmd: "order.partrefund.push", - Cmd: "order.user.cancel", - Body: make(map[string]interface{}), + Timestamp: time.Now().Unix(), + Body: make(map[string]interface{}), } - msg.Body["refund_id"] = "15531567190216" - msg.Body["timestamp"] = utils.Int64ToStr(time.Now().Unix()) - // msg.Body["status"] = json.Number("20") - msg.Body["type"] = json.Number("40") - msg.Body["cancel_type"] = json.Number("2") + msg.Body["order_id"] = "1554939646172038357" + + // 部分退款 + msg.Cmd = "order.partrefund.push" + msg.Body["status"] = json.Number("20") + + // 全单退款 + // msg.Cmd = "order.user.cancel" + // msg.Body["type"] = json.Number("40") + // msg.Body["cancel_type"] = json.Number("2") + res := OnFinancialMsg(msg) fmt.Println(res) }