From cbee85acce2f0a26cd3fec755520ede7122eff77 Mon Sep 17 00:00:00 2001 From: renyutian Date: Thu, 21 Mar 2019 17:23:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E6=AD=A3=E5=90=91=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=BB=93=E8=B4=A6=E4=BF=A1=E6=81=AF=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/ebai/financial.go | 8 +-- business/partner/purchase/jd/financial.go | 80 ++++++++++++--------- business/partner/purchase/mtwm/financial.go | 4 +- 3 files changed, 53 insertions(+), 39 deletions(-) diff --git a/business/partner/purchase/ebai/financial.go b/business/partner/purchase/ebai/financial.go index 06828e8bf..5d7256b69 100644 --- a/business/partner/purchase/ebai/financial.go +++ b/business/partner/purchase/ebai/financial.go @@ -38,7 +38,7 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData map[string]interfac if err == nil { afsOrder.JxStoreID = order.JxStoreID } else { - globals.SugarLogger.Warnf("ebai OnFinancialMsg, afsOrderID:%s is not found from partner.CurOrderManager.LoadOrder", afsOrder.VendorOrderID) + globals.SugarLogger.Warnf("ebai AfsOrderDetail2Financial, afsOrderID:%s is not found from partner.CurOrderManager.LoadOrder", afsOrder.VendorOrderID) err = nil } if orderData["refund_detail"] != nil { @@ -61,10 +61,10 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData map[string]interfac if len(refundDetail) > 0 { afsOrder.ConfirmTime = afsOrder.Skus[0].ConfirmTime } else { - globals.SugarLogger.Warnf("ebai OnFinancialMsg, orderID:%s have no refund_detail", afsOrder.VendorOrderID) + globals.SugarLogger.Warnf("ebai AfsOrderDetail2Financial, orderID:%s have no refund_detail", afsOrder.VendorOrderID) } } else { - globals.SugarLogger.Warnf("ebai OnFinancialMsg, orderID:% refund_detail is nil", afsOrder.VendorOrderID) + globals.SugarLogger.Warnf("ebai AfsOrderDetail2Financial, orderID:% refund_detail is nil", afsOrder.VendorOrderID) } return afsOrder } @@ -101,7 +101,7 @@ func (p *PurchaseHandler) OrderDetail2Financial(result map[string]interface{}) ( } } } else { - globals.SugarLogger.Warnf("ebai OnOrderDetail, orderID:%s is not found from partner.CurOrderManager.LoadOrder", orderDetail.VendorOrderID) + globals.SugarLogger.Warnf("ebai OrderDetail2Financial, orderID:%s is not found from partner.CurOrderManager.LoadOrder", orderDetail.VendorOrderID) err = nil } if result["products"] != nil { diff --git a/business/partner/purchase/jd/financial.go b/business/partner/purchase/jd/financial.go index ecdf6c9d2..e5d46f7bd 100644 --- a/business/partner/purchase/jd/financial.go +++ b/business/partner/purchase/jd/financial.go @@ -14,9 +14,17 @@ import ( func OnFinancialMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) { var err error if msg.StatusID == jdapi.OrderStatusPayFinishedSettle || msg.StatusID == jdapi.OrderStatusAdjustSettle || msg.StatusID == jdapi.OrderStatusSwitch2SelfSettle { // 如果是正向单 - orderData, err2 := api.JdAPI.QuerySingleOrder(msg.BillID) + order, err2 := partner.CurOrderManager.LoadOrder(msg.BillID, model.VendorIDJD) if err = err2; err == nil { - err = orderman.SaveOrderFinancialInfo(curPurchaseHandler.OrderDetail2Financial(orderData)) + orderData, err2 := api.JdAPI.QuerySingleOrder(msg.BillID) + if err = err2; err == nil { + orderFinancial, err2 := curPurchaseHandler.OrderDetail2Financial(orderData, false, order) + if err = err2; err == nil { + err = orderman.SaveOrderFinancialInfo(orderFinancial) + } + } + } else { + err = nil } } else if msg.StatusID == jdapi.SaleBillStatusRefundSuccess || msg.StatusID == jdapi.SaleBillStatusSaleReturnSuccess { // 如果是退款单 orderData, err2 := api.JdAPI.GetAfsService(msg.BillID) @@ -28,8 +36,8 @@ func OnFinancialMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse } // 处理京东正向订单信息 -func (p *PurchaseHandler) OrderDetail2Financial(orderData map[string]interface{}) (orderDetail *model.OrderFinancial) { - orderDetail = &model.OrderFinancial{ +func (p *PurchaseHandler) OrderDetail2Financial(orderData map[string]interface{}, isFromOrderDetail bool, order *model.GoodsOrder) (orderFinancial *model.OrderFinancial, err error) { + orderFinancial = &model.OrderFinancial{ VendorID: model.VendorIDJD, VendorOrderID: utils.Int64ToStr(utils.MustInterface2Int64(orderData["orderId"])), ReceivableFreight: utils.MustInterface2Int64(orderData["orderReceivableFreight"]), @@ -40,28 +48,23 @@ func (p *PurchaseHandler) OrderDetail2Financial(orderData map[string]interface{} FreightTipsMoney: utils.MustInterface2Int64(orderData["tips"]), // BoxFee: utils.MustInterface2Int64(orderData["packagingMoney"]), // 京东包装(塑料袋)由京东提供,相应钱款也归京东,不记录/记录之后优化算法 } - order, err := partner.CurOrderManager.LoadOrder(orderDetail.VendorOrderID, orderDetail.VendorID) - if err == nil { - skus := order.Skus - if skus != nil { - for _, x := range skus { - orderDetail.ShopPriceMoney += x.ShopPrice - } + skus := order.Skus + if skus != nil { + for _, x := range skus { + orderFinancial.ShopPriceMoney += x.ShopPrice } - } else { - globals.SugarLogger.Warnf("jd OnJdOrderinfo, orderID:%s is not found from partner.CurOrderManager.LoadOrder", orderDetail.VendorOrderID) } if orderData["product"] != nil { product := orderData["product"].([]interface{}) for _, x := range product { xMap := x.(map[string]interface{}) - orderDetail.SalePriceMoney += utils.MustInterface2Int64(xMap["skuJdPrice"]) * utils.MustInterface2Int64(xMap["skuCount"]) + orderFinancial.SalePriceMoney += utils.MustInterface2Int64(xMap["skuJdPrice"]) * utils.MustInterface2Int64(xMap["skuCount"]) } } - orderDetail.DeliveryConfirmTime = utils.Str2TimeWithDefault(utils.Interface2String(orderData["deliveryConfirmTime"]), utils.DefaultTimeValue) + orderFinancial.DeliveryConfirmTime = utils.Str2TimeWithDefault(utils.Interface2String(orderData["deliveryConfirmTime"]), utils.DefaultTimeValue) if utils.Interface2String(orderData["deliveryCarrierNo"]) == jdapi.SelfDeliveryCarrierNo { - orderDetail.SelfDeliveryDiscountMoney = utils.MustInterface2Int64(orderData["orderReceivableFreight"]) - orderDetail.DistanceFreightMoney = 0 + orderFinancial.SelfDeliveryDiscountMoney = utils.MustInterface2Int64(orderData["orderReceivableFreight"]) + orderFinancial.DistanceFreightMoney = 0 } if orderData["discount"] != nil { discount := orderData["discount"].([]interface{}) @@ -70,25 +73,29 @@ func (p *PurchaseHandler) OrderDetail2Financial(orderData map[string]interface{} discountPrice := utils.MustInterface2Int64(xMap["discountPrice"]) discountType := int(utils.MustInterface2Int64(xMap["discountType"])) if discountType == jdapi.FreightDiscountTypeByShop { - orderDetail.FreightDiscountMoney = discountPrice + orderFinancial.FreightDiscountMoney = discountPrice } if discountType == jdapi.FreightDiscountTypeByVip || discountType == jdapi.FreightDiscountTypeByActivity || discountType == jdapi.FreightDiscountTypeByCoupons { - orderDetail.VendorFreightDiscountMoney = discountPrice + orderFinancial.VendorFreightDiscountMoney = discountPrice } - orderDetail.TotalDiscountMoney += discountPrice + orderFinancial.TotalDiscountMoney += discountPrice } } - order1, err2 := api.JdAPI.OrderShoudSettlementService(orderDetail.VendorOrderID) - if err2 == nil { - orderDetail.ShopMoney = utils.Interface2Int64WithDefault(order1["settlementAmount"], 0) - orderDetail.PmMoney += utils.Interface2Int64WithDefault(order1["goodsCommission"], 0) - orderDetail.PmMoney += utils.Interface2Int64WithDefault(order1["freightCommission"], 0) - orderDetail.PmMoney += utils.Interface2Int64WithDefault(order1["packageCommission"], 0) - orderDetail.PmMoney += utils.Interface2Int64WithDefault(order1["guaranteedCommission"], 0) - orderDetail.PmSubsidyMoney += utils.Interface2Int64WithDefault(order1["platOrderGoodsDiscountMoney"], 0) - orderDetail.PmSubsidyMoney += utils.Interface2Int64WithDefault(order1["platSkuGoodsDiscountMoney"], 0) + order1, err2 := api.JdAPI.OrderShoudSettlementService(orderFinancial.VendorOrderID) + if err = err2; err == nil { + orderFinancial.ShopMoney = utils.Interface2Int64WithDefault(order1["settlementAmount"], 0) + orderFinancial.PmMoney += utils.Interface2Int64WithDefault(order1["goodsCommission"], 0) + orderFinancial.PmMoney += utils.Interface2Int64WithDefault(order1["freightCommission"], 0) + orderFinancial.PmMoney += utils.Interface2Int64WithDefault(order1["packageCommission"], 0) + orderFinancial.PmMoney += utils.Interface2Int64WithDefault(order1["guaranteedCommission"], 0) + orderFinancial.PmSubsidyMoney += utils.Interface2Int64WithDefault(order1["platOrderGoodsDiscountMoney"], 0) + orderFinancial.PmSubsidyMoney += utils.Interface2Int64WithDefault(order1["platSkuGoodsDiscountMoney"], 0) + } else { + if !isFromOrderDetail { + globals.SugarLogger.Warnf("jd OrderDetail2Financial, orderID:%s is not found from api.JdAPI.OrderShoudSettlementService", orderFinancial.VendorOrderID) + } } - return orderDetail + return orderFinancial, err } // 处理京东售后订单结账信息 @@ -110,7 +117,7 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData map[string]interfac if err == nil { afsOrder.JxStoreID = order.JxStoreID } else { - globals.SugarLogger.Warnf("jd OnFinancialMsg, afsOrderID:%s is not found from partner.CurOrderManager.LoadOrder", afsOrder.VendorOrderID) + globals.SugarLogger.Warnf("jd AfsOrderDetail2Financial, afsOrderID:%s is not found from partner.CurOrderManager.LoadOrder", afsOrder.VendorOrderID) } if orderData["afsDetailList"] != nil { refundDetail := orderData["afsDetailList"].([]interface{}) @@ -137,14 +144,21 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData map[string]interfac afsOrder.Skus = append(afsOrder.Skus, orderSku) } if len(refundDetail) <= 0 { - globals.SugarLogger.Warnf("ebai OnFinancialMsg, orderID:%s have no refund_detail", afsOrder.VendorOrderID) + globals.SugarLogger.Warnf("jd AfsOrderDetail2Financial, orderID:%s have no refund_detail", afsOrder.VendorOrderID) } } else { - globals.SugarLogger.Warnf("ebai OnFinancialMsg, orderID:% refund_detail is nil", afsOrder.VendorOrderID) + globals.SugarLogger.Warnf("jd AfsOrderDetail2Financial, orderID:% refund_detail is nil", afsOrder.VendorOrderID) } return afsOrder } func (p *PurchaseHandler) OnOrderDetail(orderDetail map[string]interface{}) (err error) { + order, err := partner.CurOrderManager.LoadOrder(utils.Int64ToStr(utils.MustInterface2Int64(orderDetail["orderId"])), model.VendorIDJD) + if err == nil { + orderFinancial, err2 := curPurchaseHandler.OrderDetail2Financial(orderDetail, true, order) + if err = err2; err == nil { + err = orderman.SaveOrderFinancialInfo(orderFinancial) + } + } return err } diff --git a/business/partner/purchase/mtwm/financial.go b/business/partner/purchase/mtwm/financial.go index 5a9933325..f5bfd14fa 100644 --- a/business/partner/purchase/mtwm/financial.go +++ b/business/partner/purchase/mtwm/financial.go @@ -41,7 +41,7 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData url.Values) (afsOrd if err == nil { afsOrder.JxStoreID = order.JxStoreID } else { - globals.SugarLogger.Warnf("mtwm OnFinancialMsg, afsOrderID:%s is not found from partner.CurOrderManager.LoadOrder", afsOrder.VendorOrderID) + globals.SugarLogger.Warnf("mtwm AfsOrderDetail2Financial, afsOrderID:%s is not found from partner.CurOrderManager.LoadOrder", afsOrder.VendorOrderID) err = nil } food := orderData.Get("food") @@ -61,7 +61,7 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData url.Values) (afsOrd afsOrder.Skus = append(afsOrder.Skus, orderSku) } if len(refundDetail) <= 0 { - globals.SugarLogger.Warnf("ebai OnFinancialMsg, orderID:%s have no refund_detail", afsOrder.VendorOrderID) + globals.SugarLogger.Warnf("mtwm AfsOrderDetail2Financial, orderID:%s have no refund_detail", afsOrder.VendorOrderID) } return afsOrder }