diff --git a/business/jxcallback/orderman/financial.go b/business/jxcallback/orderman/financial.go index 8434ae5dd..eab33aa72 100644 --- a/business/jxcallback/orderman/financial.go +++ b/business/jxcallback/orderman/financial.go @@ -51,8 +51,11 @@ func (c *OrderManager) SaveOrderFinancialInfo(order *model.OrderFinancial, opera } for _, activity := range order.Discounts { if err = dao.CreateEntity(db, activity); err != nil { - - return err + if !dao.IsDuplicateError(err) { + globals.SugarLogger.Warnf("On SaveOrderDiscountFinancialInfo order.VendorOrderID:%s err: order is err", order.VendorOrderID) + return err + } + return nil } } order.ShopMoneyByCal = order.SalePriceMoney - order.TotalDiscountMoney - order.PointsDeductionMoney + order.PmFreightDiscountMoney - order.DistanceFreightMoney - order.FreightTipsMoney - order.DonationMoney + order.SelfDeliveryDiscountMoney + order.PmSubsidyMoney + order.SkuBoxMoney + order.BoxMoney - order.PmMoney @@ -92,8 +95,11 @@ func (c *OrderManager) SaveOrderFinancialInfo(order *model.OrderFinancial, opera sku.JxShopMoney = sku.ShopMoneyByCal + sku.JxSubsidyMoney - sku.JxDeductionsMoney order.Skus[0].JxShopMoney += sku.JxShopMoney if err = dao.CreateEntity(db, sku); err != nil { - globals.SugarLogger.Warnf("On SaveOrderSkuFinancialInfo order.VendorOrderID:%s err: order is err", order.VendorOrderID) - return err + if !dao.IsDuplicateError(err) { + globals.SugarLogger.Warnf("On SaveOrderSkuFinancialInfo order.VendorOrderID:%s err: order is err", order.VendorOrderID) + return err + } + return nil } } if len(order.Skus) > 0 { @@ -106,8 +112,11 @@ func (c *OrderManager) SaveOrderFinancialInfo(order *model.OrderFinancial, opera sku.JxDeductionsMoney = deductionsByJx - sku.JxDeductionsMoney sku.JxShopMoney = order.JxShopMoney - sku.JxShopMoney if err = dao.CreateEntity(db, sku); err != nil { - globals.SugarLogger.Warnf("On SaveOrderSkuFinancialInfo order.VendorOrderID:%s err: order is err", order.VendorOrderID) - return err + if !dao.IsDuplicateError(err) { + globals.SugarLogger.Warnf("On SaveOrderSkuFinancialInfo order.VendorOrderID:%s err: order is err", order.VendorOrderID) + return err + } + return nil } } else { globals.SugarLogger.Warnf("On SaveOrderSkuFinancialInfo order.VendorOrderID:%s err: order have no sku", order.VendorOrderID) @@ -115,8 +124,11 @@ func (c *OrderManager) SaveOrderFinancialInfo(order *model.OrderFinancial, opera // 加上京西对单条sku的补贴,再存数据库 order.JxSubsidyMoney += order.JxSkuSubsidyMoney if err = dao.CreateEntity(db, order); err != nil { - globals.SugarLogger.Warnf("On SaveOrderFinancialInfo order.VendorOrderID:%s err: order is err", order.VendorOrderID) - return err + if !dao.IsDuplicateError(err) { + globals.SugarLogger.Warnf("On SaveOrderFinancialInfo order.VendorOrderID:%s err: order is err", order.VendorOrderID) + return err + } + return nil } dao.Commit(db) return err @@ -140,8 +152,11 @@ func (c *OrderManager) SaveAfsOrderFinancialInfo(afsOrder *model.AfsOrder) (err afsOrder.RefundMoneyByCal = afsOrder.SkuUserMoney + afsOrder.FreightUserMoney + deductionsByPm // order.TotalMoney += order.SkuJxMoney // 退款单京西补贴部分先不作计算 if err = dao.CreateEntity(db, afsOrder); err != nil { - globals.SugarLogger.Warnf("On SaveAfsOrderFinancialInfo afsOrder.AfsOrderID:%s err: SaveAfsOrder is err", afsOrder.AfsOrderID) - return err + if !dao.IsDuplicateError(err) { + globals.SugarLogger.Warnf("On SaveAfsOrderFinancialInfo afsOrder.AfsOrderID:%s err: SaveAfsOrder is err", afsOrder.AfsOrderID) + return err + } + return nil } // 京西结算扣除汇总,先不作计算,计算单条sku最终扣款金额(+该条sku承担的平台结算扣除金额) @@ -150,16 +165,22 @@ func (c *OrderManager) SaveAfsOrderFinancialInfo(afsOrder *model.AfsOrder) (err utils.Float64TwoInt64(float64(afsOrder.RefundMoneyByCal-afsOrder.PmSkuSubsidyMoney)*float64(orderSku.UserMoney+orderSku.PmSubsidyMoney-orderSku.PmSkuSubsidyMoney)/float64(afsOrder.SkuUserMoney+afsOrder.PmSubsidyMoney-afsOrder.PmSkuSubsidyMoney)) afsOrder.Skus[0].RefundMoneyByCal += orderSku.RefundMoneyByCal if err = dao.CreateEntity(db, orderSku); err != nil { - globals.SugarLogger.Warnf("On SaveAfsOrderFinancialInfo afsOrder.AfsOrderID:%s err: SaveAfsOrderSku is err", afsOrder.AfsOrderID) - return err + if !dao.IsDuplicateError(err) { + globals.SugarLogger.Warnf("On SaveAfsOrderFinancialInfo afsOrder.AfsOrderID:%s err: SaveAfsOrderSku is err", afsOrder.AfsOrderID) + return err + } + return nil } } if len(afsOrder.Skus) > 0 { orderSku := afsOrder.Skus[0] orderSku.RefundMoneyByCal = afsOrder.RefundMoneyByCal - orderSku.RefundMoneyByCal if err = dao.CreateEntity(db, orderSku); err != nil { - globals.SugarLogger.Warnf("On SaveAfsOrderFinancialInfo afsOrder.AfsOrderID:%s err: SaveAfsOrderSku is err", afsOrder.AfsOrderID) - return err + if !dao.IsDuplicateError(err) { + globals.SugarLogger.Warnf("On SaveAfsOrderFinancialInfo afsOrder.AfsOrderID:%s err: SaveAfsOrderSku is err", afsOrder.AfsOrderID) + return err + } + return nil } } else { globals.SugarLogger.Warnf("On SaveAfsOrderFinancialInfo afsOrder.AfsOrderID:%s err: afsOrder have no sku", afsOrder.AfsOrderID) diff --git a/business/partner/purchase/jd/financial.go b/business/partner/purchase/jd/financial.go index 50193c9e8..be0d3c756 100644 --- a/business/partner/purchase/jd/financial.go +++ b/business/partner/purchase/jd/financial.go @@ -12,6 +12,7 @@ import ( // 京东正向/退款订单类型处理--存储 func OnFinancialMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) { var err error + // if msg.StatusID == jdapi.OrderStatusPayFinishedSettle || msg.StatusID == jdapi.OrderStatusTipChanged || msg.StatusID == jdapi.OrderStatusSwitch2SelfSettle { // 如果是正向单 if msg.StatusID == jdapi.OrderStatusPayFinishedSettle || msg.StatusID == jdapi.OrderStatusTipChanged || msg.StatusID == jdapi.OrderStatusAdjustSettle || msg.StatusID == jdapi.OrderStatusSwitch2SelfSettle { // 如果是正向单 order, err2 := partner.CurOrderManager.LoadOrder(msg.BillID, model.VendorIDJD) if err = err2; err == nil { @@ -219,12 +220,12 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData map[string]interfac return afsOrder } -func (p *PurchaseHandler) OnOrderDetail(orderDetail map[string]interface{}) (err error) { +func (p *PurchaseHandler) OnOrderDetail(orderDetail map[string]interface{}, peration string) (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 = partner.CurOrderManager.SaveOrderFinancialInfo(orderFinancial, partner.CreatedPeration) + err = partner.CurOrderManager.SaveOrderFinancialInfo(orderFinancial, peration) } } return err diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index 5d316ad2b..7b44dd5f8 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -173,7 +173,7 @@ func (c *PurchaseHandler) onOrderNew(msg *jdapi.CallbackOrderMsg) (response *jda if err == nil { if err = partner.CurOrderManager.OnOrderNew(order, msg.StatusID); err == nil { utils.CallFuncAsync(func() { - c.OnOrderDetail(orderMap) + c.OnOrderDetail(orderMap, partner.CreatedPeration) }) } } @@ -186,7 +186,7 @@ func (c *PurchaseHandler) onOrderAdjust(msg *jdapi.CallbackOrderMsg) *jdapi.Call err = partner.CurOrderManager.OnOrderAdjust(order, msg.StatusID) if err == nil { utils.CallFuncAsync(func() { - c.OnOrderDetail(orderMap) + c.OnOrderDetail(orderMap, partner.UpdatedPeration) }) } }