diff --git a/business/jxcallback/orderman/financial.go b/business/jxcallback/orderman/financial.go index 399443266..5fda0c401 100644 --- a/business/jxcallback/orderman/financial.go +++ b/business/jxcallback/orderman/financial.go @@ -51,7 +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 @@ -91,7 +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 { - 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 { @@ -104,16 +112,23 @@ 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 { - 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) } // 加上京西对单条sku的补贴,再存数据库 order.JxSubsidyMoney += order.JxSkuSubsidyMoney if err = dao.CreateEntity(db, order); err != nil { - globals.SugarLogger.Warnf("On SaveOrderFinancialInfo err: order is err,order.VendorOrderID:%s,order.VendorID:%d", order.VendorOrderID, order.VendorID) - 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 @@ -121,6 +136,7 @@ func (c *OrderManager) SaveOrderFinancialInfo(order *model.OrderFinancial, opera // 处理售后订单结账信息 func (c *OrderManager) SaveAfsOrderFinancialInfo(afsOrder *model.AfsOrder) (err error) { + globals.SugarLogger.Debug(afsOrder.AfsOrderID) db := dao.GetDB() dao.Begin(db) defer func() { @@ -131,14 +147,16 @@ func (c *OrderManager) SaveAfsOrderFinancialInfo(afsOrder *model.AfsOrder) (err } } }() - globals.SugarLogger.Debug(afsOrder.Skus) // 平台结算扣除汇总--平台补贴,售后产生运费,平台收包装费,同城运费、、、 deductionsByPm := afsOrder.PmSubsidyMoney + afsOrder.AfsFreightMoney + afsOrder.BoxMoney + afsOrder.TongchengFreightMoney afsOrder.RefundMoneyByCal = afsOrder.SkuUserMoney + afsOrder.FreightUserMoney + deductionsByPm // order.TotalMoney += order.SkuJxMoney // 退款单京西补贴部分先不作计算 if err = dao.CreateEntity(db, afsOrder); err != nil { - globals.SugarLogger.Warnf("On SaveAfsOrderFinancialInfo err: SaveAfsOrder is err,afsOrder.AfsOrderID:%s,afsOrder.VendorID:%d", afsOrder.AfsOrderID, afsOrder.VendorID) - 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承担的平台结算扣除金额) @@ -147,15 +165,25 @@ 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 { - 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 { - 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) } dao.Commit(db) return err diff --git a/business/model/order_financial.go b/business/model/order_financial.go index dcddbec2e..a667749ed 100644 --- a/business/model/order_financial.go +++ b/business/model/order_financial.go @@ -136,9 +136,9 @@ type OrderSkuFinancial struct { // SkuType int `json:"-"` // 当前如果为gift就为1,否则缺省为0 } -func (o *OrderSkuFinancial) TableUnique() [][]string { +func (o *OrderSkuFinancial) TableIndex() [][]string { return [][]string{ - []string{"VendorOrderID", "SkuID", "PromotionType", "IsAfsOrder", "VendorID"}, + []string{"VendorOrderID", "VendorSkuID", "PromotionType", "IsAfsOrder", "VendorID"}, } } 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) }) } } diff --git a/business/partner/purchase/mtwm/financial.go b/business/partner/purchase/mtwm/financial.go index a50efe500..40c288b5b 100644 --- a/business/partner/purchase/mtwm/financial.go +++ b/business/partner/purchase/mtwm/financial.go @@ -137,6 +137,7 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData url.Values) (afsOrd // 存储美团正向订单结账信息 func (p *PurchaseHandler) OnOrderDetail(result map[string]interface{}, operation string) (err error) { + globals.SugarLogger.Debug(utils.Int64ToStr(utils.MustInterface2Int64(result["order_id"]))) err = partner.CurOrderManager.SaveOrderFinancialInfo(p.OrderDetail2Financial(result), operation) return err } @@ -177,13 +178,13 @@ func (p *PurchaseHandler) OrderDetail2Financial(result map[string]interface{}) ( StoreID: 0, JxStoreID: jxStoreID, VendorSkuID: utils.Interface2String(x["sku_id"]), + SkuID: int(utils.Str2Int64(utils.Interface2String(x["sku_id"]))), Name: utils.Interface2String(x["food_name"]), SalePrice: jxutils.StandardPrice2Int(utils.MustInterface2Float64(x["price"])), Count: int(utils.MustInterface2Int64(x["quantity"])), SkuBoxMoney: jxutils.StandardPrice2Int(utils.MustInterface2Float64(x["box_price"])) * utils.MustInterface2Int64(x["box_num"]), IsAfsOrder: 0, } - orderFinancial.Skus = append(orderFinancial.Skus, orderSkuFinancial) orderFinancial.SalePriceMoney += orderSkuFinancial.SalePrice * int64(orderSkuFinancial.Count) orderFinancial.SkuBoxMoney += orderSkuFinancial.SkuBoxMoney @@ -247,5 +248,6 @@ func (p *PurchaseHandler) OrderDetail2Financial(result map[string]interface{}) ( orderFinancial.DonationMoney = PublicWelfareDonation // 不应该对第三方结账金额做更改,就算有异常,也要保留异常,知道问题出在哪里 // orderFinancial.ShopMoney -= PublicWelfareDonation + globals.SugarLogger.Debug(orderFinancial.VendorOrderID) return orderFinancial } diff --git a/business/partner/purchase/mtwm/financial_test.go b/business/partner/purchase/mtwm/financial_test.go index f483e6a50..28fbaa1ff 100644 --- a/business/partner/purchase/mtwm/financial_test.go +++ b/business/partner/purchase/mtwm/financial_test.go @@ -8,6 +8,7 @@ import ( "git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/partner" ) func TestOnFinancialMsg(t *testing.T) { @@ -43,3 +44,11 @@ func TestOnFinancialMsg(t *testing.T) { res := OnFinancialMsg(msg) fmt.Println(res) } + +func TestOnOrderDetail(t *testing.T) { + result := map[string]interface{}{ + "app_order_code": "", "app_poi_code": "2828472", "avg_send_time": 2410, "backup_recipient_phone": "[\"13164714130_7645\"]", "caution": " 【如遇缺货】: 缺货时电话与我沟通 收餐人隐私号 13049813276_5307,手机号 139****5027", "city_id": 440300, "ctime": 1555036346, "day_seq": 1, "delivery_time": 0, "detail": "[{\"app_food_code\":\"27262\",\"box_num\":0,\"box_price\":0,\"cart_id\":0,\"food_discount\":1,\"food_name\":\"红管鱿鱼约250g/份\",\"food_property\":\"\",\"price\":23.54,\"quantity\":1,\"sku_id\":\"27262\",\"spec\":\"250g\",\"unit\":\"份\"},{\"app_food_code\":\"24987\",\"box_num\":0,\"box_price\":0,\"cart_id\":0,\"food_discount\":1,\"food_name\":\"带皮猪梅花肉约250g/份\",\"food_property\":\"\",\"price\":15.84,\"quantity\":1,\"sku_id\":\"24987\",\"spec\":\"250g\",\"unit\":\"份\"},{\"app_food_code\":\"27179\",\"box_num\":0,\"box_price\":0,\"cart_id\":0,\"food_discount\":1,\"food_name\":\"[畅销]龙骨约250g/份\",\"food_property\":\"\",\"price\":18.59,\"quantity\":1,\"sku_id\":\"27179\",\"spec\":\"250g\",\"unit\":\"份\"}]", "dinners_number": 0, "expect_deliver_time": 0, "extras": "[{\"act_detail_id\":664795195,\"mt_charge\":0,\"poi_charge\":5,\"reduce_fee\":5,\"remark\":\"满46.0元减5.0元\",\"type\":2},{\"act_detail_id\":665051798,\"mt_charge\":0,\"poi_charge\":4,\"reduce_fee\":4,\"remark\":\"减配送费4.0元\",\"type\":25},{\"act_detail_id\":274839715,\"mt_charge\":0.5,\"poi_charge\":0,\"reduce_fee\":0.5,\"remark\":\"用户使用了支付红包减0.5元\",\"type\":9},{\"mt_charge\":0,\"poi_charge\":0,\"reduce_fee\":0,\"remark\":\"送30元商家代金券\",\"type\":100},{}]", "has_invoiced": 0, "invoice_title": "", "is_favorites": false, "is_poi_first_order": true, "is_pre": 0, "is_third_shipping": 0, "latitude": 22.530194, "logistics_code": "1001", "longitude": 114.08372, "order_id": 28284722536001020, "order_send_time": 1555036356, "original_price": 63.97, "package_bag_money": 0, "pay_type": 2, "pick_type": 0, "poi_receive_detail": "{\"actOrderChargeByMt\":[{\"comment\":\"活动款\",\"feeTypeDesc\":\"活动款\",\"feeTypeId\":10019,\"moneyCent\":50}],\"actOrderChargeByPoi\":[{\"comment\":\"满46.0元减5.0元\",\"feeTypeDesc\":\"活动款\",\"feeTypeId\":10019,\"moneyCent\":500},{\"comment\":\"减配送费4.0元\",\"feeTypeDesc\":\"活动款\",\"feeTypeId\":10019,\"moneyCent\":400}],\"foodShareFeeChargeByPoi\":490,\"logisticsFee\":600,\"onlinePayment\":5447,\"wmPoiReceiveCent\":4406}", "recipient_address": "汇港名苑 (南2区1005)@#广东省深圳市福田区滨河大道滨河大道3119号汇港名苑", "recipient_name": "颜(女士)", "recipient_phone": "13049813276_5307", "remark": "", "result": "ok", "shipper_phone": "", "shipping_fee": 6, "shipping_type": 0, "source_id": 3, "status": 2, "taxpayer_id": "", "total": 54.47, "utime": 1555036346, "wm_order_id_view": 28284722536001020, "wm_poi_address": "深圳市福田区南园街道南华社区滨河路2037号下小庙南区70栋101号滨河街市场", "wm_poi_id": 2828472, "wm_poi_name": "京西菜市(华强南店)", "wm_poi_phone": "13724313878", + } + err := new(PurchaseHandler).OnOrderDetail(result, partner.CreatedPeration) + fmt.Println(err) +}