From 28df062c8d7587817862a820b389351a037710be Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 10 Nov 2023 21:57:46 +0800 Subject: [PATCH 01/19] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BC=98=E6=83=A0=E5=88=B8=E6=8B=86=E5=88=86?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sync/OrderSyncBusiness.cs | 208 +++++++++++++++++- .../Response/Order/XingXinagSearchResponse.cs | 2 +- 2 files changed, 205 insertions(+), 5 deletions(-) diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 4f6f9513..8f586873 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -211,6 +211,8 @@ namespace BBWY.Server.Business List insertOrderSkuList = new List(); List insertOrderCouponList = new List(); List insertOrderTotalInfoList = new List(); + List insertOrderCouponNewList = new List(); + List insertOrderPromotionList = new List(); IList> updateOrderList = new List>(); Dictionary> updateOrderSkuDictionary = new Dictionary>(); @@ -391,7 +393,7 @@ namespace BBWY.Server.Business var wareId = orderSkuJToken.Value("wareId"); var skuId = orderSkuJToken.Value("skuId"); var dbOsku = currentDbOrderSkuList.FirstOrDefault(osku => osku.SkuId == skuId); - var skuUpdateKey = $""; + var skuUpdateKey = $"{orderId}_{skuId}"; if (dbOsku != null && dbOsku.ProductId != wareId && !updateOrderSkuDictionary.ContainsKey(skuUpdateKey)) { var update = fsql.Update(dbOsku.Id).Set(osku => osku.ProductId, wareId); @@ -652,11 +654,192 @@ namespace BBWY.Server.Business #endregion #region 优惠券/促销/拆分明细 - if (orderState != Enums.OrderState.暂停 && - orderState != Enums.OrderState.待付款 && - !dbOrderTotalList.Any(ot => ot.Id == orderId)) + if (!dbOrderTotalList.Any(ot => ot.Id == orderId)) { + var orderCouponDetailHttpResult = restApiService.SendRequest("http://yunding.qiyue666.com", "api/PlatformSDK/GetOrderCouponDetail", new + { + OrderId = orderId, + AppKey = appKey, + AppSecret = appSecret, + AppToken = appToken, + Platform = Enums.Platform.京东 + }, null, HttpMethod.Post); + if (orderCouponDetailHttpResult.StatusCode == System.Net.HttpStatusCode.OK) + { + var orderCouponDetailResponse = JsonConvert.DeserializeObject>(orderCouponDetailHttpResult.Content); + if (orderCouponDetailResponse.Success) + { + var jtoken = orderCouponDetailResponse.Data["jingdong_pop_order_coupondetail_responce"]["couponDetailExternal"]["couponDetailVo"]; + + #region 订单合计信息 + var orderTotal = new OrderTotalInfo() + { + CreateTime = DateTime.Now, + Id = orderId, + TotalBalance = jtoken.Value("totalBalance"), + TotalBaseDiscount = jtoken.Value("TotalBaseDiscount"), + TotalBaseFee = jtoken.Value("totalBaseFee"), + TotalCoupon = jtoken.Value("totalCoupon"), + TotalDongQuan = jtoken.Value("totalDongQuan"), + TotalExpiryGiftDiscount = jtoken.Value("totalExpiryGiftDiscount"), + TotalGlobalGeneralIncludeTax = jtoken.Value("totalGlobalGeneralIncludeTax"), + TotalGlobalGeneralTax = jtoken.Value("totalGlobalGeneralTax"), + TotalItemPrice = jtoken.Value("totalItemPrice"), + TotalJdZhiFuYouHui = jtoken.Value("totalJdZhiFuYouHui"), + TotalJingDou = jtoken.Value("totalJingDou"), + TotalJingQuan = jtoken.Value("totalJingQuan"), + TotalJingXiangLiJin = jtoken.Value("totalJingXiangLiJin"), + TotalLiJinYouHui = jtoken.Value("totalLiJinYouHui"), + TotalLuoDiPeiService = jtoken.Value("totalLuoDiPeiService"), + TotalManJian = jtoken.Value("totalManJian"), + TotalPingTaiChengDanYouHuiQuan = jtoken.Value("totalPingTaiChengDanYouHuiQuan"), + TotalPlus95 = jtoken.Value("totalPlus95"), + TotalPromotionDiscount = jtoken.Value("totalPromotionDiscount"), + TotalRemoteFee = jtoken.Value("totalRemoteFee"), + TotalShouldPay = jtoken.Value("totalShouldPay"), + TotalSuperRedEnvelope = jtoken.Value("totalSuperRedEnvelope"), + TotalTaxFee = jtoken.Value("totalTaxFee"), + TotalTuiHuanHuoWuYou = jtoken.Value("totalTuiHuanHuoWuYou"), + TotalVenderFee = jtoken.Value("totalVenderFee"), + TotalXianPinLeiDongQuan = jtoken.Value("totalXianPinLeiDongQuan"), + TotalXianPinLeiJingQuan = jtoken.Value("totalXianPinLeiJingQuan"), + TotalZhiFuYingXiaoYouHui = jtoken.Value("totalZhiFuYingXiaoYouHui") + }; + insertOrderTotalInfoList.Add(orderTotal); + #endregion + + #region 订单优惠券信息 + var couponJArray = jtoken["couponList"] as JArray; + if (couponJArray != null && couponJArray.Count() > 0) + { + insertOrderCouponNewList.AddRange(couponJArray.Select(j => new OrderCoupon_New() + { + Id = idGenerator.NewLong(), + CouponId = j.Value("couponId"), + CouponName = j.Value("couponName"), + CouponNum = j.Value("couponNum"), + CouponPrice = j.Value("couponPrice"), + CouponTypeDesc = j.Value("couponTypeDesc"), + CreateTime = DateTime.Now, + JdCouponId = j.Value("jdCouponId"), + JdDivideMoney = j.Value("jdDivideMoney"), + OrderId = orderId, + PriceDivide = j.Value("priceDivide"), + VenderDivideMoney = j.Value("venderDivideMoney") + })); + } + + #endregion + + #region 订单活动信息 + var promotionJArray = jtoken["promotionList"] as JArray; + if (promotionJArray != null && promotionJArray.Count() > 0) + { + insertOrderPromotionList.AddRange(promotionJArray.Select(j => new OrderPromotion() + { + Id = idGenerator.NewLong(), + BeginTime = j.Value("beginTime"), + EndTime = j.Value("endTime"), + CreateTime = DateTime.Now, + OrderId = orderId, + PromotionId = j.Value("promotionId"), + PromotionName = j.Value("promotionName"), + SalePrice = j.Value("salePrice"), + SaleTypeDesc = j.Value("saleTypeDesc") + })); + } + #endregion + #region 订单sku金额明细 + var skuJArray = jtoken["skuList"] as JArray; + if (isNewOrder) + { + var currentOrderSkuList = insertOrderSkuList.Where(osku => osku.OrderId == orderId).ToList(); + foreach (var oskuJtoken in skuJArray) + { + var osku = currentOrderSkuList.FirstOrDefault(x => x.SkuId == oskuJtoken.Value("skuCode")); + if (osku != null) + { + osku.Balance = oskuJtoken.Value("balance"); + osku.BaseDiscount = oskuJtoken.Value("baseDiscount"); + osku.BaseFee = oskuJtoken.Value("baseFee"); + osku.Coupon = oskuJtoken.Value("coupon"); + osku.DongQuan = oskuJtoken.Value("dongQuan"); + osku.ExpiryGiftDiscount = oskuJtoken.Value("expiryGiftDiscount"); + osku.GlobalGeneralIncludeTax = oskuJtoken.Value("globalGeneralIncludeTax"); + osku.GlobalGeneralTax = oskuJtoken.Value("globalGeneralTax"); + osku.JdZhiFuYouHui = oskuJtoken.Value("jdZhiFuYouHui"); + osku.JingDou = oskuJtoken.Value("jingDou"); + osku.JingQuan = oskuJtoken.Value("jingQuan"); + osku.JingXiangLiJin = oskuJtoken.Value("jingXiangLiJin"); + osku.LiJinYouHui = oskuJtoken.Value("liJinYouHui"); + osku.LuoDiPeiService = oskuJtoken.Value("luoDiPeiService"); + osku.ManJian = oskuJtoken.Value("manJian"); + osku.PingTaiChengDanYouHuiQuan = oskuJtoken.Value("pingTaiChengDanYouHuiQuan"); + osku.Plus95 = oskuJtoken.Value("plus95"); + osku.PromotionDiscount = oskuJtoken.Value("promotionDiscount"); + osku.RemoteFee = oskuJtoken.Value("remoteFee"); + osku.ShouldPay = oskuJtoken.Value("shouldPay"); + osku.SuperRedEnvelope = oskuJtoken.Value("superRedEnvelope"); + osku.TaxFee = oskuJtoken.Value("taxFee"); + osku.TuiHuanHuoWuYou = oskuJtoken.Value("tuiHuanHuoWuYou"); + osku.VenderFee = oskuJtoken.Value("venderFee"); + osku.XianPinLeiDongQuan = oskuJtoken.Value("xianPinLeiDongQuan"); + osku.XianPinLeiJingQuan = oskuJtoken.Value("xianPinLeiJingQuan"); + osku.ZhiFuYingXiaoYouHui = oskuJtoken.Value("zhiFuYingXiaoYouHui"); + } + } + } + else + { + foreach (var oskuJtoken in skuJArray) + { + var skuId = oskuJtoken.Value("skuCode"); + var skuUpdateKey = $"{orderId}_{skuId}"; + if (!updateOrderSkuDictionary.TryGetValue(skuUpdateKey, out var update)) + { + var currentOrderSku = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == skuId); + if (currentOrderSku != null) + { + update = fsql.Update(currentOrderSku.Id); + updateOrderSkuDictionary.Add(skuUpdateKey, update); + } + } + if (update == null) + continue; + update = update.Set(osku => osku.Balance, oskuJtoken.Value("balance")) + .Set(osku => osku.BaseDiscount, oskuJtoken.Value("baseDiscount")) + .Set(osku => osku.BaseFee, oskuJtoken.Value("baseFee")) + .Set(osku => osku.Coupon, oskuJtoken.Value("coupon")) + .Set(osku => osku.DongQuan, oskuJtoken.Value("dongQuan")) + .Set(osku => osku.ExpiryGiftDiscount, oskuJtoken.Value("expiryGiftDiscount")) + .Set(osku => osku.GlobalGeneralIncludeTax, oskuJtoken.Value("globalGeneralIncludeTax")) + .Set(osku => osku.GlobalGeneralTax, oskuJtoken.Value("globalGeneralTax")) + .Set(osku => osku.JdZhiFuYouHui, oskuJtoken.Value("jdZhiFuYouHui")) + .Set(osku => osku.JingDou, oskuJtoken.Value("jingDou")) + .Set(osku => osku.JingQuan, oskuJtoken.Value("jingQuan")) + .Set(osku => osku.JingXiangLiJin, oskuJtoken.Value("jingXiangLiJin")) + .Set(osku => osku.LiJinYouHui, oskuJtoken.Value("liJinYouHui")) + .Set(osku => osku.LuoDiPeiService, oskuJtoken.Value("luoDiPeiService")) + .Set(osku => osku.ManJian, oskuJtoken.Value("manJian")) + .Set(osku => osku.PingTaiChengDanYouHuiQuan, oskuJtoken.Value("pingTaiChengDanYouHuiQuan")) + .Set(osku => osku.Plus95, oskuJtoken.Value("plus95")) + .Set(osku => osku.PromotionDiscount, oskuJtoken.Value("promotionDiscount")) + .Set(osku => osku.RemoteFee, oskuJtoken.Value("remoteFee")) + .Set(osku => osku.ShouldPay, oskuJtoken.Value("shouldPay")) + .Set(osku => osku.SuperRedEnvelope, oskuJtoken.Value("superRedEnvelope")) + .Set(osku => osku.TaxFee, oskuJtoken.Value("taxFee")) + .Set(osku => osku.TuiHuanHuoWuYou, oskuJtoken.Value("tuiHuanHuoWuYou")) + .Set(osku => osku.VenderFee, oskuJtoken.Value("venderFee")) + .Set(osku => osku.XianPinLeiDongQuan, oskuJtoken.Value("xianPinLeiDongQuan")) + .Set(osku => osku.XianPinLeiJingQuan, oskuJtoken.Value("xianPinLeiJingQuan")) + .Set(osku => osku.ZhiFuYingXiaoYouHui, oskuJtoken.Value("zhiFuYingXiaoYouHui")); + } + + } + #endregion + } + } } #endregion } @@ -696,8 +879,25 @@ namespace BBWY.Server.Business } #endregion + #region 需要清理的数据 + var orderCouponDetailOrderIdList = insertOrderTotalInfoList.Select(x => x.Id).ToList(); + #endregion + fsql.Transaction(() => { + if (orderCouponDetailOrderIdList.Count() > 0) + { + fsql.Delete(orderCouponDetailOrderIdList).ExecuteAffrows(); + fsql.Delete().Where(on => orderCouponDetailOrderIdList.Contains(on.OrderId)).ExecuteAffrows(); + fsql.Delete().Where(op => orderCouponDetailOrderIdList.Contains(op.OrderId)).ExecuteAffrows(); + } + if (insertOrderTotalInfoList.Count() > 0) + fsql.Insert(insertOrderTotalInfoList).ExecuteAffrows(); + if (insertOrderCouponNewList.Count() > 0) + fsql.Insert(insertOrderCouponNewList).ExecuteAffrows(); + if (insertOrderPromotionList.Count() > 0) + fsql.Insert(insertOrderPromotionList).ExecuteAffrows(); + if (insertOrderList.Count() > 0) fsql.Insert(insertOrderList).ExecuteAffrows(); if (insertOrderSkuList.Count() > 0) diff --git a/BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs b/BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs index fb790e6f..071513ef 100644 --- a/BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs +++ b/BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs @@ -64,7 +64,7 @@ namespace BBWY.Server.Model.Dto { get { - return ActualAmount == 0 ? 0 : Math.Round(Profit / ActualAmount * 100, 2); + return ActualAmount == 0 ? 0 : Math.Round(Profit / ActualAmount, 2); //*100 } } From e5b15548200854ab81821ad6e0fc85cea78659ab Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 11 Nov 2023 09:54:29 +0800 Subject: [PATCH 02/19] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=90=8C=E6=AD=A5sku?= =?UTF-8?q?=E6=AF=9B=E5=88=A9=E5=85=AC=E5=BC=8F=E8=AE=A1=E7=AE=97=E4=BD=BF?= =?UTF-8?q?=E7=94=A8sku=E7=94=A8=E6=88=B7=E5=BA=94=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sync/OrderSyncBusiness.cs | 422 ++++++++++-------- BBWY.Server.Model/Db/Order/OrderCoupon_New.cs | 6 +- BBWY.Server.Model/Db/Order/OrderPromotion.cs | 3 +- .../Dto/Response/JD/OrderSkuCFDetail.cs | 150 +++++++ 4 files changed, 377 insertions(+), 204 deletions(-) create mode 100644 BBWY.Server.Model/Dto/Response/JD/OrderSkuCFDetail.cs diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 8f586873..1d559183 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -261,6 +261,8 @@ namespace BBWY.Server.Business //var dbOrderCouponNewList = fsql.Select().Where(ocn => interfaceOrderIdList.Contains(ocn.OrderId)).ToList(); //var dbOrderPromotionList = fsql.Select().Where(op => interfaceOrderIdList.Contains(op.OrderId)).ToList(); var dbOrderTotalList = fsql.Select().Where(ot => interfaceOrderIdList.Contains(ot.Id)).ToList(); + + var orderSkuCFDetailList = new List(); #endregion var orderSkuIds = new List(); @@ -286,6 +288,148 @@ namespace BBWY.Server.Business var isNewOrder = dbOrder == null; SDCalculationCostRequest sDCalculationCostRequest = null; //SD信息埋点 + #region 优惠券/促销/拆分明细 + if (!dbOrderTotalList.Any(ot => ot.Id == orderId)) + { + var orderCouponDetailHttpResult = restApiService.SendRequest("http://yunding.qiyue666.com", "api/PlatformSDK/GetOrderCouponDetail", new + { + OrderId = orderId, + AppKey = appKey, + AppSecret = appSecret, + AppToken = appToken, + Platform = Enums.Platform.京东 + }, null, HttpMethod.Post); + if (orderCouponDetailHttpResult.StatusCode == System.Net.HttpStatusCode.OK) + { + var orderCouponDetailResponse = JsonConvert.DeserializeObject>(orderCouponDetailHttpResult.Content); + if (orderCouponDetailResponse.Success) + { + var jtoken = orderCouponDetailResponse.Data["jingdong_pop_order_coupondetail_responce"]["couponDetailExternal"]["couponDetailVo"]; + + #region 订单合计信息 + var orderTotal = new OrderTotalInfo() + { + CreateTime = DateTime.Now, + Id = orderId, + TotalBalance = jtoken.Value("totalBalance"), + TotalBaseDiscount = jtoken.Value("TotalBaseDiscount"), + TotalBaseFee = jtoken.Value("totalBaseFee"), + TotalCoupon = jtoken.Value("totalCoupon"), + TotalDongQuan = jtoken.Value("totalDongQuan"), + TotalExpiryGiftDiscount = jtoken.Value("totalExpiryGiftDiscount"), + TotalGlobalGeneralIncludeTax = jtoken.Value("totalGlobalGeneralIncludeTax"), + TotalGlobalGeneralTax = jtoken.Value("totalGlobalGeneralTax"), + TotalItemPrice = jtoken.Value("totalItemPrice"), + TotalJdZhiFuYouHui = jtoken.Value("totalJdZhiFuYouHui"), + TotalJingDou = jtoken.Value("totalJingDou"), + TotalJingQuan = jtoken.Value("totalJingQuan"), + TotalJingXiangLiJin = jtoken.Value("totalJingXiangLiJin"), + TotalLiJinYouHui = jtoken.Value("totalLiJinYouHui"), + TotalLuoDiPeiService = jtoken.Value("totalLuoDiPeiService"), + TotalManJian = jtoken.Value("totalManJian"), + TotalPingTaiChengDanYouHuiQuan = jtoken.Value("totalPingTaiChengDanYouHuiQuan"), + TotalPlus95 = jtoken.Value("totalPlus95"), + TotalPromotionDiscount = jtoken.Value("totalPromotionDiscount"), + TotalRemoteFee = jtoken.Value("totalRemoteFee"), + TotalShouldPay = jtoken.Value("totalShouldPay"), + TotalSuperRedEnvelope = jtoken.Value("totalSuperRedEnvelope"), + TotalTaxFee = jtoken.Value("totalTaxFee"), + TotalTuiHuanHuoWuYou = jtoken.Value("totalTuiHuanHuoWuYou"), + TotalVenderFee = jtoken.Value("totalVenderFee"), + TotalXianPinLeiDongQuan = jtoken.Value("totalXianPinLeiDongQuan"), + TotalXianPinLeiJingQuan = jtoken.Value("totalXianPinLeiJingQuan"), + TotalZhiFuYingXiaoYouHui = jtoken.Value("totalZhiFuYingXiaoYouHui") + }; + insertOrderTotalInfoList.Add(orderTotal); + #endregion + + #region 订单优惠券信息 + var couponJArray = jtoken["couponList"] as JArray; + if (couponJArray != null && couponJArray.Count() > 0) + { + insertOrderCouponNewList.AddRange(couponJArray.Select(j => new OrderCoupon_New() + { + Id = idGenerator.NewLong(), + CouponId = j.Value("couponId"), + CouponName = j.Value("couponName"), + CouponNum = j.Value("couponNum"), + CouponPrice = j.Value("couponPrice"), + CouponTypeDesc = j.Value("couponTypeDesc"), + CreateTime = DateTime.Now, + JdCouponId = j.Value("jdCouponId"), + JdDivideMoney = j.Value("jdDivideMoney"), + OrderId = orderId, + PriceDivide = j.Value("priceDivide"), + VenderDivideMoney = j.Value("venderDivideMoney") + })); + } + + #endregion + + #region 订单活动信息 + var promotionJArray = jtoken["promotionList"] as JArray; + if (promotionJArray != null && promotionJArray.Count() > 0) + { + insertOrderPromotionList.AddRange(promotionJArray.Select(j => new OrderPromotion() + { + Id = idGenerator.NewLong(), + BeginTime = j.Value("beginTime"), + EndTime = j.Value("endTime"), + CreateTime = DateTime.Now, + OrderId = orderId, + PromotionId = j.Value("promotionId"), + PromotionName = j.Value("promotionName"), + SalePrice = j.Value("salePrice"), + SaleTypeDesc = j.Value("saleTypeDesc") + })); + } + #endregion + + #region 订单sku金额明细 + var skuJArray = jtoken["skuList"] as JArray; + foreach (var oskuJtoken in skuJArray) + { + var oskuCF = new OrderSkuCFDetail() + { + OrderId = orderId, + SkuId = oskuJtoken.Value("skuCode"), + Balance = oskuJtoken.Value("balance"), + BaseDiscount = oskuJtoken.Value("baseDiscount"), + BaseFee = oskuJtoken.Value("baseFee"), + Coupon = oskuJtoken.Value("coupon"), + DongQuan = oskuJtoken.Value("dongQuan"), + ExpiryGiftDiscount = oskuJtoken.Value("expiryGiftDiscount"), + GlobalGeneralIncludeTax = oskuJtoken.Value("globalGeneralIncludeTax"), + GlobalGeneralTax = oskuJtoken.Value("globalGeneralTax"), + JdZhiFuYouHui = oskuJtoken.Value("jdZhiFuYouHui"), + JingDou = oskuJtoken.Value("jingDou"), + JingQuan = oskuJtoken.Value("jingQuan"), + JingXiangLiJin = oskuJtoken.Value("jingXiangLiJin"), + LiJinYouHui = oskuJtoken.Value("liJinYouHui"), + LuoDiPeiService = oskuJtoken.Value("luoDiPeiService"), + ManJian = oskuJtoken.Value("manJian"), + PingTaiChengDanYouHuiQuan = oskuJtoken.Value("pingTaiChengDanYouHuiQuan"), + Plus95 = oskuJtoken.Value("plus95"), + PromotionDiscount = oskuJtoken.Value("promotionDiscount"), + RemoteFee = oskuJtoken.Value("remoteFee"), + ShouldPay = oskuJtoken.Value("shouldPay"), + SuperRedEnvelope = oskuJtoken.Value("superRedEnvelope"), + TaxFee = oskuJtoken.Value("taxFee"), + TuiHuanHuoWuYou = oskuJtoken.Value("tuiHuanHuoWuYou"), + VenderFee = oskuJtoken.Value("venderFee"), + XianPinLeiDongQuan = oskuJtoken.Value("xianPinLeiDongQuan"), + XianPinLeiJingQuan = oskuJtoken.Value("xianPinLeiJingQuan"), + ZhiFuYingXiaoYouHui = oskuJtoken.Value("zhiFuYingXiaoYouHui") + }; + orderSkuCFDetailList.Add(oskuCF); + } + #endregion + + } + } + } + #endregion + #region 订单基本信息 var buyerRemark = orderJToken.Value("orderRemark"); var venderRemark = orderJToken.Value("venderRemark"); @@ -357,6 +501,8 @@ namespace BBWY.Server.Business //if (orderSkuJToken.Value("jdPrice") != 0M) //{ + var oskuCF = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == skuId); + var osku = new OrderSku() { Id = idGenerator.NewLong(), @@ -367,7 +513,34 @@ namespace BBWY.Server.Business ProductNo = orderSkuJToken.Value("productNo"), CreateTime = DateTime.Now, OrderId = orderId, - SkuId = skuId + SkuId = skuId, + Balance = oskuCF?.Balance ?? 0M, + BaseDiscount = oskuCF?.BaseFee ?? 0M, + BaseFee = oskuCF?.BaseFee ?? 0M, + Coupon = oskuCF?.Coupon ?? 0M, + DongQuan = oskuCF?.DongQuan ?? 0M, + ExpiryGiftDiscount = oskuCF?.ExpiryGiftDiscount ?? 0M, + GlobalGeneralIncludeTax = oskuCF?.GlobalGeneralIncludeTax ?? 0M, + GlobalGeneralTax = oskuCF?.GlobalGeneralTax ?? 0M, + JdZhiFuYouHui = oskuCF?.JdZhiFuYouHui ?? 0M, + JingDou = oskuCF?.JingDou ?? 0M, + JingQuan = oskuCF?.JingQuan ?? 0M, + JingXiangLiJin = oskuCF?.JingXiangLiJin ?? 0M, + LiJinYouHui = oskuCF?.LiJinYouHui ?? 0M, + LuoDiPeiService = oskuCF?.LuoDiPeiService ?? 0M, + ManJian = oskuCF?.ManJian ?? 0M, + PingTaiChengDanYouHuiQuan = oskuCF?.PingTaiChengDanYouHuiQuan ?? 0M, + Plus95 = oskuCF?.Plus95 ?? 0M, + PromotionDiscount = oskuCF?.PromotionDiscount ?? 0M, + RemoteFee = oskuCF?.RemoteFee ?? 0M, + ShouldPay = oskuCF?.ShouldPay ?? 0M, + SuperRedEnvelope = oskuCF?.SuperRedEnvelope ?? 0M, + TaxFee = oskuCF?.TaxFee ?? 0M, + TuiHuanHuoWuYou = oskuCF?.TuiHuanHuoWuYou ?? 0M, + VenderFee = oskuCF?.VenderFee ?? 0M, + XianPinLeiDongQuan = oskuCF?.XianPinLeiDongQuan ?? 0M, + XianPinLeiJingQuan = oskuCF?.XianPinLeiJingQuan ?? 0M, + ZhiFuYingXiaoYouHui = oskuCF?.ZhiFuYingXiaoYouHui ?? 0M }; insertOrderSkuList.Add(osku); //} @@ -394,10 +567,44 @@ namespace BBWY.Server.Business var skuId = orderSkuJToken.Value("skuId"); var dbOsku = currentDbOrderSkuList.FirstOrDefault(osku => osku.SkuId == skuId); var skuUpdateKey = $"{orderId}_{skuId}"; - if (dbOsku != null && dbOsku.ProductId != wareId && !updateOrderSkuDictionary.ContainsKey(skuUpdateKey)) + if (dbOsku != null) { - var update = fsql.Update(dbOsku.Id).Set(osku => osku.ProductId, wareId); - updateOrderSkuDictionary.Add(skuUpdateKey, update); + var oskuCF = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == dbOsku.SkuId); + var isDetailChanged = dbOsku.ShouldPay == 0 && oskuCF != null && oskuCF.ShouldPay != 0; + if (dbOsku.ProductId != wareId || isDetailChanged) + { + var update = fsql.Update(dbOsku.Id) + .SetIf(dbOsku.ProductId != wareId, osku => osku.ProductId, wareId) + .SetIf(isDetailChanged, osku => osku.ShouldPay, oskuCF.ShouldPay) + .SetIf(isDetailChanged, osku => osku.Balance, oskuCF.Balance) + .SetIf(isDetailChanged, osku => osku.BaseDiscount, oskuCF.BaseDiscount) + .SetIf(isDetailChanged, osku => osku.BaseFee, oskuCF.BaseFee) + .SetIf(isDetailChanged, osku => osku.Coupon, oskuCF.Coupon) + .SetIf(isDetailChanged, osku => osku.DongQuan, oskuCF.DongQuan) + .SetIf(isDetailChanged, osku => osku.ExpiryGiftDiscount, oskuCF.ExpiryGiftDiscount) + .SetIf(isDetailChanged, osku => osku.GlobalGeneralIncludeTax, oskuCF.GlobalGeneralIncludeTax) + .SetIf(isDetailChanged, osku => osku.GlobalGeneralTax, oskuCF.GlobalGeneralTax) + .SetIf(isDetailChanged, osku => osku.JdZhiFuYouHui, oskuCF.JdZhiFuYouHui) + .SetIf(isDetailChanged, osku => osku.JingDou, oskuCF.JingDou) + .SetIf(isDetailChanged, osku => osku.JingQuan, oskuCF.JingQuan) + .SetIf(isDetailChanged, osku => osku.JingXiangLiJin, oskuCF.JingXiangLiJin) + .SetIf(isDetailChanged, osku => osku.LiJinYouHui, oskuCF.LiJinYouHui) + .SetIf(isDetailChanged, osku => osku.LuoDiPeiService, oskuCF.LuoDiPeiService) + .SetIf(isDetailChanged, osku => osku.ManJian, oskuCF.ManJian) + .SetIf(isDetailChanged, osku => osku.PingTaiChengDanYouHuiQuan, oskuCF.PingTaiChengDanYouHuiQuan) + .SetIf(isDetailChanged, osku => osku.Plus95, oskuCF.Plus95) + .SetIf(isDetailChanged, osku => osku.PromotionDiscount, oskuCF.PromotionDiscount) + .SetIf(isDetailChanged, osku => osku.RemoteFee, oskuCF.RemoteFee) + .SetIf(isDetailChanged, osku => osku.SuperRedEnvelope, oskuCF.SuperRedEnvelope) + .SetIf(isDetailChanged, osku => osku.TaxFee, oskuCF.TaxFee) + .SetIf(isDetailChanged, osku => osku.TuiHuanHuoWuYou, oskuCF.TuiHuanHuoWuYou) + .SetIf(isDetailChanged, osku => osku.VenderFee, oskuCF.VenderFee) + .SetIf(isDetailChanged, osku => osku.XianPinLeiDongQuan, oskuCF.XianPinLeiDongQuan) + .SetIf(isDetailChanged, osku => osku.XianPinLeiJingQuan, oskuCF.XianPinLeiJingQuan) + .SetIf(isDetailChanged, osku => osku.ZhiFuYingXiaoYouHui, oskuCF.ZhiFuYingXiaoYouHui); + ; + updateOrderSkuDictionary.Add(skuUpdateKey, update); + } } } } @@ -517,7 +724,13 @@ namespace BBWY.Server.Business { var orderSkuId = orderSkuJToken.Value("skuId"); var itemTotal = orderSkuJToken.Value("itemTotal"); //sku购买数量 - var itemPrice = orderSkuJToken.Value("jdPrice"); //sku单价 + decimal? skuShouldPay = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.ShouldPay; + if (skuShouldPay == null) + skuShouldPay = insertOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.ShouldPay; + if (skuShouldPay == null) + skuShouldPay = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.ShouldPay; + + //var itemPrice = orderSkuJToken.Value("jdPrice"); //sku单价 var isReduceMultiTimes = false; //是否多次扣减库存 while (itemTotal != 0) { @@ -529,6 +742,7 @@ namespace BBWY.Server.Business //本次扣减量 var deductionQuantity = purchaseOrder.RemainingQuantity >= itemTotal ? itemTotal : purchaseOrder.RemainingQuantity; + //var deductionQuantity = itemTotal; //本次扣减量的采购成本 var currentPurchaseAmount = purchaseOrder.UnitCost * deductionQuantity; //本次扣减量的发货运费 @@ -570,9 +784,11 @@ namespace BBWY.Server.Business StorageAmount = purchaseOrder.SingleStorageAmount * deductionQuantity, IsEnabled = true }; - orderCostDetail.SkuGrossProfit = itemPrice * deductionQuantity - avgPreferential - - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - - itemPrice * deductionQuantity * platformCommissionRatio; + + //orderCostDetail.SkuGrossProfit = itemPrice * deductionQuantity - avgPreferential - + // (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - + // itemPrice * deductionQuantity * platformCommissionRatio; + orderCostDetail.SkuGrossProfit = skuShouldPay ?? 0M - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight); insertOrderCostDetailList.Add(orderCostDetail); } } @@ -652,196 +868,6 @@ namespace BBWY.Server.Business } catch { } #endregion - - #region 优惠券/促销/拆分明细 - if (!dbOrderTotalList.Any(ot => ot.Id == orderId)) - { - var orderCouponDetailHttpResult = restApiService.SendRequest("http://yunding.qiyue666.com", "api/PlatformSDK/GetOrderCouponDetail", new - { - OrderId = orderId, - AppKey = appKey, - AppSecret = appSecret, - AppToken = appToken, - Platform = Enums.Platform.京东 - }, null, HttpMethod.Post); - if (orderCouponDetailHttpResult.StatusCode == System.Net.HttpStatusCode.OK) - { - var orderCouponDetailResponse = JsonConvert.DeserializeObject>(orderCouponDetailHttpResult.Content); - if (orderCouponDetailResponse.Success) - { - var jtoken = orderCouponDetailResponse.Data["jingdong_pop_order_coupondetail_responce"]["couponDetailExternal"]["couponDetailVo"]; - - #region 订单合计信息 - var orderTotal = new OrderTotalInfo() - { - CreateTime = DateTime.Now, - Id = orderId, - TotalBalance = jtoken.Value("totalBalance"), - TotalBaseDiscount = jtoken.Value("TotalBaseDiscount"), - TotalBaseFee = jtoken.Value("totalBaseFee"), - TotalCoupon = jtoken.Value("totalCoupon"), - TotalDongQuan = jtoken.Value("totalDongQuan"), - TotalExpiryGiftDiscount = jtoken.Value("totalExpiryGiftDiscount"), - TotalGlobalGeneralIncludeTax = jtoken.Value("totalGlobalGeneralIncludeTax"), - TotalGlobalGeneralTax = jtoken.Value("totalGlobalGeneralTax"), - TotalItemPrice = jtoken.Value("totalItemPrice"), - TotalJdZhiFuYouHui = jtoken.Value("totalJdZhiFuYouHui"), - TotalJingDou = jtoken.Value("totalJingDou"), - TotalJingQuan = jtoken.Value("totalJingQuan"), - TotalJingXiangLiJin = jtoken.Value("totalJingXiangLiJin"), - TotalLiJinYouHui = jtoken.Value("totalLiJinYouHui"), - TotalLuoDiPeiService = jtoken.Value("totalLuoDiPeiService"), - TotalManJian = jtoken.Value("totalManJian"), - TotalPingTaiChengDanYouHuiQuan = jtoken.Value("totalPingTaiChengDanYouHuiQuan"), - TotalPlus95 = jtoken.Value("totalPlus95"), - TotalPromotionDiscount = jtoken.Value("totalPromotionDiscount"), - TotalRemoteFee = jtoken.Value("totalRemoteFee"), - TotalShouldPay = jtoken.Value("totalShouldPay"), - TotalSuperRedEnvelope = jtoken.Value("totalSuperRedEnvelope"), - TotalTaxFee = jtoken.Value("totalTaxFee"), - TotalTuiHuanHuoWuYou = jtoken.Value("totalTuiHuanHuoWuYou"), - TotalVenderFee = jtoken.Value("totalVenderFee"), - TotalXianPinLeiDongQuan = jtoken.Value("totalXianPinLeiDongQuan"), - TotalXianPinLeiJingQuan = jtoken.Value("totalXianPinLeiJingQuan"), - TotalZhiFuYingXiaoYouHui = jtoken.Value("totalZhiFuYingXiaoYouHui") - }; - insertOrderTotalInfoList.Add(orderTotal); - #endregion - - #region 订单优惠券信息 - var couponJArray = jtoken["couponList"] as JArray; - if (couponJArray != null && couponJArray.Count() > 0) - { - insertOrderCouponNewList.AddRange(couponJArray.Select(j => new OrderCoupon_New() - { - Id = idGenerator.NewLong(), - CouponId = j.Value("couponId"), - CouponName = j.Value("couponName"), - CouponNum = j.Value("couponNum"), - CouponPrice = j.Value("couponPrice"), - CouponTypeDesc = j.Value("couponTypeDesc"), - CreateTime = DateTime.Now, - JdCouponId = j.Value("jdCouponId"), - JdDivideMoney = j.Value("jdDivideMoney"), - OrderId = orderId, - PriceDivide = j.Value("priceDivide"), - VenderDivideMoney = j.Value("venderDivideMoney") - })); - } - - #endregion - - #region 订单活动信息 - var promotionJArray = jtoken["promotionList"] as JArray; - if (promotionJArray != null && promotionJArray.Count() > 0) - { - insertOrderPromotionList.AddRange(promotionJArray.Select(j => new OrderPromotion() - { - Id = idGenerator.NewLong(), - BeginTime = j.Value("beginTime"), - EndTime = j.Value("endTime"), - CreateTime = DateTime.Now, - OrderId = orderId, - PromotionId = j.Value("promotionId"), - PromotionName = j.Value("promotionName"), - SalePrice = j.Value("salePrice"), - SaleTypeDesc = j.Value("saleTypeDesc") - })); - } - #endregion - - #region 订单sku金额明细 - var skuJArray = jtoken["skuList"] as JArray; - if (isNewOrder) - { - var currentOrderSkuList = insertOrderSkuList.Where(osku => osku.OrderId == orderId).ToList(); - foreach (var oskuJtoken in skuJArray) - { - var osku = currentOrderSkuList.FirstOrDefault(x => x.SkuId == oskuJtoken.Value("skuCode")); - if (osku != null) - { - osku.Balance = oskuJtoken.Value("balance"); - osku.BaseDiscount = oskuJtoken.Value("baseDiscount"); - osku.BaseFee = oskuJtoken.Value("baseFee"); - osku.Coupon = oskuJtoken.Value("coupon"); - osku.DongQuan = oskuJtoken.Value("dongQuan"); - osku.ExpiryGiftDiscount = oskuJtoken.Value("expiryGiftDiscount"); - osku.GlobalGeneralIncludeTax = oskuJtoken.Value("globalGeneralIncludeTax"); - osku.GlobalGeneralTax = oskuJtoken.Value("globalGeneralTax"); - osku.JdZhiFuYouHui = oskuJtoken.Value("jdZhiFuYouHui"); - osku.JingDou = oskuJtoken.Value("jingDou"); - osku.JingQuan = oskuJtoken.Value("jingQuan"); - osku.JingXiangLiJin = oskuJtoken.Value("jingXiangLiJin"); - osku.LiJinYouHui = oskuJtoken.Value("liJinYouHui"); - osku.LuoDiPeiService = oskuJtoken.Value("luoDiPeiService"); - osku.ManJian = oskuJtoken.Value("manJian"); - osku.PingTaiChengDanYouHuiQuan = oskuJtoken.Value("pingTaiChengDanYouHuiQuan"); - osku.Plus95 = oskuJtoken.Value("plus95"); - osku.PromotionDiscount = oskuJtoken.Value("promotionDiscount"); - osku.RemoteFee = oskuJtoken.Value("remoteFee"); - osku.ShouldPay = oskuJtoken.Value("shouldPay"); - osku.SuperRedEnvelope = oskuJtoken.Value("superRedEnvelope"); - osku.TaxFee = oskuJtoken.Value("taxFee"); - osku.TuiHuanHuoWuYou = oskuJtoken.Value("tuiHuanHuoWuYou"); - osku.VenderFee = oskuJtoken.Value("venderFee"); - osku.XianPinLeiDongQuan = oskuJtoken.Value("xianPinLeiDongQuan"); - osku.XianPinLeiJingQuan = oskuJtoken.Value("xianPinLeiJingQuan"); - osku.ZhiFuYingXiaoYouHui = oskuJtoken.Value("zhiFuYingXiaoYouHui"); - } - } - } - else - { - foreach (var oskuJtoken in skuJArray) - { - var skuId = oskuJtoken.Value("skuCode"); - var skuUpdateKey = $"{orderId}_{skuId}"; - if (!updateOrderSkuDictionary.TryGetValue(skuUpdateKey, out var update)) - { - var currentOrderSku = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == skuId); - if (currentOrderSku != null) - { - update = fsql.Update(currentOrderSku.Id); - updateOrderSkuDictionary.Add(skuUpdateKey, update); - } - } - if (update == null) - continue; - update = update.Set(osku => osku.Balance, oskuJtoken.Value("balance")) - .Set(osku => osku.BaseDiscount, oskuJtoken.Value("baseDiscount")) - .Set(osku => osku.BaseFee, oskuJtoken.Value("baseFee")) - .Set(osku => osku.Coupon, oskuJtoken.Value("coupon")) - .Set(osku => osku.DongQuan, oskuJtoken.Value("dongQuan")) - .Set(osku => osku.ExpiryGiftDiscount, oskuJtoken.Value("expiryGiftDiscount")) - .Set(osku => osku.GlobalGeneralIncludeTax, oskuJtoken.Value("globalGeneralIncludeTax")) - .Set(osku => osku.GlobalGeneralTax, oskuJtoken.Value("globalGeneralTax")) - .Set(osku => osku.JdZhiFuYouHui, oskuJtoken.Value("jdZhiFuYouHui")) - .Set(osku => osku.JingDou, oskuJtoken.Value("jingDou")) - .Set(osku => osku.JingQuan, oskuJtoken.Value("jingQuan")) - .Set(osku => osku.JingXiangLiJin, oskuJtoken.Value("jingXiangLiJin")) - .Set(osku => osku.LiJinYouHui, oskuJtoken.Value("liJinYouHui")) - .Set(osku => osku.LuoDiPeiService, oskuJtoken.Value("luoDiPeiService")) - .Set(osku => osku.ManJian, oskuJtoken.Value("manJian")) - .Set(osku => osku.PingTaiChengDanYouHuiQuan, oskuJtoken.Value("pingTaiChengDanYouHuiQuan")) - .Set(osku => osku.Plus95, oskuJtoken.Value("plus95")) - .Set(osku => osku.PromotionDiscount, oskuJtoken.Value("promotionDiscount")) - .Set(osku => osku.RemoteFee, oskuJtoken.Value("remoteFee")) - .Set(osku => osku.ShouldPay, oskuJtoken.Value("shouldPay")) - .Set(osku => osku.SuperRedEnvelope, oskuJtoken.Value("superRedEnvelope")) - .Set(osku => osku.TaxFee, oskuJtoken.Value("taxFee")) - .Set(osku => osku.TuiHuanHuoWuYou, oskuJtoken.Value("tuiHuanHuoWuYou")) - .Set(osku => osku.VenderFee, oskuJtoken.Value("venderFee")) - .Set(osku => osku.XianPinLeiDongQuan, oskuJtoken.Value("xianPinLeiDongQuan")) - .Set(osku => osku.XianPinLeiJingQuan, oskuJtoken.Value("xianPinLeiJingQuan")) - .Set(osku => osku.ZhiFuYingXiaoYouHui, oskuJtoken.Value("zhiFuYingXiaoYouHui")); - } - - } - #endregion - } - } - } - #endregion } #region 补齐sku logo diff --git a/BBWY.Server.Model/Db/Order/OrderCoupon_New.cs b/BBWY.Server.Model/Db/Order/OrderCoupon_New.cs index a608c5e7..e58390c6 100644 --- a/BBWY.Server.Model/Db/Order/OrderCoupon_New.cs +++ b/BBWY.Server.Model/Db/Order/OrderCoupon_New.cs @@ -14,14 +14,12 @@ namespace BBWY.Server.Model.Db /// /// 优惠券数量/发行量 /// - [Column(DbType = "int")] - public int? CouponNum { get; set; } = 0; + public long? CouponNum { get; set; } = 0; /// /// POP优惠券ID /// - [Column(DbType = "int")] - public int? CouponId { get; set; } + public long? CouponId { get; set; } /// /// 活动名称 diff --git a/BBWY.Server.Model/Db/Order/OrderPromotion.cs b/BBWY.Server.Model/Db/Order/OrderPromotion.cs index 8b602bc4..5a2f9c5e 100644 --- a/BBWY.Server.Model/Db/Order/OrderPromotion.cs +++ b/BBWY.Server.Model/Db/Order/OrderPromotion.cs @@ -35,8 +35,7 @@ namespace BBWY.Server.Model.Db /// /// pop促销ID /// - [Column(DbType = "int")] - public int? PromotionId { get; set; } + public long? PromotionId { get; set; } /// /// 活动名称 diff --git a/BBWY.Server.Model/Dto/Response/JD/OrderSkuCFDetail.cs b/BBWY.Server.Model/Dto/Response/JD/OrderSkuCFDetail.cs new file mode 100644 index 00000000..58de2a2d --- /dev/null +++ b/BBWY.Server.Model/Dto/Response/JD/OrderSkuCFDetail.cs @@ -0,0 +1,150 @@ +namespace BBWY.Server.Model.Dto +{ + /// + /// 订单Sku拆分明细对象 + /// + public class OrderSkuCFDetail + { + public string OrderId { get; set; } + + public string SkuId { get; set; } + + /// + /// 京东支付优惠,计价单位:元 + /// + public decimal? JdZhiFuYouHui { get; set; } = 0.00M; + + /// + /// plus会员95折优惠,计价单位:元 + /// + public decimal? Plus95 { get; set; } = 0.00M; + + /// + /// 余额,计价单位:元 + /// + public decimal? Balance { get; set; } = 0.00M; + + /// + /// 基础优惠,计价单位:元 + /// + public decimal? BaseDiscount { get; set; } = 0.00M; + + /// + /// 基础运费,计价单位:元 + /// + public decimal? BaseFee { get; set; } = 0.00M; + + /// + /// 优惠券,计价单位:元 + /// + public decimal? Coupon { get; set; } = 0.00M; + + /// + /// 东券,计价单位:元 + /// + public decimal? DongQuan { get; set; } = 0.00M; + + /// + /// 满期赠促销 + /// + public decimal? ExpiryGiftDiscount { get; set; } = 0.00M; + + /// + /// 全球购一般贸易税(包税),计价单位:元 + /// + public decimal? GlobalGeneralIncludeTax { get; set; } = 0.00M; + + /// + /// 全球购一般贸易税,计价单位:元 + /// + public decimal? GlobalGeneralTax { get; set; } = 0.00M; + + + /// + /// 京豆,计价单位:元 + /// + public decimal? JingDou { get; set; } = 0.00M; + + /// + /// 京券,计价单位:元 + /// + public decimal? JingQuan { get; set; } = 0.00M; + + /// + /// 京享礼金(首单礼金或重逢礼金),计价单位:元 + /// + public decimal? JingXiangLiJin { get; set; } = 0.00M; + + /// + /// 礼金优惠,计价单位:元 + /// + public decimal? LiJinYouHui { get; set; } = 0.00M; + + /// + /// 落地配服务,计价单位:元 + /// + public decimal? LuoDiPeiService { get; set; } = 0.00M; + + /// + /// 满减,计价单位:元 + /// + public decimal? ManJian { get; set; } = 0.00M; + + + /// + /// 按比例平台承担优惠券,计价单位:元 + /// + public decimal? PingTaiChengDanYouHuiQuan { get; set; } = 0.00M; + + + /// + /// 跨店满减促销 + /// + public decimal? PromotionDiscount { get; set; } = 0.00M; + + /// + /// 偏远运费,计价单位:元 + /// + public decimal? RemoteFee { get; set; } = 0.00M; + + /// + /// 应付金额,计价单位:元 + /// + public decimal? ShouldPay { get; set; } = 0.00M; + + /// + /// 超级红包,计价单位:元 + /// + public decimal? SuperRedEnvelope { get; set; } = 0.00M; + + /// + /// 全球购税费,计价单位:元 + /// + public decimal? TaxFee { get; set; } = 0.00M; + + /// + /// 退换货无忧,计价单位:元 + /// + public decimal? TuiHuanHuoWuYou { get; set; } = 0.00M; + + /// + /// 商家运费,计价单位:元 + /// + public decimal? VenderFee { get; set; } = 0.00M; + + /// + /// 限品类东券,计价单位:元 + /// + public decimal? XianPinLeiDongQuan { get; set; } = 0.00M; + + /// + /// 限品类京券,计价单位:元 + /// + public decimal? XianPinLeiJingQuan { get; set; } = 0.00M; + + /// + /// 支付营销优惠,计价单位:元 + /// + public decimal? ZhiFuYingXiaoYouHui { get; set; } = 0.00M; + } +} From 18de1194b4ccfda28318503f8c8fc0d374f5c40e Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 11 Nov 2023 10:18:43 +0800 Subject: [PATCH 03/19] =?UTF-8?q?sku=E8=AE=A2=E5=8D=95=E5=85=AC=E5=BC=8F?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWY.Server.Business/Order/OrderBusiness.cs | 20 +++++++++++-------- .../PurchaseOrder/PurchaseOrderBusiness.cs | 5 ++++- .../Sync/OrderSyncBusiness.cs | 2 +- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/BBWY.Server.Business/Order/OrderBusiness.cs b/BBWY.Server.Business/Order/OrderBusiness.cs index 23a17714..114d44bf 100644 --- a/BBWY.Server.Business/Order/OrderBusiness.cs +++ b/BBWY.Server.Business/Order/OrderBusiness.cs @@ -592,7 +592,8 @@ namespace BBWY.Server.Business SkuAmount = purchaseOrder.SingleSkuAmount * deductionQuantity, StorageAmount = purchaseOrder.SingleStorageAmount * deductionQuantity }; - orderCostDetail.SkuGrossProfit = orderSku.Price.Value * deductionQuantity - avgPreferential - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - orderSku.Price.Value * deductionQuantity * autoCalculationCostRequest.PlatformCommissionRatio; + //orderCostDetail.SkuGrossProfit = orderSku.Price.Value * deductionQuantity - avgPreferential - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - orderSku.Price.Value * deductionQuantity * autoCalculationCostRequest.PlatformCommissionRatio; + orderCostDetail.SkuGrossProfit = (orderSku.ShouldPay ?? 0M) - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; insertOrderCostDetailList.Add(orderCostDetail); } } @@ -660,7 +661,8 @@ namespace BBWY.Server.Business { osku.SkuId, osku.Price, - osku.ItemTotal + osku.ItemTotal, + osku.ShouldPay }); var avgPreferential = dbOrder.PreferentialAmount / orderSkuList.Count(); @@ -682,9 +684,10 @@ namespace BBWY.Server.Business var osku = orderSkuList.FirstOrDefault(o => o.SkuId == orderCostDetail.SkuId); if (osku != null) { - orderCostDetail.SkuGrossProfit = osku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential - - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - - osku.Price.Value * orderCostDetail.DeductionQuantity * manualCalculationCostRequest.PlatformCommissionRatio; + //orderCostDetail.SkuGrossProfit = osku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential - + // (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - + // osku.Price.Value * orderCostDetail.DeductionQuantity * manualCalculationCostRequest.PlatformCommissionRatio; + orderCostDetail.SkuGrossProfit = (osku.ShouldPay ?? 0M) - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; } } @@ -940,9 +943,10 @@ namespace BBWY.Server.Business var dbOrderSku = dbOrderSkuList.FirstOrDefault(dbosku => dbosku.SkuId == relationOrderSku.SkuId); if (dbOrderSku != null) { - orderCostDetail.SkuGrossProfit = dbOrderSku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential - - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - - dbOrderSku.Price.Value * orderCostDetail.DeductionQuantity * relationPurchaseOrderRequestV2.PlatformCommissionRatio; + //orderCostDetail.SkuGrossProfit = dbOrderSku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential - + // (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - + // dbOrderSku.Price.Value * orderCostDetail.DeductionQuantity * relationPurchaseOrderRequestV2.PlatformCommissionRatio; + orderCostDetail.SkuGrossProfit = (dbOrderSku.ShouldPay ?? 0M) - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; } #endregion } diff --git a/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 20d76e54..85734250 100644 --- a/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -263,7 +263,10 @@ namespace BBWY.Server.Business //UnitCost = purchaseOrder.UnitCost, //TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount//purchaseOrder.UnitCost * orderSku.ItemTotal.Value }; - orderCostDetail.SkuGrossProfit = orderSku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - orderSku.Price.Value * orderCostDetail.DeductionQuantity * createOnlinePurchaseOrderRequest.PlatformCommissionRatio; + //orderCostDetail.SkuGrossProfit = orderSku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - orderSku.Price.Value * orderCostDetail.DeductionQuantity * createOnlinePurchaseOrderRequest.PlatformCommissionRatio; + + orderCostDetail.SkuGrossProfit = (orderSku.ShouldPay ?? 0M) - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; + insertOrderCostDetails.Add(orderCostDetail); #endregion } diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 1d559183..76f2a569 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -788,7 +788,7 @@ namespace BBWY.Server.Business //orderCostDetail.SkuGrossProfit = itemPrice * deductionQuantity - avgPreferential - // (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - // itemPrice * deductionQuantity * platformCommissionRatio; - orderCostDetail.SkuGrossProfit = skuShouldPay ?? 0M - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight); + orderCostDetail.SkuGrossProfit = (skuShouldPay ?? 0M) - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; insertOrderCostDetailList.Add(orderCostDetail); } } From 0ec6730a563f34af64c794a9eeaabd2675944b65 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 11 Nov 2023 11:25:08 +0800 Subject: [PATCH 04/19] =?UTF-8?q?=E6=98=9F=E8=B1=A1=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BA=97=E9=93=BA=E5=AE=9E=E6=94=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Statistics/StatisticsBusiness.cs | 51 +++++++++++-------- .../Response/Order/XingXinagSearchResponse.cs | 17 +++---- 2 files changed, 36 insertions(+), 32 deletions(-) diff --git a/BBWY.Server.Business/Statistics/StatisticsBusiness.cs b/BBWY.Server.Business/Statistics/StatisticsBusiness.cs index 8e5c9b8f..a99d7736 100644 --- a/BBWY.Server.Business/Statistics/StatisticsBusiness.cs +++ b/BBWY.Server.Business/Statistics/StatisticsBusiness.cs @@ -144,7 +144,8 @@ namespace BBWY.Server.Business return list; } - private void XingXiangCumulative(IList detailList, string spuId, bool isSD, decimal profit, decimal spuProductAmount, decimal sdProductAmount, decimal sdCost) + private void XingXiangCumulative(IList detailList, + string spuId, bool isSD, decimal profit, decimal actualAmount, decimal sdCost) { var xxRespose = detailList.FirstOrDefault(xx => xx.Spu == spuId); if (xxRespose == null) @@ -153,11 +154,11 @@ namespace BBWY.Server.Business detailList.Add(xxRespose); } xxRespose.Profit += profit; - xxRespose.ActualAmount += spuProductAmount; + xxRespose.ActualAmount += actualAmount; if (isSD) { xxRespose.SDOrderCount++; - xxRespose.SDOrderAmount += sdProductAmount; + xxRespose.SDOrderAmount += actualAmount; xxRespose.SDOrderCost += sdCost; } } @@ -207,6 +208,7 @@ namespace BBWY.Server.Business var spuIdList = orderSkuList.Select(osku => osku.ProductId).Distinct().ToList(); List spuGoiList = null; GOIByShop shopGoi = null; + #region spu goi { var httpResult = restApiService.SendRequest("http://snapi.qiyue666.com/", "Api/GOI/QueryPopularizeLevelGOIBySpuId", new @@ -246,45 +248,49 @@ namespace BBWY.Server.Business if (order.StorageType == Enums.StorageType.SD) { - XingXiangCumulative(detailList, currentOrderSkuList[0].ProductId, true, order.Profit ?? 0M, order.OrderSellerPrice, order.OrderSellerPrice + order.FreightPrice, Math.Abs(order.Profit ?? 0M)); + //XingXiangCumulative(detailList, currentOrderSkuList[0].ProductId, true, order.Profit ?? 0M, order.OrderSellerPrice, order.OrderSellerPrice + order.FreightPrice, Math.Abs(order.Profit ?? 0M)); + XingXiangCumulative(detailList, currentOrderSkuList[0].ProductId, true, order.Profit ?? 0M, order.OrderSellerPrice + order.FreightPrice, Math.Abs(order.Profit ?? 0M)); continue; } var currentOrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == order.Id); var spuGroups = currentOrderSkuList.GroupBy(osku => osku.ProductId); - var tempOrderProdcutAmount = currentOrderSkuList.Sum(osku => osku.ItemTotal * osku.Price) ?? 0M; - var tempOrderCost = currentOrderCostDetailList.Count() > 0 ? currentOrderCostDetailList.Sum(ocd => ocd.TotalCost) : 0M; - var tempOrderProfit = tempOrderProdcutAmount - tempOrderCost; + //var tempOrderProdcutAmount = currentOrderSkuList.Sum(osku => osku.ItemTotal * osku.Price) ?? 0M; + //var tempOrderCost = currentOrderCostDetailList.Count() > 0 ? currentOrderCostDetailList.Sum(ocd => ocd.TotalCost) : 0M; + //var tempOrderProfit = tempOrderProdcutAmount - tempOrderCost; foreach (var spuGroup in spuGroups) { var currentSpuCostDetailList = currentOrderCostDetailList.Where(ocd => ocd.ProductId == spuGroup.Key); + var currentSkuOrderSkuList = currentOrderSkuList.Where(osku => osku.ProductId == spuGroup.Key); + + var totalActualAmount = currentSkuOrderSkuList.Sum(osku => osku.ShouldPay ?? 0M); + var totalProfit = currentSpuCostDetailList.Sum(ocd => ocd.SkuGrossProfit); - var tempSpuProductAmount = spuGroup.Sum(osku => osku.Price * osku.ItemTotal) ?? 0M; - var tempSpuCost = currentSpuCostDetailList.Count() > 0 ? currentSpuCostDetailList.Sum(ocd => ocd.TotalCost) : 0M; - var tempSpuProfit = tempSpuProductAmount - tempSpuCost; - var spuProfitPercent = tempOrderProfit == 0M ? 0M : tempSpuProfit / tempOrderProfit; + XingXiangCumulative(detailList, spuGroup.Key, false, totalProfit, totalActualAmount, 0); - var realSpuProfit = (order.Profit ?? 0M) * spuProfitPercent; - XingXiangCumulative(detailList, spuGroup.Key, false, realSpuProfit, tempSpuProductAmount, 0, 0); + //var tempSpuProductAmount = spuGroup.Sum(osku => osku.Price * osku.ItemTotal) ?? 0M; + //var tempSpuCost = currentSpuCostDetailList.Count() > 0 ? currentSpuCostDetailList.Sum(ocd => ocd.TotalCost) : 0M; + //var tempSpuProfit = tempSpuProductAmount - tempSpuCost; + //var spuProfitPercent = tempOrderProfit == 0M ? 0M : tempSpuProfit / tempOrderProfit; + + //var realSpuProfit = (order.Profit ?? 0M) * spuProfitPercent; + //XingXiangCumulative(detailList, spuGroup.Key, false, realSpuProfit, tempSpuProductAmount, 0, 0); } } - var shopProductAmount = orderSkuList.Sum(osku => osku.ItemTotal * osku.Price); + //var shopProductAmount = orderSkuList.Sum(osku => osku.ItemTotal * osku.Price); + var shopActualAmount = orderSkuList.Sum(osku => osku.ShouldPay ?? 0M); foreach (var d in detailList) { var spuGoi = spuGoiList?.FirstOrDefault(x => x.Spu == d.Spu); if (spuGoi != null) { - var productAmount = orderSkuList.Where(osku => osku.ProductId == d.Spu).Sum(osku => osku.ItemTotal * osku.Price); - d.SpuYingLiRatio = Math.Round((spuGoi.Profit - spuGoi.Cost) / productAmount.Value, 2); - //d.SpuYingLiRatio = Math.Round((d.Profit - spuGoi.Cost) / productAmount.Value, 2); + //var spuActualAmount = orderSkuList.Where(osku => osku.ProductId == d.Spu).Sum(osku => osku.ShouldPay ?? 0M); + d.SpuYingLiRatio = d.ActualAmount == 0 ? 0 : Math.Round((spuGoi.Profit - spuGoi.Cost) / d.ActualAmount, 2); } - - d.ShopYingLiRatio = shopProductAmount == 0 ? 0 : Math.Round((shopGoi.Profit - shopGoi.Cost) / shopProductAmount.Value, 2); - d.ShopProfitRatio = shopProductAmount == 0 ? 0 : Math.Round(shopGoi.Profit / shopProductAmount.Value, 2); } @@ -297,8 +303,9 @@ namespace BBWY.Server.Business TotalSDOrderCount = sdOrderList.Count(), TotalSDOrderCost = detailList.Sum(xx => xx.SDOrderCost), TotalProfit = detailList.Sum(xx => xx.Profit), - ShopYingLiRatio = detailList.FirstOrDefault()?.ShopYingLiRatio, - ShopProfitRatio = detailList.FirstOrDefault()?.ShopProfitRatio + ShopYingLiRatio = shopActualAmount == 0 ? 0 : Math.Round((shopGoi.Profit - shopGoi.Cost) / shopActualAmount, 2), + ShopProfitRatio = shopActualAmount == 0 ? 0 : Math.Round(shopGoi.Profit / shopActualAmount, 2), + ShopActualAmount = shopActualAmount }; } diff --git a/BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs b/BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs index 071513ef..bf08aee3 100644 --- a/BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs +++ b/BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs @@ -39,6 +39,11 @@ namespace BBWY.Server.Model.Dto /// 店铺盈利率 /// public decimal? ShopYingLiRatio { get; set; } + + /// + /// 店铺实收金额 + /// + public decimal ShopActualAmount { get; set; } } public class XingXiangItemResponse @@ -83,19 +88,11 @@ namespace BBWY.Server.Model.Dto /// public decimal SDOrderAmount { get; set; } - /// - /// 店铺毛利率 - /// - public decimal? ShopProfitRatio { get; set; } - - /// - /// 店铺盈利率 - /// - public decimal? ShopYingLiRatio { get; set; } - /// /// SPU盈利率 /// public decimal? SpuYingLiRatio { get; set; } + + } } From 3414bbcdb5f9426f655124ad4b7e2043b6cd3707 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 12 Nov 2023 10:54:06 +0800 Subject: [PATCH 05/19] 1 --- .../Sync/OrderSyncBusiness.cs | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 76f2a569..9f7999bb 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -575,33 +575,33 @@ namespace BBWY.Server.Business { var update = fsql.Update(dbOsku.Id) .SetIf(dbOsku.ProductId != wareId, osku => osku.ProductId, wareId) - .SetIf(isDetailChanged, osku => osku.ShouldPay, oskuCF.ShouldPay) - .SetIf(isDetailChanged, osku => osku.Balance, oskuCF.Balance) - .SetIf(isDetailChanged, osku => osku.BaseDiscount, oskuCF.BaseDiscount) - .SetIf(isDetailChanged, osku => osku.BaseFee, oskuCF.BaseFee) - .SetIf(isDetailChanged, osku => osku.Coupon, oskuCF.Coupon) - .SetIf(isDetailChanged, osku => osku.DongQuan, oskuCF.DongQuan) - .SetIf(isDetailChanged, osku => osku.ExpiryGiftDiscount, oskuCF.ExpiryGiftDiscount) - .SetIf(isDetailChanged, osku => osku.GlobalGeneralIncludeTax, oskuCF.GlobalGeneralIncludeTax) - .SetIf(isDetailChanged, osku => osku.GlobalGeneralTax, oskuCF.GlobalGeneralTax) - .SetIf(isDetailChanged, osku => osku.JdZhiFuYouHui, oskuCF.JdZhiFuYouHui) - .SetIf(isDetailChanged, osku => osku.JingDou, oskuCF.JingDou) - .SetIf(isDetailChanged, osku => osku.JingQuan, oskuCF.JingQuan) - .SetIf(isDetailChanged, osku => osku.JingXiangLiJin, oskuCF.JingXiangLiJin) - .SetIf(isDetailChanged, osku => osku.LiJinYouHui, oskuCF.LiJinYouHui) - .SetIf(isDetailChanged, osku => osku.LuoDiPeiService, oskuCF.LuoDiPeiService) - .SetIf(isDetailChanged, osku => osku.ManJian, oskuCF.ManJian) - .SetIf(isDetailChanged, osku => osku.PingTaiChengDanYouHuiQuan, oskuCF.PingTaiChengDanYouHuiQuan) - .SetIf(isDetailChanged, osku => osku.Plus95, oskuCF.Plus95) - .SetIf(isDetailChanged, osku => osku.PromotionDiscount, oskuCF.PromotionDiscount) - .SetIf(isDetailChanged, osku => osku.RemoteFee, oskuCF.RemoteFee) - .SetIf(isDetailChanged, osku => osku.SuperRedEnvelope, oskuCF.SuperRedEnvelope) - .SetIf(isDetailChanged, osku => osku.TaxFee, oskuCF.TaxFee) - .SetIf(isDetailChanged, osku => osku.TuiHuanHuoWuYou, oskuCF.TuiHuanHuoWuYou) - .SetIf(isDetailChanged, osku => osku.VenderFee, oskuCF.VenderFee) - .SetIf(isDetailChanged, osku => osku.XianPinLeiDongQuan, oskuCF.XianPinLeiDongQuan) - .SetIf(isDetailChanged, osku => osku.XianPinLeiJingQuan, oskuCF.XianPinLeiJingQuan) - .SetIf(isDetailChanged, osku => osku.ZhiFuYingXiaoYouHui, oskuCF.ZhiFuYingXiaoYouHui); + .SetIf(isDetailChanged, osku => osku.ShouldPay, oskuCF?.ShouldPay) + .SetIf(isDetailChanged, osku => osku.Balance, oskuCF?.Balance) + .SetIf(isDetailChanged, osku => osku.BaseDiscount, oskuCF?.BaseDiscount) + .SetIf(isDetailChanged, osku => osku.BaseFee, oskuCF?.BaseFee) + .SetIf(isDetailChanged, osku => osku.Coupon, oskuCF?.Coupon) + .SetIf(isDetailChanged, osku => osku.DongQuan, oskuCF?.DongQuan) + .SetIf(isDetailChanged, osku => osku.ExpiryGiftDiscount, oskuCF?.ExpiryGiftDiscount) + .SetIf(isDetailChanged, osku => osku.GlobalGeneralIncludeTax, oskuCF?.GlobalGeneralIncludeTax) + .SetIf(isDetailChanged, osku => osku.GlobalGeneralTax, oskuCF?.GlobalGeneralTax) + .SetIf(isDetailChanged, osku => osku.JdZhiFuYouHui, oskuCF?.JdZhiFuYouHui) + .SetIf(isDetailChanged, osku => osku.JingDou, oskuCF?.JingDou) + .SetIf(isDetailChanged, osku => osku.JingQuan, oskuCF?.JingQuan) + .SetIf(isDetailChanged, osku => osku.JingXiangLiJin, oskuCF?.JingXiangLiJin) + .SetIf(isDetailChanged, osku => osku.LiJinYouHui, oskuCF?.LiJinYouHui) + .SetIf(isDetailChanged, osku => osku.LuoDiPeiService, oskuCF?.LuoDiPeiService) + .SetIf(isDetailChanged, osku => osku.ManJian, oskuCF?.ManJian) + .SetIf(isDetailChanged, osku => osku.PingTaiChengDanYouHuiQuan, oskuCF?.PingTaiChengDanYouHuiQuan) + .SetIf(isDetailChanged, osku => osku.Plus95, oskuCF?.Plus95) + .SetIf(isDetailChanged, osku => osku.PromotionDiscount, oskuCF?.PromotionDiscount) + .SetIf(isDetailChanged, osku => osku.RemoteFee, oskuCF?.RemoteFee) + .SetIf(isDetailChanged, osku => osku.SuperRedEnvelope, oskuCF?.SuperRedEnvelope) + .SetIf(isDetailChanged, osku => osku.TaxFee, oskuCF?.TaxFee) + .SetIf(isDetailChanged, osku => osku.TuiHuanHuoWuYou, oskuCF?.TuiHuanHuoWuYou) + .SetIf(isDetailChanged, osku => osku.VenderFee, oskuCF?.VenderFee) + .SetIf(isDetailChanged, osku => osku.XianPinLeiDongQuan, oskuCF?.XianPinLeiDongQuan) + .SetIf(isDetailChanged, osku => osku.XianPinLeiJingQuan, oskuCF?.XianPinLeiJingQuan) + .SetIf(isDetailChanged, osku => osku.ZhiFuYingXiaoYouHui, oskuCF?.ZhiFuYingXiaoYouHui); ; updateOrderSkuDictionary.Add(skuUpdateKey, update); } @@ -930,7 +930,7 @@ namespace BBWY.Server.Business fsql.Insert(insertOrderSkuList).ExecuteAffrows(); if (insertOrderConsigneeList.Count() > 0) fsql.Insert(insertOrderConsigneeList).ExecuteAffrows(); - if (insertOrderCostList.Count() > 0) + if (insertOrderCostList.Count() > 0) fsql.Insert(insertOrderCostList).ExecuteAffrows(); if (insertOrderCostDetailList.Count() > 0) fsql.Insert(insertOrderCostDetailList).ExecuteAffrows(); From 2cba1b6d324a9b66d150e33a35b0afbfe0e3b2de Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 12 Nov 2023 11:39:54 +0800 Subject: [PATCH 06/19] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E6=8D=95=E6=8D=89=E4=B8=8B=E6=B2=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sync/OrderSyncBusiness.cs | 1065 +++++++++-------- 1 file changed, 538 insertions(+), 527 deletions(-) diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 9f7999bb..08f79260 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -222,7 +222,7 @@ namespace BBWY.Server.Business var interfaceOrderIdList = validOrders.Select(orderJToken => orderJToken.Value("orderId")); var interfaceCanceledOrderIdList = validOrders.Where(orderJToken => orderJToken.Value("orderState").Equals("TRADE_CANCELED")) - .Select(orderJToken => orderJToken.Value("orderId")); //接口查询结果中取消状态的订单Id + .Select(orderJToken => orderJToken.Value("orderId")); //接口查询结果中取消状态的订单Id var dbOrderList = fsql.Select().Where(o => interfaceOrderIdList.Contains(o.Id)).ToList(o => new Order @@ -282,592 +282,603 @@ namespace BBWY.Server.Business foreach (var orderJToken in validOrders) { var orderId = orderJToken.Value("orderId"); - if (insertOrderList.Any(o => o.Id == orderId)) - continue; - var dbOrder = dbOrderList.FirstOrDefault(o => o.Id == orderId); - var isNewOrder = dbOrder == null; - SDCalculationCostRequest sDCalculationCostRequest = null; //SD信息埋点 - - #region 优惠券/促销/拆分明细 - if (!dbOrderTotalList.Any(ot => ot.Id == orderId)) + try { - var orderCouponDetailHttpResult = restApiService.SendRequest("http://yunding.qiyue666.com", "api/PlatformSDK/GetOrderCouponDetail", new - { - OrderId = orderId, - AppKey = appKey, - AppSecret = appSecret, - AppToken = appToken, - Platform = Enums.Platform.京东 - }, null, HttpMethod.Post); - if (orderCouponDetailHttpResult.StatusCode == System.Net.HttpStatusCode.OK) + + if (insertOrderList.Any(o => o.Id == orderId)) + continue; + var dbOrder = dbOrderList.FirstOrDefault(o => o.Id == orderId); + var isNewOrder = dbOrder == null; + SDCalculationCostRequest sDCalculationCostRequest = null; //SD信息埋点 + + #region 优惠券/促销/拆分明细 + if (!dbOrderTotalList.Any(ot => ot.Id == orderId)) { - var orderCouponDetailResponse = JsonConvert.DeserializeObject>(orderCouponDetailHttpResult.Content); - if (orderCouponDetailResponse.Success) + var orderCouponDetailHttpResult = restApiService.SendRequest("http://yunding.qiyue666.com", "api/PlatformSDK/GetOrderCouponDetail", new { - var jtoken = orderCouponDetailResponse.Data["jingdong_pop_order_coupondetail_responce"]["couponDetailExternal"]["couponDetailVo"]; - - #region 订单合计信息 - var orderTotal = new OrderTotalInfo() + OrderId = orderId, + AppKey = appKey, + AppSecret = appSecret, + AppToken = appToken, + Platform = Enums.Platform.京东 + }, null, HttpMethod.Post); + if (orderCouponDetailHttpResult.StatusCode == System.Net.HttpStatusCode.OK) + { + var orderCouponDetailResponse = JsonConvert.DeserializeObject>(orderCouponDetailHttpResult.Content); + if (orderCouponDetailResponse.Success) { - CreateTime = DateTime.Now, - Id = orderId, - TotalBalance = jtoken.Value("totalBalance"), - TotalBaseDiscount = jtoken.Value("TotalBaseDiscount"), - TotalBaseFee = jtoken.Value("totalBaseFee"), - TotalCoupon = jtoken.Value("totalCoupon"), - TotalDongQuan = jtoken.Value("totalDongQuan"), - TotalExpiryGiftDiscount = jtoken.Value("totalExpiryGiftDiscount"), - TotalGlobalGeneralIncludeTax = jtoken.Value("totalGlobalGeneralIncludeTax"), - TotalGlobalGeneralTax = jtoken.Value("totalGlobalGeneralTax"), - TotalItemPrice = jtoken.Value("totalItemPrice"), - TotalJdZhiFuYouHui = jtoken.Value("totalJdZhiFuYouHui"), - TotalJingDou = jtoken.Value("totalJingDou"), - TotalJingQuan = jtoken.Value("totalJingQuan"), - TotalJingXiangLiJin = jtoken.Value("totalJingXiangLiJin"), - TotalLiJinYouHui = jtoken.Value("totalLiJinYouHui"), - TotalLuoDiPeiService = jtoken.Value("totalLuoDiPeiService"), - TotalManJian = jtoken.Value("totalManJian"), - TotalPingTaiChengDanYouHuiQuan = jtoken.Value("totalPingTaiChengDanYouHuiQuan"), - TotalPlus95 = jtoken.Value("totalPlus95"), - TotalPromotionDiscount = jtoken.Value("totalPromotionDiscount"), - TotalRemoteFee = jtoken.Value("totalRemoteFee"), - TotalShouldPay = jtoken.Value("totalShouldPay"), - TotalSuperRedEnvelope = jtoken.Value("totalSuperRedEnvelope"), - TotalTaxFee = jtoken.Value("totalTaxFee"), - TotalTuiHuanHuoWuYou = jtoken.Value("totalTuiHuanHuoWuYou"), - TotalVenderFee = jtoken.Value("totalVenderFee"), - TotalXianPinLeiDongQuan = jtoken.Value("totalXianPinLeiDongQuan"), - TotalXianPinLeiJingQuan = jtoken.Value("totalXianPinLeiJingQuan"), - TotalZhiFuYingXiaoYouHui = jtoken.Value("totalZhiFuYingXiaoYouHui") - }; - insertOrderTotalInfoList.Add(orderTotal); - #endregion + var jtoken = orderCouponDetailResponse.Data["jingdong_pop_order_coupondetail_responce"]["couponDetailExternal"]["couponDetailVo"]; - #region 订单优惠券信息 - var couponJArray = jtoken["couponList"] as JArray; - if (couponJArray != null && couponJArray.Count() > 0) - { - insertOrderCouponNewList.AddRange(couponJArray.Select(j => new OrderCoupon_New() + #region 订单合计信息 + var orderTotal = new OrderTotalInfo() { - Id = idGenerator.NewLong(), - CouponId = j.Value("couponId"), - CouponName = j.Value("couponName"), - CouponNum = j.Value("couponNum"), - CouponPrice = j.Value("couponPrice"), - CouponTypeDesc = j.Value("couponTypeDesc"), CreateTime = DateTime.Now, - JdCouponId = j.Value("jdCouponId"), - JdDivideMoney = j.Value("jdDivideMoney"), - OrderId = orderId, - PriceDivide = j.Value("priceDivide"), - VenderDivideMoney = j.Value("venderDivideMoney") - })); - } + Id = orderId, + TotalBalance = jtoken.Value("totalBalance"), + TotalBaseDiscount = jtoken.Value("TotalBaseDiscount"), + TotalBaseFee = jtoken.Value("totalBaseFee"), + TotalCoupon = jtoken.Value("totalCoupon"), + TotalDongQuan = jtoken.Value("totalDongQuan"), + TotalExpiryGiftDiscount = jtoken.Value("totalExpiryGiftDiscount"), + TotalGlobalGeneralIncludeTax = jtoken.Value("totalGlobalGeneralIncludeTax"), + TotalGlobalGeneralTax = jtoken.Value("totalGlobalGeneralTax"), + TotalItemPrice = jtoken.Value("totalItemPrice"), + TotalJdZhiFuYouHui = jtoken.Value("totalJdZhiFuYouHui"), + TotalJingDou = jtoken.Value("totalJingDou"), + TotalJingQuan = jtoken.Value("totalJingQuan"), + TotalJingXiangLiJin = jtoken.Value("totalJingXiangLiJin"), + TotalLiJinYouHui = jtoken.Value("totalLiJinYouHui"), + TotalLuoDiPeiService = jtoken.Value("totalLuoDiPeiService"), + TotalManJian = jtoken.Value("totalManJian"), + TotalPingTaiChengDanYouHuiQuan = jtoken.Value("totalPingTaiChengDanYouHuiQuan"), + TotalPlus95 = jtoken.Value("totalPlus95"), + TotalPromotionDiscount = jtoken.Value("totalPromotionDiscount"), + TotalRemoteFee = jtoken.Value("totalRemoteFee"), + TotalShouldPay = jtoken.Value("totalShouldPay"), + TotalSuperRedEnvelope = jtoken.Value("totalSuperRedEnvelope"), + TotalTaxFee = jtoken.Value("totalTaxFee"), + TotalTuiHuanHuoWuYou = jtoken.Value("totalTuiHuanHuoWuYou"), + TotalVenderFee = jtoken.Value("totalVenderFee"), + TotalXianPinLeiDongQuan = jtoken.Value("totalXianPinLeiDongQuan"), + TotalXianPinLeiJingQuan = jtoken.Value("totalXianPinLeiJingQuan"), + TotalZhiFuYingXiaoYouHui = jtoken.Value("totalZhiFuYingXiaoYouHui") + }; + insertOrderTotalInfoList.Add(orderTotal); + #endregion - #endregion + #region 订单优惠券信息 + var couponJArray = jtoken["couponList"] as JArray; + if (couponJArray != null && couponJArray.Count() > 0) + { + insertOrderCouponNewList.AddRange(couponJArray.Select(j => new OrderCoupon_New() + { + Id = idGenerator.NewLong(), + CouponId = j.Value("couponId"), + CouponName = j.Value("couponName"), + CouponNum = j.Value("couponNum"), + CouponPrice = j.Value("couponPrice"), + CouponTypeDesc = j.Value("couponTypeDesc"), + CreateTime = DateTime.Now, + JdCouponId = j.Value("jdCouponId"), + JdDivideMoney = j.Value("jdDivideMoney"), + OrderId = orderId, + PriceDivide = j.Value("priceDivide"), + VenderDivideMoney = j.Value("venderDivideMoney") + })); + } - #region 订单活动信息 - var promotionJArray = jtoken["promotionList"] as JArray; - if (promotionJArray != null && promotionJArray.Count() > 0) - { - insertOrderPromotionList.AddRange(promotionJArray.Select(j => new OrderPromotion() + #endregion + + #region 订单活动信息 + var promotionJArray = jtoken["promotionList"] as JArray; + if (promotionJArray != null && promotionJArray.Count() > 0) { - Id = idGenerator.NewLong(), - BeginTime = j.Value("beginTime"), - EndTime = j.Value("endTime"), - CreateTime = DateTime.Now, - OrderId = orderId, - PromotionId = j.Value("promotionId"), - PromotionName = j.Value("promotionName"), - SalePrice = j.Value("salePrice"), - SaleTypeDesc = j.Value("saleTypeDesc") - })); - } - #endregion + insertOrderPromotionList.AddRange(promotionJArray.Select(j => new OrderPromotion() + { + Id = idGenerator.NewLong(), + BeginTime = j.Value("beginTime"), + EndTime = j.Value("endTime"), + CreateTime = DateTime.Now, + OrderId = orderId, + PromotionId = j.Value("promotionId"), + PromotionName = j.Value("promotionName"), + SalePrice = j.Value("salePrice"), + SaleTypeDesc = j.Value("saleTypeDesc") + })); + } + #endregion - #region 订单sku金额明细 - var skuJArray = jtoken["skuList"] as JArray; - foreach (var oskuJtoken in skuJArray) - { - var oskuCF = new OrderSkuCFDetail() + #region 订单sku金额明细 + var skuJArray = jtoken["skuList"] as JArray; + if (skuJArray != null && skuJArray.Count() > 0) { - OrderId = orderId, - SkuId = oskuJtoken.Value("skuCode"), - Balance = oskuJtoken.Value("balance"), - BaseDiscount = oskuJtoken.Value("baseDiscount"), - BaseFee = oskuJtoken.Value("baseFee"), - Coupon = oskuJtoken.Value("coupon"), - DongQuan = oskuJtoken.Value("dongQuan"), - ExpiryGiftDiscount = oskuJtoken.Value("expiryGiftDiscount"), - GlobalGeneralIncludeTax = oskuJtoken.Value("globalGeneralIncludeTax"), - GlobalGeneralTax = oskuJtoken.Value("globalGeneralTax"), - JdZhiFuYouHui = oskuJtoken.Value("jdZhiFuYouHui"), - JingDou = oskuJtoken.Value("jingDou"), - JingQuan = oskuJtoken.Value("jingQuan"), - JingXiangLiJin = oskuJtoken.Value("jingXiangLiJin"), - LiJinYouHui = oskuJtoken.Value("liJinYouHui"), - LuoDiPeiService = oskuJtoken.Value("luoDiPeiService"), - ManJian = oskuJtoken.Value("manJian"), - PingTaiChengDanYouHuiQuan = oskuJtoken.Value("pingTaiChengDanYouHuiQuan"), - Plus95 = oskuJtoken.Value("plus95"), - PromotionDiscount = oskuJtoken.Value("promotionDiscount"), - RemoteFee = oskuJtoken.Value("remoteFee"), - ShouldPay = oskuJtoken.Value("shouldPay"), - SuperRedEnvelope = oskuJtoken.Value("superRedEnvelope"), - TaxFee = oskuJtoken.Value("taxFee"), - TuiHuanHuoWuYou = oskuJtoken.Value("tuiHuanHuoWuYou"), - VenderFee = oskuJtoken.Value("venderFee"), - XianPinLeiDongQuan = oskuJtoken.Value("xianPinLeiDongQuan"), - XianPinLeiJingQuan = oskuJtoken.Value("xianPinLeiJingQuan"), - ZhiFuYingXiaoYouHui = oskuJtoken.Value("zhiFuYingXiaoYouHui") - }; - orderSkuCFDetailList.Add(oskuCF); - } - #endregion + foreach (var oskuJtoken in skuJArray) + { + var oskuCF = new OrderSkuCFDetail() + { + OrderId = orderId, + SkuId = oskuJtoken.Value("skuCode"), + Balance = oskuJtoken.Value("balance"), + BaseDiscount = oskuJtoken.Value("baseDiscount"), + BaseFee = oskuJtoken.Value("baseFee"), + Coupon = oskuJtoken.Value("coupon"), + DongQuan = oskuJtoken.Value("dongQuan"), + ExpiryGiftDiscount = oskuJtoken.Value("expiryGiftDiscount"), + GlobalGeneralIncludeTax = oskuJtoken.Value("globalGeneralIncludeTax"), + GlobalGeneralTax = oskuJtoken.Value("globalGeneralTax"), + JdZhiFuYouHui = oskuJtoken.Value("jdZhiFuYouHui"), + JingDou = oskuJtoken.Value("jingDou"), + JingQuan = oskuJtoken.Value("jingQuan"), + JingXiangLiJin = oskuJtoken.Value("jingXiangLiJin"), + LiJinYouHui = oskuJtoken.Value("liJinYouHui"), + LuoDiPeiService = oskuJtoken.Value("luoDiPeiService"), + ManJian = oskuJtoken.Value("manJian"), + PingTaiChengDanYouHuiQuan = oskuJtoken.Value("pingTaiChengDanYouHuiQuan"), + Plus95 = oskuJtoken.Value("plus95"), + PromotionDiscount = oskuJtoken.Value("promotionDiscount"), + RemoteFee = oskuJtoken.Value("remoteFee"), + ShouldPay = oskuJtoken.Value("shouldPay"), + SuperRedEnvelope = oskuJtoken.Value("superRedEnvelope"), + TaxFee = oskuJtoken.Value("taxFee"), + TuiHuanHuoWuYou = oskuJtoken.Value("tuiHuanHuoWuYou"), + VenderFee = oskuJtoken.Value("venderFee"), + XianPinLeiDongQuan = oskuJtoken.Value("xianPinLeiDongQuan"), + XianPinLeiJingQuan = oskuJtoken.Value("xianPinLeiJingQuan"), + ZhiFuYingXiaoYouHui = oskuJtoken.Value("zhiFuYingXiaoYouHui") + }; + orderSkuCFDetailList.Add(oskuCF); + } + } + #endregion + } } } - } - #endregion - - #region 订单基本信息 - var buyerRemark = orderJToken.Value("orderRemark"); - var venderRemark = orderJToken.Value("venderRemark"); - var modifyTime = orderJToken.Value("modified"); - var endTime = orderJToken.Value("orderEndTime"); - var waybillNo = orderJToken.Value("waybill"); - var freightPrice = orderJToken.Value("freightPrice"); - var orderPayment = orderJToken.Value("orderPayment"); - var sellerPreferentialAmount = orderJToken.Value("sellerDiscount"); - var orderSellerPrice = orderJToken.Value("orderSellerPrice"); - var orderTotalPrice = orderJToken.Value("orderTotalPrice"); - var storeOrder = orderJToken.Value("storeOrder") ?? string.Empty; - var storeId = orderJToken.Value("storeId"); - var storageType = ConvertStoreOrder(storeOrder); - var preferentialAmount = 0M; - if (dbOrder == null) - { - dbOrder = new Order() - { - Id = orderId, - BuyerRemark = buyerRemark, - VenderRemark = venderRemark, - FreightPrice = freightPrice, - EndTime = endTime, - StartTime = orderJToken.Value("orderStartTime"), - ModifyTime = modifyTime, - OrderPayment = orderPayment, - SellerPreferentialAmount = sellerPreferentialAmount, - OrderSellerPrice = orderSellerPrice, - OrderTotalPrice = orderTotalPrice, - OrderType = (Enums.OrderType)orderJToken.Value("orderType"), - Platform = Enums.Platform.京东, - ShopId = shopId, - //VenderId = orderJToken.Value("venderId"), - WaybillNo = waybillNo, - StoreOrder = storeOrder, - StoreId = storeId, - IsGift = orderSellerPrice == 0M, - StorageType = storageType - }; - - if (memoryCache.TryGetValue(orderId, out sDCalculationCostRequest)) - { - dbOrder.StorageType = Enums.StorageType.SD; - dbOrder.SDType = sDCalculationCostRequest.SDType; - dbOrder.Flag = sDCalculationCostRequest.Flag; - if (!string.IsNullOrEmpty(sDCalculationCostRequest.VenderRemark)) - dbOrder.VenderRemark = sDCalculationCostRequest.VenderRemark; - dbOrder.SDKey = sDCalculationCostRequest.SDKey; - dbOrder.SDPayBillNo = sDCalculationCostRequest.SDPayBillNo; - dbOrder.SDOperator = sDCalculationCostRequest.SDOperator; - dbOrder.SDPayChannel = sDCalculationCostRequest.SDPayChannel; - } + #endregion - var payType = orderJToken.Value("payType"); - if (payType.Contains("-")) - dbOrder.PayType = (Enums.PayType)Convert.ToInt32(payType.Substring(0, 1)); + #region 订单基本信息 + var buyerRemark = orderJToken.Value("orderRemark"); + var venderRemark = orderJToken.Value("venderRemark"); + var modifyTime = orderJToken.Value("modified"); + var endTime = orderJToken.Value("orderEndTime"); + var waybillNo = orderJToken.Value("waybill"); + var freightPrice = orderJToken.Value("freightPrice"); + var orderPayment = orderJToken.Value("orderPayment"); + var sellerPreferentialAmount = orderJToken.Value("sellerDiscount"); + var orderSellerPrice = orderJToken.Value("orderSellerPrice"); + var orderTotalPrice = orderJToken.Value("orderTotalPrice"); + var storeOrder = orderJToken.Value("storeOrder") ?? string.Empty; + var storeId = orderJToken.Value("storeId"); + var storageType = ConvertStoreOrder(storeOrder); + var preferentialAmount = 0M; + if (dbOrder == null) + { + dbOrder = new Order() + { + Id = orderId, + BuyerRemark = buyerRemark, + VenderRemark = venderRemark, + FreightPrice = freightPrice, + EndTime = endTime, + StartTime = orderJToken.Value("orderStartTime"), + ModifyTime = modifyTime, + OrderPayment = orderPayment, + SellerPreferentialAmount = sellerPreferentialAmount, + OrderSellerPrice = orderSellerPrice, + OrderTotalPrice = orderTotalPrice, + OrderType = (Enums.OrderType)orderJToken.Value("orderType"), + Platform = Enums.Platform.京东, + ShopId = shopId, + //VenderId = orderJToken.Value("venderId"), + WaybillNo = waybillNo, + StoreOrder = storeOrder, + StoreId = storeId, + IsGift = orderSellerPrice == 0M, + StorageType = storageType + }; - insertOrderList.Add(dbOrder); + if (memoryCache.TryGetValue(orderId, out sDCalculationCostRequest)) + { + dbOrder.StorageType = Enums.StorageType.SD; + dbOrder.SDType = sDCalculationCostRequest.SDType; + dbOrder.Flag = sDCalculationCostRequest.Flag; + if (!string.IsNullOrEmpty(sDCalculationCostRequest.VenderRemark)) + dbOrder.VenderRemark = sDCalculationCostRequest.VenderRemark; + dbOrder.SDKey = sDCalculationCostRequest.SDKey; + dbOrder.SDPayBillNo = sDCalculationCostRequest.SDPayBillNo; + dbOrder.SDOperator = sDCalculationCostRequest.SDOperator; + dbOrder.SDPayChannel = sDCalculationCostRequest.SDPayChannel; + } - #region OrderSku - var itemInfoList = orderJToken["itemInfoList"] as JArray; - foreach (var orderSkuJToken in itemInfoList) - { - var itemTotal = orderSkuJToken.Value("itemTotal"); - var jdPrice = orderSkuJToken.Value("jdPrice"); - var wareId = orderSkuJToken.Value("wareId"); - var skuId = orderSkuJToken.Value("skuId"); + var payType = orderJToken.Value("payType"); + if (payType.Contains("-")) + dbOrder.PayType = (Enums.PayType)Convert.ToInt32(payType.Substring(0, 1)); - //if (orderSkuJToken.Value("jdPrice") != 0M) - //{ - var oskuCF = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == skuId); + insertOrderList.Add(dbOrder); - var osku = new OrderSku() + #region OrderSku + var itemInfoList = orderJToken["itemInfoList"] as JArray; + foreach (var orderSkuJToken in itemInfoList) { - Id = idGenerator.NewLong(), - ItemTotal = itemTotal, - Price = jdPrice, - ProductId = wareId, - Title = orderSkuJToken.Value("skuName").SimplifySkuName(), - ProductNo = orderSkuJToken.Value("productNo"), - CreateTime = DateTime.Now, - OrderId = orderId, - SkuId = skuId, - Balance = oskuCF?.Balance ?? 0M, - BaseDiscount = oskuCF?.BaseFee ?? 0M, - BaseFee = oskuCF?.BaseFee ?? 0M, - Coupon = oskuCF?.Coupon ?? 0M, - DongQuan = oskuCF?.DongQuan ?? 0M, - ExpiryGiftDiscount = oskuCF?.ExpiryGiftDiscount ?? 0M, - GlobalGeneralIncludeTax = oskuCF?.GlobalGeneralIncludeTax ?? 0M, - GlobalGeneralTax = oskuCF?.GlobalGeneralTax ?? 0M, - JdZhiFuYouHui = oskuCF?.JdZhiFuYouHui ?? 0M, - JingDou = oskuCF?.JingDou ?? 0M, - JingQuan = oskuCF?.JingQuan ?? 0M, - JingXiangLiJin = oskuCF?.JingXiangLiJin ?? 0M, - LiJinYouHui = oskuCF?.LiJinYouHui ?? 0M, - LuoDiPeiService = oskuCF?.LuoDiPeiService ?? 0M, - ManJian = oskuCF?.ManJian ?? 0M, - PingTaiChengDanYouHuiQuan = oskuCF?.PingTaiChengDanYouHuiQuan ?? 0M, - Plus95 = oskuCF?.Plus95 ?? 0M, - PromotionDiscount = oskuCF?.PromotionDiscount ?? 0M, - RemoteFee = oskuCF?.RemoteFee ?? 0M, - ShouldPay = oskuCF?.ShouldPay ?? 0M, - SuperRedEnvelope = oskuCF?.SuperRedEnvelope ?? 0M, - TaxFee = oskuCF?.TaxFee ?? 0M, - TuiHuanHuoWuYou = oskuCF?.TuiHuanHuoWuYou ?? 0M, - VenderFee = oskuCF?.VenderFee ?? 0M, - XianPinLeiDongQuan = oskuCF?.XianPinLeiDongQuan ?? 0M, - XianPinLeiJingQuan = oskuCF?.XianPinLeiJingQuan ?? 0M, - ZhiFuYingXiaoYouHui = oskuCF?.ZhiFuYingXiaoYouHui ?? 0M - }; - insertOrderSkuList.Add(osku); - //} - //CumulativeSkuDailySalesDetail(skuDailySalesDetailDictionary, dbOrder.StartTime.Value, shopId, skuId, wareId, jdPrice, itemTotal); + var itemTotal = orderSkuJToken.Value("itemTotal"); + var jdPrice = orderSkuJToken.Value("jdPrice"); + var wareId = orderSkuJToken.Value("wareId"); + var skuId = orderSkuJToken.Value("skuId"); + + //if (orderSkuJToken.Value("jdPrice") != 0M) + //{ + var oskuCF = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == skuId); + + var osku = new OrderSku() + { + Id = idGenerator.NewLong(), + ItemTotal = itemTotal, + Price = jdPrice, + ProductId = wareId, + Title = orderSkuJToken.Value("skuName").SimplifySkuName(), + ProductNo = orderSkuJToken.Value("productNo"), + CreateTime = DateTime.Now, + OrderId = orderId, + SkuId = skuId, + Balance = oskuCF?.Balance ?? 0M, + BaseDiscount = oskuCF?.BaseFee ?? 0M, + BaseFee = oskuCF?.BaseFee ?? 0M, + Coupon = oskuCF?.Coupon ?? 0M, + DongQuan = oskuCF?.DongQuan ?? 0M, + ExpiryGiftDiscount = oskuCF?.ExpiryGiftDiscount ?? 0M, + GlobalGeneralIncludeTax = oskuCF?.GlobalGeneralIncludeTax ?? 0M, + GlobalGeneralTax = oskuCF?.GlobalGeneralTax ?? 0M, + JdZhiFuYouHui = oskuCF?.JdZhiFuYouHui ?? 0M, + JingDou = oskuCF?.JingDou ?? 0M, + JingQuan = oskuCF?.JingQuan ?? 0M, + JingXiangLiJin = oskuCF?.JingXiangLiJin ?? 0M, + LiJinYouHui = oskuCF?.LiJinYouHui ?? 0M, + LuoDiPeiService = oskuCF?.LuoDiPeiService ?? 0M, + ManJian = oskuCF?.ManJian ?? 0M, + PingTaiChengDanYouHuiQuan = oskuCF?.PingTaiChengDanYouHuiQuan ?? 0M, + Plus95 = oskuCF?.Plus95 ?? 0M, + PromotionDiscount = oskuCF?.PromotionDiscount ?? 0M, + RemoteFee = oskuCF?.RemoteFee ?? 0M, + ShouldPay = oskuCF?.ShouldPay ?? 0M, + SuperRedEnvelope = oskuCF?.SuperRedEnvelope ?? 0M, + TaxFee = oskuCF?.TaxFee ?? 0M, + TuiHuanHuoWuYou = oskuCF?.TuiHuanHuoWuYou ?? 0M, + VenderFee = oskuCF?.VenderFee ?? 0M, + XianPinLeiDongQuan = oskuCF?.XianPinLeiDongQuan ?? 0M, + XianPinLeiJingQuan = oskuCF?.XianPinLeiJingQuan ?? 0M, + ZhiFuYingXiaoYouHui = oskuCF?.ZhiFuYingXiaoYouHui ?? 0M + }; + insertOrderSkuList.Add(osku); + //} + //CumulativeSkuDailySalesDetail(skuDailySalesDetailDictionary, dbOrder.StartTime.Value, shopId, skuId, wareId, jdPrice, itemTotal); + } + #endregion } - #endregion - } - else - { - //preferentialAmount = dbOrder.PreferentialAmount; - if (storageType != null && dbOrder.StorageType != storageType) - dbOrder.StorageType = storageType; + else + { + //preferentialAmount = dbOrder.PreferentialAmount; + if (storageType != null && dbOrder.StorageType != storageType) + dbOrder.StorageType = storageType; - var currentDbOrderSkuList = dbOrderSkuList.Where(osku => osku.OrderId == orderId).ToList(); + var currentDbOrderSkuList = dbOrderSkuList.Where(osku => osku.OrderId == orderId).ToList(); - var itemInfoList = orderJToken["itemInfoList"] as JArray; - foreach (var orderSkuJToken in itemInfoList) - { - //var itemTotal = orderSkuJToken.Value("itemTotal"); - //var jdPrice = orderSkuJToken.Value("jdPrice"); - var wareId = orderSkuJToken.Value("wareId"); - var skuId = orderSkuJToken.Value("skuId"); - var dbOsku = currentDbOrderSkuList.FirstOrDefault(osku => osku.SkuId == skuId); - var skuUpdateKey = $"{orderId}_{skuId}"; - if (dbOsku != null) + var itemInfoList = orderJToken["itemInfoList"] as JArray; + foreach (var orderSkuJToken in itemInfoList) { - var oskuCF = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == dbOsku.SkuId); - var isDetailChanged = dbOsku.ShouldPay == 0 && oskuCF != null && oskuCF.ShouldPay != 0; - if (dbOsku.ProductId != wareId || isDetailChanged) + //var itemTotal = orderSkuJToken.Value("itemTotal"); + //var jdPrice = orderSkuJToken.Value("jdPrice"); + var wareId = orderSkuJToken.Value("wareId"); + var skuId = orderSkuJToken.Value("skuId"); + var dbOsku = currentDbOrderSkuList.FirstOrDefault(osku => osku.SkuId == skuId); + var skuUpdateKey = $"{orderId}_{skuId}"; + if (dbOsku != null) { - var update = fsql.Update(dbOsku.Id) - .SetIf(dbOsku.ProductId != wareId, osku => osku.ProductId, wareId) - .SetIf(isDetailChanged, osku => osku.ShouldPay, oskuCF?.ShouldPay) - .SetIf(isDetailChanged, osku => osku.Balance, oskuCF?.Balance) - .SetIf(isDetailChanged, osku => osku.BaseDiscount, oskuCF?.BaseDiscount) - .SetIf(isDetailChanged, osku => osku.BaseFee, oskuCF?.BaseFee) - .SetIf(isDetailChanged, osku => osku.Coupon, oskuCF?.Coupon) - .SetIf(isDetailChanged, osku => osku.DongQuan, oskuCF?.DongQuan) - .SetIf(isDetailChanged, osku => osku.ExpiryGiftDiscount, oskuCF?.ExpiryGiftDiscount) - .SetIf(isDetailChanged, osku => osku.GlobalGeneralIncludeTax, oskuCF?.GlobalGeneralIncludeTax) - .SetIf(isDetailChanged, osku => osku.GlobalGeneralTax, oskuCF?.GlobalGeneralTax) - .SetIf(isDetailChanged, osku => osku.JdZhiFuYouHui, oskuCF?.JdZhiFuYouHui) - .SetIf(isDetailChanged, osku => osku.JingDou, oskuCF?.JingDou) - .SetIf(isDetailChanged, osku => osku.JingQuan, oskuCF?.JingQuan) - .SetIf(isDetailChanged, osku => osku.JingXiangLiJin, oskuCF?.JingXiangLiJin) - .SetIf(isDetailChanged, osku => osku.LiJinYouHui, oskuCF?.LiJinYouHui) - .SetIf(isDetailChanged, osku => osku.LuoDiPeiService, oskuCF?.LuoDiPeiService) - .SetIf(isDetailChanged, osku => osku.ManJian, oskuCF?.ManJian) - .SetIf(isDetailChanged, osku => osku.PingTaiChengDanYouHuiQuan, oskuCF?.PingTaiChengDanYouHuiQuan) - .SetIf(isDetailChanged, osku => osku.Plus95, oskuCF?.Plus95) - .SetIf(isDetailChanged, osku => osku.PromotionDiscount, oskuCF?.PromotionDiscount) - .SetIf(isDetailChanged, osku => osku.RemoteFee, oskuCF?.RemoteFee) - .SetIf(isDetailChanged, osku => osku.SuperRedEnvelope, oskuCF?.SuperRedEnvelope) - .SetIf(isDetailChanged, osku => osku.TaxFee, oskuCF?.TaxFee) - .SetIf(isDetailChanged, osku => osku.TuiHuanHuoWuYou, oskuCF?.TuiHuanHuoWuYou) - .SetIf(isDetailChanged, osku => osku.VenderFee, oskuCF?.VenderFee) - .SetIf(isDetailChanged, osku => osku.XianPinLeiDongQuan, oskuCF?.XianPinLeiDongQuan) - .SetIf(isDetailChanged, osku => osku.XianPinLeiJingQuan, oskuCF?.XianPinLeiJingQuan) - .SetIf(isDetailChanged, osku => osku.ZhiFuYingXiaoYouHui, oskuCF?.ZhiFuYingXiaoYouHui); - ; - updateOrderSkuDictionary.Add(skuUpdateKey, update); + var oskuCF = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == dbOsku.SkuId); + var isDetailChanged = dbOsku.ShouldPay == 0 && oskuCF != null && oskuCF.ShouldPay != 0; + if (dbOsku.ProductId != wareId || isDetailChanged) + { + var update = fsql.Update(dbOsku.Id) + .SetIf(dbOsku.ProductId != wareId, osku => osku.ProductId, wareId) + .SetIf(isDetailChanged, osku => osku.ShouldPay, oskuCF?.ShouldPay) + .SetIf(isDetailChanged, osku => osku.Balance, oskuCF?.Balance) + .SetIf(isDetailChanged, osku => osku.BaseDiscount, oskuCF?.BaseDiscount) + .SetIf(isDetailChanged, osku => osku.BaseFee, oskuCF?.BaseFee) + .SetIf(isDetailChanged, osku => osku.Coupon, oskuCF?.Coupon) + .SetIf(isDetailChanged, osku => osku.DongQuan, oskuCF?.DongQuan) + .SetIf(isDetailChanged, osku => osku.ExpiryGiftDiscount, oskuCF?.ExpiryGiftDiscount) + .SetIf(isDetailChanged, osku => osku.GlobalGeneralIncludeTax, oskuCF?.GlobalGeneralIncludeTax) + .SetIf(isDetailChanged, osku => osku.GlobalGeneralTax, oskuCF?.GlobalGeneralTax) + .SetIf(isDetailChanged, osku => osku.JdZhiFuYouHui, oskuCF?.JdZhiFuYouHui) + .SetIf(isDetailChanged, osku => osku.JingDou, oskuCF?.JingDou) + .SetIf(isDetailChanged, osku => osku.JingQuan, oskuCF?.JingQuan) + .SetIf(isDetailChanged, osku => osku.JingXiangLiJin, oskuCF?.JingXiangLiJin) + .SetIf(isDetailChanged, osku => osku.LiJinYouHui, oskuCF?.LiJinYouHui) + .SetIf(isDetailChanged, osku => osku.LuoDiPeiService, oskuCF?.LuoDiPeiService) + .SetIf(isDetailChanged, osku => osku.ManJian, oskuCF?.ManJian) + .SetIf(isDetailChanged, osku => osku.PingTaiChengDanYouHuiQuan, oskuCF?.PingTaiChengDanYouHuiQuan) + .SetIf(isDetailChanged, osku => osku.Plus95, oskuCF?.Plus95) + .SetIf(isDetailChanged, osku => osku.PromotionDiscount, oskuCF?.PromotionDiscount) + .SetIf(isDetailChanged, osku => osku.RemoteFee, oskuCF?.RemoteFee) + .SetIf(isDetailChanged, osku => osku.SuperRedEnvelope, oskuCF?.SuperRedEnvelope) + .SetIf(isDetailChanged, osku => osku.TaxFee, oskuCF?.TaxFee) + .SetIf(isDetailChanged, osku => osku.TuiHuanHuoWuYou, oskuCF?.TuiHuanHuoWuYou) + .SetIf(isDetailChanged, osku => osku.VenderFee, oskuCF?.VenderFee) + .SetIf(isDetailChanged, osku => osku.XianPinLeiDongQuan, oskuCF?.XianPinLeiDongQuan) + .SetIf(isDetailChanged, osku => osku.XianPinLeiJingQuan, oskuCF?.XianPinLeiJingQuan) + .SetIf(isDetailChanged, osku => osku.ZhiFuYingXiaoYouHui, oskuCF?.ZhiFuYingXiaoYouHui); + ; + updateOrderSkuDictionary.Add(skuUpdateKey, update); + } } } } - } - #endregion + #endregion - #region 收货人信息 - if (dbOrderConsigneeList.FirstOrDefault(oc => oc.OrderId == orderId) == null) - { - var orderConsignee = new OrderConsignee() + #region 收货人信息 + if (dbOrderConsigneeList.FirstOrDefault(oc => oc.OrderId == orderId) == null) { - OrderId = orderId, - City = orderJToken["consigneeInfo"].Value("city"), - Province = orderJToken["consigneeInfo"].Value("province"), - County = orderJToken["consigneeInfo"].Value("county"), - Town = orderJToken["consigneeInfo"].Value("town"), - IsDecode = false, - CreateTime = DateTime.Now - }; - insertOrderConsigneeList.Add(orderConsignee); - } - #endregion + var orderConsignee = new OrderConsignee() + { + OrderId = orderId, + City = orderJToken["consigneeInfo"].Value("city"), + Province = orderJToken["consigneeInfo"].Value("province"), + County = orderJToken["consigneeInfo"].Value("county"), + Town = orderJToken["consigneeInfo"].Value("town"), + IsDecode = false, + CreateTime = DateTime.Now + }; + insertOrderConsigneeList.Add(orderConsignee); + } + #endregion - #region 订单优惠 + #region 订单优惠 - var orderCouponJArray = (JArray)orderJToken["couponDetailList"]; - if (orderCouponJArray.HasValues) - { - foreach (var orderCouponJToken in orderCouponJArray) + var orderCouponJArray = (JArray)orderJToken["couponDetailList"]; + if (orderCouponJArray.HasValues) { - var couponType = orderCouponJToken.Value("couponType"); - if (string.IsNullOrEmpty(couponType)) - continue; - //dbOrder.PreferentialAmount += orderCouponJToken.Value("couponPrice"); - preferentialAmount += orderCouponJToken.Value("couponPrice"); - if (!dbOrderCouponList.Any(oc => oc.OrderId == orderId)) + foreach (var orderCouponJToken in orderCouponJArray) { - insertOrderCouponList.Add(new OrderCoupon() + var couponType = orderCouponJToken.Value("couponType"); + if (string.IsNullOrEmpty(couponType)) + continue; + //dbOrder.PreferentialAmount += orderCouponJToken.Value("couponPrice"); + preferentialAmount += orderCouponJToken.Value("couponPrice"); + if (!dbOrderCouponList.Any(oc => oc.OrderId == orderId)) { - Id = idGenerator.NewLong(), - SkuId = orderCouponJToken.Value("skuId"), - OrderId = orderId, - CreateTime = DateTime.Now, - CouponType = couponType, - CouponPrice = orderCouponJToken.Value("couponPrice") - }); + insertOrderCouponList.Add(new OrderCoupon() + { + Id = idGenerator.NewLong(), + SkuId = orderCouponJToken.Value("skuId"), + OrderId = orderId, + CreateTime = DateTime.Now, + CouponType = couponType, + CouponPrice = orderCouponJToken.Value("couponPrice") + }); + } } } - } - #endregion - - #region 订单状态转换 - var orderState = ConvertOrderState(orderJToken, dbOrder.StorageType); - #endregion - - #region 取消订单恢复库存 - if (orderState == Enums.OrderState.已取消 && - !isNewOrder && - dbOrder.OrderState != Enums.OrderState.已取消 && - dbOrder.StorageType != Enums.StorageType.SD && - dbOrder.StorageType != Enums.StorageType.代发) - { - var currentOrderCostDetailList = dbOrderCostDetailList.Where(ocd => ocd.OrderId == orderId); - if (currentOrderCostDetailList.Count() > 0) + #endregion + + #region 订单状态转换 + var orderState = ConvertOrderState(orderJToken, dbOrder.StorageType); + #endregion + + #region 取消订单恢复库存 + if (orderState == Enums.OrderState.已取消 && + !isNewOrder && + dbOrder.OrderState != Enums.OrderState.已取消 && + dbOrder.StorageType != Enums.StorageType.SD && + dbOrder.StorageType != Enums.StorageType.代发) { - foreach (var orderCostDetail in currentOrderCostDetailList) + var currentOrderCostDetailList = dbOrderCostDetailList.Where(ocd => ocd.OrderId == orderId); + if (currentOrderCostDetailList.Count() > 0) { - var updateSql = fsql.Update(orderCostDetail.PurchaseOrderPKId) - .Set(po => po.RemainingQuantity + orderCostDetail.DeductionQuantity); - updatePurchaseOrderList.Add(updateSql); + foreach (var orderCostDetail in currentOrderCostDetailList) + { + var updateSql = fsql.Update(orderCostDetail.PurchaseOrderPKId) + .Set(po => po.RemainingQuantity + orderCostDetail.DeductionQuantity); + updatePurchaseOrderList.Add(updateSql); + } } } - } - #endregion - - #region 扣减库存, 计算成本 - if (dbOrder.StorageType != null && - dbOrder.StorageType != Enums.StorageType.代发 && - orderState != null && - orderState != Enums.OrderState.待付款 && - orderState != Enums.OrderState.已取消) - { - var orderCost = dbOrderCostList.FirstOrDefault(oc => oc.OrderId == dbOrder.Id); - if (orderCost == null && orderSellerPrice > 0M) + #endregion + + #region 扣减库存, 计算成本 + if (dbOrder.StorageType != null && + dbOrder.StorageType != Enums.StorageType.代发 && + orderState != null && + orderState != Enums.OrderState.待付款 && + orderState != Enums.OrderState.已取消) { - if (isNewOrder && dbOrder.StorageType == Enums.StorageType.SD && sDCalculationCostRequest != null) + var orderCost = dbOrderCostList.FirstOrDefault(oc => oc.OrderId == dbOrder.Id); + if (orderCost == null && orderSellerPrice > 0M) { - //检查SD埋点 - if (sDCalculationCostRequest.PlatformCommissionRatio == 0M) - sDCalculationCostRequest.PlatformCommissionRatio = 0.05M; - orderCost = new OrderCost() + if (isNewOrder && dbOrder.StorageType == Enums.StorageType.SD && sDCalculationCostRequest != null) { - OrderId = sDCalculationCostRequest.OrderId, - PlatformCommissionRatio = sDCalculationCostRequest.PlatformCommissionRatio, - PreferentialAmount = preferentialAmount, - Profit = 0, - DeliveryExpressFreight = sDCalculationCostRequest.DeliveryExpressFreight, - CreateTime = DateTime.Now, - IsManualEdited = true, - SDCommissionAmount = sDCalculationCostRequest.SDCommissionAmount, - SDOrderAmount = sDCalculationCostRequest.SDOrderAmount - }; - orderCost.CalculationSDOrderProfitAndCost(dbOrder, null); - insertOrderCostList.Add(orderCost); - } - else if (!fsql.Select(dbOrder.Id).Any()) //再查询一次数据库,以防同步开始执行后被人为操作扣减库存,造成重复扣减库存 - { - var orderSkuJArray = orderJToken["itemInfoList"].Where(skuJToken => skuJToken.Value("jdPrice") != 0M); - if (orderSkuJArray != null && orderSkuJArray.Count() > 0) + //检查SD埋点 + if (sDCalculationCostRequest.PlatformCommissionRatio == 0M) + sDCalculationCostRequest.PlatformCommissionRatio = 0.05M; + orderCost = new OrderCost() + { + OrderId = sDCalculationCostRequest.OrderId, + PlatformCommissionRatio = sDCalculationCostRequest.PlatformCommissionRatio, + PreferentialAmount = preferentialAmount, + Profit = 0, + DeliveryExpressFreight = sDCalculationCostRequest.DeliveryExpressFreight, + CreateTime = DateTime.Now, + IsManualEdited = true, + SDCommissionAmount = sDCalculationCostRequest.SDCommissionAmount, + SDOrderAmount = sDCalculationCostRequest.SDOrderAmount + }; + orderCost.CalculationSDOrderProfitAndCost(dbOrder, null); + insertOrderCostList.Add(orderCost); + } + else if (!fsql.Select(dbOrder.Id).Any()) //再查询一次数据库,以防同步开始执行后被人为操作扣减库存,造成重复扣减库存 { - var orderCostPurchaseAmount = 0M; - var orderDeliveryExpressFreight = 0M; //发货总运费,sku购买数量第二个开始半价 + var orderSkuJArray = orderJToken["itemInfoList"].Where(skuJToken => skuJToken.Value("jdPrice") != 0M); + if (orderSkuJArray != null && orderSkuJArray.Count() > 0) + { + var orderCostPurchaseAmount = 0M; + var orderDeliveryExpressFreight = 0M; //发货总运费,sku购买数量第二个开始半价 - var avgPreferential = preferentialAmount / orderSkuJArray.Count(); + var avgPreferential = preferentialAmount / orderSkuJArray.Count(); - #region 扣减库存 - foreach (var orderSkuJToken in orderSkuJArray) - { - var orderSkuId = orderSkuJToken.Value("skuId"); - var itemTotal = orderSkuJToken.Value("itemTotal"); //sku购买数量 - decimal? skuShouldPay = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.ShouldPay; - if (skuShouldPay == null) - skuShouldPay = insertOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.ShouldPay; - if (skuShouldPay == null) - skuShouldPay = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.ShouldPay; - - //var itemPrice = orderSkuJToken.Value("jdPrice"); //sku单价 - var isReduceMultiTimes = false; //是否多次扣减库存 - while (itemTotal != 0) + #region 扣减库存 + foreach (var orderSkuJToken in orderSkuJArray) { - var purchaseOrder = dbPurchaseOrderList.FirstOrDefault(po => po.StorageType == dbOrder.StorageType && - po.RemainingQuantity != 0 && - po.SkuId == orderSkuId); - if (purchaseOrder == null) - break; //没有库存了 - - //本次扣减量 - var deductionQuantity = purchaseOrder.RemainingQuantity >= itemTotal ? itemTotal : purchaseOrder.RemainingQuantity; - //var deductionQuantity = itemTotal; - //本次扣减量的采购成本 - var currentPurchaseAmount = purchaseOrder.UnitCost * deductionQuantity; - //本次扣减量的发货运费 - var currentSkuDeliveryFreight = isReduceMultiTimes ? - (purchaseOrder.SingleDeliveryFreight / 2 * deductionQuantity) : - (purchaseOrder.SingleDeliveryFreight + purchaseOrder.SingleDeliveryFreight / 2 * (deductionQuantity - 1)); - - purchaseOrder.RemainingQuantity -= deductionQuantity; - itemTotal -= deductionQuantity; - - //累计采购成本 - orderCostPurchaseAmount += currentPurchaseAmount; - //累计发货运费(销售运费) - orderDeliveryExpressFreight += currentSkuDeliveryFreight; - isReduceMultiTimes = true; - - var updateSql = fsql.Update(purchaseOrder.Id).Set(po => po.RemainingQuantity - deductionQuantity); - updatePurchaseOrderList.Add(updateSql); - - var orderCostDetail = new OrderCostDetail() + var orderSkuId = orderSkuJToken.Value("skuId"); + var itemTotal = orderSkuJToken.Value("itemTotal"); //sku购买数量 + decimal? skuShouldPay = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.ShouldPay; + if (skuShouldPay == null) + skuShouldPay = insertOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.ShouldPay; + if (skuShouldPay == null) + skuShouldPay = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.ShouldPay; + + //var itemPrice = orderSkuJToken.Value("jdPrice"); //sku单价 + var isReduceMultiTimes = false; //是否多次扣减库存 + while (itemTotal != 0) { - Id = idGenerator.NewLong(), - OrderId = orderId, - ProductId = orderSkuJToken.Value("wareId"), - SkuId = orderSkuId, - CreateTime = DateTime.Now, - PurchaseOrderPKId = purchaseOrder.Id, - //UnitCost = purchaseOrder.UnitCost, - DeductionQuantity = deductionQuantity, - DeliveryExpressFreight = currentSkuDeliveryFreight, - //TotalCost = currentPurchaseAmount, - ConsumableAmount = purchaseOrder.SingleConsumableAmount * deductionQuantity, - FirstFreight = purchaseOrder.SingleFirstFreight * deductionQuantity, - //OperationAmount = purchaseOrder.SingleOperationAmount * deductionQuantity, - InStorageAmount = purchaseOrder.SingleInStorageAmount * deductionQuantity, - OutStorageAmount = purchaseOrder.SingleOutStorageAmount * deductionQuantity, - PurchaseFreight = purchaseOrder.SingleFreight * deductionQuantity, - SkuAmount = purchaseOrder.SingleSkuAmount * deductionQuantity, - StorageAmount = purchaseOrder.SingleStorageAmount * deductionQuantity, - IsEnabled = true - }; - - //orderCostDetail.SkuGrossProfit = itemPrice * deductionQuantity - avgPreferential - - // (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - - // itemPrice * deductionQuantity * platformCommissionRatio; - orderCostDetail.SkuGrossProfit = (skuShouldPay ?? 0M) - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; - insertOrderCostDetailList.Add(orderCostDetail); + var purchaseOrder = dbPurchaseOrderList.FirstOrDefault(po => po.StorageType == dbOrder.StorageType && + po.RemainingQuantity != 0 && + po.SkuId == orderSkuId); + if (purchaseOrder == null) + break; //没有库存了 + + //本次扣减量 + var deductionQuantity = purchaseOrder.RemainingQuantity >= itemTotal ? itemTotal : purchaseOrder.RemainingQuantity; + //var deductionQuantity = itemTotal; + //本次扣减量的采购成本 + var currentPurchaseAmount = purchaseOrder.UnitCost * deductionQuantity; + //本次扣减量的发货运费 + var currentSkuDeliveryFreight = isReduceMultiTimes ? + (purchaseOrder.SingleDeliveryFreight / 2 * deductionQuantity) : + (purchaseOrder.SingleDeliveryFreight + purchaseOrder.SingleDeliveryFreight / 2 * (deductionQuantity - 1)); + + purchaseOrder.RemainingQuantity -= deductionQuantity; + itemTotal -= deductionQuantity; + + //累计采购成本 + orderCostPurchaseAmount += currentPurchaseAmount; + //累计发货运费(销售运费) + orderDeliveryExpressFreight += currentSkuDeliveryFreight; + isReduceMultiTimes = true; + + var updateSql = fsql.Update(purchaseOrder.Id).Set(po => po.RemainingQuantity - deductionQuantity); + updatePurchaseOrderList.Add(updateSql); + + var orderCostDetail = new OrderCostDetail() + { + Id = idGenerator.NewLong(), + OrderId = orderId, + ProductId = orderSkuJToken.Value("wareId"), + SkuId = orderSkuId, + CreateTime = DateTime.Now, + PurchaseOrderPKId = purchaseOrder.Id, + //UnitCost = purchaseOrder.UnitCost, + DeductionQuantity = deductionQuantity, + DeliveryExpressFreight = currentSkuDeliveryFreight, + //TotalCost = currentPurchaseAmount, + ConsumableAmount = purchaseOrder.SingleConsumableAmount * deductionQuantity, + FirstFreight = purchaseOrder.SingleFirstFreight * deductionQuantity, + //OperationAmount = purchaseOrder.SingleOperationAmount * deductionQuantity, + InStorageAmount = purchaseOrder.SingleInStorageAmount * deductionQuantity, + OutStorageAmount = purchaseOrder.SingleOutStorageAmount * deductionQuantity, + PurchaseFreight = purchaseOrder.SingleFreight * deductionQuantity, + SkuAmount = purchaseOrder.SingleSkuAmount * deductionQuantity, + StorageAmount = purchaseOrder.SingleStorageAmount * deductionQuantity, + IsEnabled = true + }; + + //orderCostDetail.SkuGrossProfit = itemPrice * deductionQuantity - avgPreferential - + // (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - + // itemPrice * deductionQuantity * platformCommissionRatio; + orderCostDetail.SkuGrossProfit = (skuShouldPay ?? 0M) - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; + insertOrderCostDetailList.Add(orderCostDetail); + } } - } - #endregion + #endregion - #region 计算成本 - orderCost = new OrderCost() - { - OrderId = orderId, - PlatformCommissionRatio = platformCommissionRatio, - PreferentialAmount = preferentialAmount, - Profit = 0, - PurchaseAmount = orderCostPurchaseAmount, - DeliveryExpressFreight = orderDeliveryExpressFreight, - CreateTime = DateTime.Now - }; - if (dbOrder.OrderTotalPrice != 0) - orderCost.CalculationOrderProfitAndCost(dbOrder, null); - else - orderCost.CalculationOrderProfitAndCost(orderSellerPrice, freightPrice, null); - - insertOrderCostList.Add(orderCost); - #endregion + #region 计算成本 + orderCost = new OrderCost() + { + OrderId = orderId, + PlatformCommissionRatio = platformCommissionRatio, + PreferentialAmount = preferentialAmount, + Profit = 0, + PurchaseAmount = orderCostPurchaseAmount, + DeliveryExpressFreight = orderDeliveryExpressFreight, + CreateTime = DateTime.Now + }; + if (dbOrder.OrderTotalPrice != 0) + orderCost.CalculationOrderProfitAndCost(dbOrder, null); + else + orderCost.CalculationOrderProfitAndCost(orderSellerPrice, freightPrice, null); + + insertOrderCostList.Add(orderCost); + #endregion + } } } } - } - #endregion + #endregion - #region 检查订单信息是否变化 - if (isNewOrder) - { - dbOrder.OrderState = orderState; - dbOrder.PreferentialAmount = preferentialAmount; - } - else if ((orderState != null && orderState != dbOrder.OrderState) || - buyerRemark != dbOrder.BuyerRemark || - venderRemark != dbOrder.VenderRemark || - modifyTime != dbOrder.ModifyTime || - endTime != dbOrder.EndTime || - waybillNo != dbOrder.WaybillNo || - freightPrice != dbOrder.FreightPrice || - orderPayment != dbOrder.OrderPayment || - sellerPreferentialAmount != dbOrder.SellerPreferentialAmount || - orderSellerPrice != dbOrder.OrderSellerPrice || - (orderSellerPrice > 0M && dbOrder.IsGift) || - orderTotalPrice != dbOrder.OrderTotalPrice || - storeOrder != dbOrder.StoreOrder || - preferentialAmount != dbOrder.PreferentialAmount || - storeId != dbOrder.StoreId) - { - var updateSql = fsql.Update(orderId).SetIf(orderState != null && orderState != dbOrder.OrderState, o => o.OrderState, orderState) - .SetIf(buyerRemark != dbOrder.BuyerRemark, o => o.BuyerRemark, buyerRemark) - .SetIf(venderRemark != dbOrder.VenderRemark, o => o.VenderRemark, venderRemark) - .SetIf(modifyTime != dbOrder.ModifyTime, o => o.ModifyTime, modifyTime) - .SetIf(endTime != dbOrder.EndTime, o => o.EndTime, modifyTime) - .SetIf(waybillNo != dbOrder.WaybillNo, o => o.WaybillNo, waybillNo) - .SetIf(freightPrice != dbOrder.FreightPrice, o => o.FreightPrice, freightPrice) - .SetIf(orderPayment != dbOrder.OrderPayment, o => o.OrderPayment, orderPayment) - .SetIf(sellerPreferentialAmount != dbOrder.SellerPreferentialAmount, o => o.SellerPreferentialAmount, sellerPreferentialAmount) - .SetIf(orderSellerPrice != dbOrder.OrderSellerPrice, o => o.OrderSellerPrice, orderSellerPrice) - .SetIf(orderTotalPrice != dbOrder.OrderTotalPrice, o => o.OrderTotalPrice, orderTotalPrice) - .SetIf(orderSellerPrice > 0M && dbOrder.IsGift == true, o => o.IsGift, false) - .SetIf(storeOrder != dbOrder.StoreOrder, o => o.StoreOrder, storeOrder) - .SetIf(storeOrder != dbOrder.StoreOrder, o => o.StorageType, storageType) - .SetIf(preferentialAmount != dbOrder.PreferentialAmount, o => o.PreferentialAmount, preferentialAmount) - .SetIf(storeId != dbOrder.StoreId, o => o.StoreId, storeId); - updateOrderList.Add(updateSql); - } - #endregion + #region 检查订单信息是否变化 + if (isNewOrder) + { + dbOrder.OrderState = orderState; + dbOrder.PreferentialAmount = preferentialAmount; + } + else if ((orderState != null && orderState != dbOrder.OrderState) || + buyerRemark != dbOrder.BuyerRemark || + venderRemark != dbOrder.VenderRemark || + modifyTime != dbOrder.ModifyTime || + endTime != dbOrder.EndTime || + waybillNo != dbOrder.WaybillNo || + freightPrice != dbOrder.FreightPrice || + orderPayment != dbOrder.OrderPayment || + sellerPreferentialAmount != dbOrder.SellerPreferentialAmount || + orderSellerPrice != dbOrder.OrderSellerPrice || + (orderSellerPrice > 0M && dbOrder.IsGift) || + orderTotalPrice != dbOrder.OrderTotalPrice || + storeOrder != dbOrder.StoreOrder || + preferentialAmount != dbOrder.PreferentialAmount || + storeId != dbOrder.StoreId) + { + var updateSql = fsql.Update(orderId).SetIf(orderState != null && orderState != dbOrder.OrderState, o => o.OrderState, orderState) + .SetIf(buyerRemark != dbOrder.BuyerRemark, o => o.BuyerRemark, buyerRemark) + .SetIf(venderRemark != dbOrder.VenderRemark, o => o.VenderRemark, venderRemark) + .SetIf(modifyTime != dbOrder.ModifyTime, o => o.ModifyTime, modifyTime) + .SetIf(endTime != dbOrder.EndTime, o => o.EndTime, modifyTime) + .SetIf(waybillNo != dbOrder.WaybillNo, o => o.WaybillNo, waybillNo) + .SetIf(freightPrice != dbOrder.FreightPrice, o => o.FreightPrice, freightPrice) + .SetIf(orderPayment != dbOrder.OrderPayment, o => o.OrderPayment, orderPayment) + .SetIf(sellerPreferentialAmount != dbOrder.SellerPreferentialAmount, o => o.SellerPreferentialAmount, sellerPreferentialAmount) + .SetIf(orderSellerPrice != dbOrder.OrderSellerPrice, o => o.OrderSellerPrice, orderSellerPrice) + .SetIf(orderTotalPrice != dbOrder.OrderTotalPrice, o => o.OrderTotalPrice, orderTotalPrice) + .SetIf(orderSellerPrice > 0M && dbOrder.IsGift == true, o => o.IsGift, false) + .SetIf(storeOrder != dbOrder.StoreOrder, o => o.StoreOrder, storeOrder) + .SetIf(storeOrder != dbOrder.StoreOrder, o => o.StorageType, storageType) + .SetIf(preferentialAmount != dbOrder.PreferentialAmount, o => o.PreferentialAmount, preferentialAmount) + .SetIf(storeId != dbOrder.StoreId, o => o.StoreId, storeId); + updateOrderList.Add(updateSql); + } + #endregion - #region 删除SD埋点 - try + #region 删除SD埋点 + try + { + if (sDCalculationCostRequest != null) + memoryCache.Remove(orderId); + } + catch { } + #endregion + } + catch (Exception ex) { - if (sDCalculationCostRequest != null) - memoryCache.Remove(orderId); + nLogManager.Default().Error(ex, $"SyncOrder OrderLevel Error, OrderId:{orderId}, ShopId:{shopId}"); } - catch { } - #endregion } #region 补齐sku logo @@ -930,7 +941,7 @@ namespace BBWY.Server.Business fsql.Insert(insertOrderSkuList).ExecuteAffrows(); if (insertOrderConsigneeList.Count() > 0) fsql.Insert(insertOrderConsigneeList).ExecuteAffrows(); - if (insertOrderCostList.Count() > 0) + if (insertOrderCostList.Count() > 0) fsql.Insert(insertOrderCostList).ExecuteAffrows(); if (insertOrderCostDetailList.Count() > 0) fsql.Insert(insertOrderCostDetailList).ExecuteAffrows(); From ff9d23e3b542c2b04a88d7a73372d6bc4d5189e8 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 12 Nov 2023 17:23:12 +0800 Subject: [PATCH 07/19] 1 --- BBWY.Server.API/Controllers/TestController.cs | 8 +- BBWY.Server.Business/Order/OrderBusiness.cs | 9 +- .../PurchaseOrder/PurchaseOrderBusiness.cs | 2 +- .../Sync/OrderSyncBusiness.cs | 13 ++- BBWY.Server.Business/TestBusiness.cs | 94 ++++++++++++++++++- .../Test/RepairSkuDetailAndSkuGriooProfit.cs | 13 +++ 6 files changed, 123 insertions(+), 16 deletions(-) create mode 100644 BBWY.Server.Model/Dto/Request/Test/RepairSkuDetailAndSkuGriooProfit.cs diff --git a/BBWY.Server.API/Controllers/TestController.cs b/BBWY.Server.API/Controllers/TestController.cs index 6a5d2d0c..894d4245 100644 --- a/BBWY.Server.API/Controllers/TestController.cs +++ b/BBWY.Server.API/Controllers/TestController.cs @@ -22,12 +22,6 @@ namespace BBWY.Server.API.Controllers { testBusiness.StatisticsProduct(); - } - - [HttpPost] - public void XiuFu() - { - testBusiness.XiuFu(); - } + } } } diff --git a/BBWY.Server.Business/Order/OrderBusiness.cs b/BBWY.Server.Business/Order/OrderBusiness.cs index 114d44bf..edd66f35 100644 --- a/BBWY.Server.Business/Order/OrderBusiness.cs +++ b/BBWY.Server.Business/Order/OrderBusiness.cs @@ -593,7 +593,7 @@ namespace BBWY.Server.Business StorageAmount = purchaseOrder.SingleStorageAmount * deductionQuantity }; //orderCostDetail.SkuGrossProfit = orderSku.Price.Value * deductionQuantity - avgPreferential - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - orderSku.Price.Value * deductionQuantity * autoCalculationCostRequest.PlatformCommissionRatio; - orderCostDetail.SkuGrossProfit = (orderSku.ShouldPay ?? 0M) - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; + orderCostDetail.SkuGrossProfit = ((orderSku.ShouldPay ?? 0M) + (orderSku.Coupon ?? 0M)) * deductionQuantity - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; insertOrderCostDetailList.Add(orderCostDetail); } } @@ -662,7 +662,8 @@ namespace BBWY.Server.Business osku.SkuId, osku.Price, osku.ItemTotal, - osku.ShouldPay + osku.ShouldPay, + osku.Coupon }); var avgPreferential = dbOrder.PreferentialAmount / orderSkuList.Count(); @@ -687,7 +688,7 @@ namespace BBWY.Server.Business //orderCostDetail.SkuGrossProfit = osku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential - // (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - // osku.Price.Value * orderCostDetail.DeductionQuantity * manualCalculationCostRequest.PlatformCommissionRatio; - orderCostDetail.SkuGrossProfit = (osku.ShouldPay ?? 0M) - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; + orderCostDetail.SkuGrossProfit = ((osku.ShouldPay ?? 0M) + (osku.Coupon ?? 0M)) * orderCostDetail.DeductionQuantity - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; } } @@ -946,7 +947,7 @@ namespace BBWY.Server.Business //orderCostDetail.SkuGrossProfit = dbOrderSku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential - // (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - // dbOrderSku.Price.Value * orderCostDetail.DeductionQuantity * relationPurchaseOrderRequestV2.PlatformCommissionRatio; - orderCostDetail.SkuGrossProfit = (dbOrderSku.ShouldPay ?? 0M) - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; + orderCostDetail.SkuGrossProfit = ((dbOrderSku.ShouldPay ?? 0M) + dbOrderSku.Coupon ?? 0M) * orderCostDetail.DeductionQuantity - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; } #endregion } diff --git a/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 85734250..dd62b483 100644 --- a/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -265,7 +265,7 @@ namespace BBWY.Server.Business }; //orderCostDetail.SkuGrossProfit = orderSku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - orderSku.Price.Value * orderCostDetail.DeductionQuantity * createOnlinePurchaseOrderRequest.PlatformCommissionRatio; - orderCostDetail.SkuGrossProfit = (orderSku.ShouldPay ?? 0M) - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; + orderCostDetail.SkuGrossProfit = ((orderSku.ShouldPay ?? 0M) + orderSku.Coupon ?? 0M) * orderCostDetail.DeductionQuantity - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; insertOrderCostDetails.Add(orderCostDetail); #endregion diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 08f79260..75132231 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -98,7 +98,7 @@ namespace BBWY.Server.Business } - private void SyncOrder(ShopResponse shop, string orderId, DateTime? startTime = null, DateTime? endTime = null, bool isAuto = false, Enums.SortTimeType? sortTimeType = null) + public void SyncOrder(ShopResponse shop, string orderId, DateTime? startTime = null, DateTime? endTime = null, bool isAuto = false, Enums.SortTimeType? sortTimeType = null) { try { @@ -576,7 +576,7 @@ namespace BBWY.Server.Business if (dbOsku != null) { var oskuCF = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == dbOsku.SkuId); - var isDetailChanged = dbOsku.ShouldPay == 0 && oskuCF != null && oskuCF.ShouldPay != 0; + var isDetailChanged = (dbOsku.ShouldPay == 0 || dbOsku.ShouldPay == null) && oskuCF != null && oskuCF.ShouldPay != 0; if (dbOsku.ProductId != wareId || isDetailChanged) { var update = fsql.Update(dbOsku.Id) @@ -730,12 +730,19 @@ namespace BBWY.Server.Business { var orderSkuId = orderSkuJToken.Value("skuId"); var itemTotal = orderSkuJToken.Value("itemTotal"); //sku购买数量 + decimal? skuShouldPay = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.ShouldPay; if (skuShouldPay == null) skuShouldPay = insertOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.ShouldPay; if (skuShouldPay == null) skuShouldPay = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.ShouldPay; + decimal? coupon = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.Coupon; + if (coupon == null) + coupon = insertOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.Coupon; + if (coupon == null) + coupon = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.Coupon; + //var itemPrice = orderSkuJToken.Value("jdPrice"); //sku单价 var isReduceMultiTimes = false; //是否多次扣减库存 while (itemTotal != 0) @@ -794,7 +801,7 @@ namespace BBWY.Server.Business //orderCostDetail.SkuGrossProfit = itemPrice * deductionQuantity - avgPreferential - // (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - // itemPrice * deductionQuantity * platformCommissionRatio; - orderCostDetail.SkuGrossProfit = (skuShouldPay ?? 0M) - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; + orderCostDetail.SkuGrossProfit = ((skuShouldPay ?? 0M) + (coupon ?? 0M)) * deductionQuantity - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; insertOrderCostDetailList.Add(orderCostDetail); } } diff --git a/BBWY.Server.Business/TestBusiness.cs b/BBWY.Server.Business/TestBusiness.cs index c4398cee..1dc98590 100644 --- a/BBWY.Server.Business/TestBusiness.cs +++ b/BBWY.Server.Business/TestBusiness.cs @@ -3,12 +3,14 @@ using BBWY.Common.Models; using BBWY.Server.Model; using BBWY.Server.Model.Db; using BBWY.Server.Model.Db.Mds; +using BBWY.Server.Model.Dto; using FreeSql; using Microsoft.Extensions.Options; using System; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Threading; namespace BBWY.Server.Business { @@ -17,14 +19,19 @@ namespace BBWY.Server.Business private FreeSqlMultiDBManager freeSqlMultiDBManager; private VenderBusiness venderBusiness; private IFreeSql fsql; + private OrderSyncBusiness orderSyncBusiness; public TestBusiness(RestApiService restApiService, IOptions options, FreeSqlMultiDBManager freeSqlMultiDBManager, - VenderBusiness venderBusiness, YunDingBusiness yunDingBusiness, IFreeSql fsql) : base(restApiService, options, yunDingBusiness) + VenderBusiness venderBusiness, + YunDingBusiness yunDingBusiness, + IFreeSql fsql, + OrderSyncBusiness orderSyncBusiness) : base(restApiService, options, yunDingBusiness) { this.freeSqlMultiDBManager = freeSqlMultiDBManager; this.venderBusiness = venderBusiness; this.fsql = fsql; + this.orderSyncBusiness = orderSyncBusiness; } public void SyncVenderId() @@ -129,6 +136,91 @@ namespace BBWY.Server.Business } Console.WriteLine("更新完毕"); } + + public void RepairSkuDetailAndSkuGriooProfit(RepairSkuDetailAndSkuGriooProfit request) + { + request.EndTime = request.EndTime.Date.AddDays(1).AddSeconds(-1); + var banedList = new List() + { + "森王汽车用品专营店", + "森王玩具专营店", + "广发玩具专营店", + "广发汽车用品专营店", + "言义汽车用品专营店", + "杰博玩具专营店", + "安吉玩具专营店", + "布莱特玩具专营店", + "畅阳汽车用品专营店", + "熊猴汽车用品专营店", + "布莱特汽车用品专营店", + "越驭玩具专营店", + "言义玩具专营店", + "瑞源汽车用品专营店", + "熊猴玩具专营店", + "奥德汽车用品专营店", + "创天户外专营店", + "桑妮玩具专营店", + "瑞源玩具专营店" + }; + var shopList = venderBusiness.GetShopList(request.ShopId, Enums.Platform.京东); + var shopIndex = 0; + + foreach (var shop in shopList) + { + shopIndex++; + Console.WriteLine($"shopProgress {shopIndex}/{shopList.Count()}"); + var shopId = long.Parse(shop.ShopId); + if (banedList.Contains(shop.ShopName)) + continue; + var orderIdList = fsql.Select() + .Where(o => o.ShopId == shopId && + o.OrderState != Enums.OrderState.已取消 && + o.StorageType != Enums.StorageType.SD && + o.StartTime >= request.StartTime && + o.StartTime <= request.EndTime && + !fsql.Select().Where(ot => ot.Id == o.Id).Any()) + .ToList(o => o.Id); + foreach (var orderId in orderIdList) + { + orderSyncBusiness.SyncOrder(shop, orderId); + Thread.Sleep(500); + } + + var orderList = fsql.Select(orderIdList).ToList(); + var orderSkuList = fsql.Select().Where(osku => osku.Price > 0 && orderIdList.Contains(osku.OrderId)).ToList(); + var orderCostDetailList = fsql.Select().Where(ocd => orderIdList.Contains(ocd.OrderId) && ocd.IsEnabled == true).ToList(); + + var orderIndex = 0; + foreach (var order in orderList) + { + orderIndex++; + Console.WriteLine($"shopProgress {shopIndex}/{shopList.Count()}, orderProgress {orderIndex}/{orderList.Count()}"); + + var currentOrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == order.Id).ToList(); + + if (currentOrderCostDetailList.Count() > 0) + { + List> updateOrderCostDetailList = new List>(); + var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList(); + foreach (var orderSku in currentOrderSkuList) + { + var ocd = currentOrderCostDetailList.FirstOrDefault(x => x.SkuId == orderSku.SkuId); + ocd.SkuGrossProfit = ((orderSku.ShouldPay ?? 0M) + (orderSku.Coupon ?? 0M)) * ocd.DeductionQuantity - ocd.TotalCost - ocd.DeliveryExpressFreight; + var update = fsql.Update(ocd.Id).Set(x => x.SkuGrossProfit, ocd.SkuGrossProfit); + updateOrderCostDetailList.Add(update); + } + if (updateOrderCostDetailList.Count() > 0) + { + fsql.Transaction(() => + { + foreach (var update in updateOrderCostDetailList) + update.ExecuteAffrows(); + }); + } + } + } + } + } } public class JPCount diff --git a/BBWY.Server.Model/Dto/Request/Test/RepairSkuDetailAndSkuGriooProfit.cs b/BBWY.Server.Model/Dto/Request/Test/RepairSkuDetailAndSkuGriooProfit.cs new file mode 100644 index 00000000..4f09dea5 --- /dev/null +++ b/BBWY.Server.Model/Dto/Request/Test/RepairSkuDetailAndSkuGriooProfit.cs @@ -0,0 +1,13 @@ +using System; + +namespace BBWY.Server.Model.Dto +{ + public class RepairSkuDetailAndSkuGriooProfit + { + public DateTime StartTime { get; set; } + + public DateTime EndTime { get; set; } + + public long? ShopId { get; set; } + } +} From 05d9db3721911f6656b640ffd82b320fb23d9692 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 13 Nov 2023 00:31:17 +0800 Subject: [PATCH 08/19] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=AF=9B=E5=88=A9=E8=AE=A1=E7=AE=97=E5=85=AC=E5=BC=8F=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=8C=E8=AE=A2=E5=8D=95=E6=AF=9B=E5=88=A9=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E5=85=AC=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extensions/OrderCostExtension.cs | 44 ++++++++- BBWY.Server.Business/Order/OrderBusiness.cs | 33 ++++++- .../PurchaseOrder/PurchaseOrderBusiness.cs | 8 +- .../Sync/OrderSyncBusiness.cs | 94 +++++++++++-------- 4 files changed, 129 insertions(+), 50 deletions(-) diff --git a/BBWY.Server.Business/Extensions/OrderCostExtension.cs b/BBWY.Server.Business/Extensions/OrderCostExtension.cs index 56fb2b72..67ac590e 100644 --- a/BBWY.Server.Business/Extensions/OrderCostExtension.cs +++ b/BBWY.Server.Business/Extensions/OrderCostExtension.cs @@ -13,26 +13,45 @@ namespace BBWY.Server.Business.Extensions orderCost.RefundPurchaseAmount = afterSaleOrders == null || afterSaleOrders.Count == 0M ? 0M : afterSaleOrders.Sum(aso => aso.RefundPurchaseAmount ?? 0); //退款之后平台扣点 - orderCost.PlatformCommissionAmount = (order.OrderSellerPrice - orderCost.RefundAmount) * (orderCost.PlatformCommissionRatio); + orderCost.PlatformCommissionAmount = (order.OrderPayment - order.FreightPrice - orderCost.RefundAmount) * (orderCost.PlatformCommissionRatio); + + //orderCost.Profit = order.OrderSellerPrice + order.FreightPrice - orderCost.RefundAmount - + // orderCost.PurchaseAmount - + // orderCost.DeliveryExpressFreight - + // orderCost.PlatformCommissionAmount - + // orderCost.AfterTotalCost + + // orderCost.RefundPurchaseAmount; - orderCost.Profit = order.OrderSellerPrice + order.FreightPrice - orderCost.RefundAmount - + orderCost.Profit = order.OrderPayment + + order.PreferentialAmount - + orderCost.RefundAmount - orderCost.PurchaseAmount - orderCost.DeliveryExpressFreight - orderCost.PlatformCommissionAmount - orderCost.AfterTotalCost + orderCost.RefundPurchaseAmount; + } - public static void CalculationOrderProfitAndCost(this OrderCost orderCost, decimal orderSellerPrice,decimal freightPrice, IList afterSaleOrders) + public static void CalculationOrderProfitAndCost(this OrderCost orderCost, decimal orderPayment, decimal preferentialAmount, decimal freightPrice, IList afterSaleOrders) { orderCost.AfterTotalCost = afterSaleOrders == null || afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.AfterTotalCost); orderCost.RefundAmount = afterSaleOrders == null || afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.RefundAmount ?? 0M); orderCost.RefundPurchaseAmount = afterSaleOrders == null || afterSaleOrders.Count == 0M ? 0M : afterSaleOrders.Sum(aso => aso.RefundPurchaseAmount ?? 0); //退款之后平台扣点 - orderCost.PlatformCommissionAmount = (orderSellerPrice - orderCost.RefundAmount) * (orderCost.PlatformCommissionRatio); + orderCost.PlatformCommissionAmount = (orderPayment - freightPrice - orderCost.RefundAmount) * (orderCost.PlatformCommissionRatio); + + //orderCost.Profit = orderSellerPrice + freightPrice - orderCost.RefundAmount - + // orderCost.PurchaseAmount - + // orderCost.DeliveryExpressFreight - + // orderCost.PlatformCommissionAmount - + // orderCost.AfterTotalCost + + // orderCost.RefundPurchaseAmount; - orderCost.Profit = orderSellerPrice + freightPrice - orderCost.RefundAmount - + orderCost.Profit = orderPayment + + preferentialAmount - + orderCost.RefundAmount - orderCost.PurchaseAmount - orderCost.DeliveryExpressFreight - orderCost.PlatformCommissionAmount - @@ -52,5 +71,20 @@ namespace BBWY.Server.Business.Extensions orderCost.PlatformCommissionAmount = (order.OrderSellerPrice - orderCost.RefundAmount) * (orderCost.PlatformCommissionRatio); orderCost.Profit = (orderCost.SDCommissionAmount + orderCost.SDOrderAmount + orderCost.DeliveryExpressFreight + orderCost.PlatformCommissionAmount + orderCost.AfterTotalCost) * -1; } + + /// + /// 计算SKU毛利 + /// + /// + /// + /// + /// + /// + public static void CalculationSkuGrossProfit(this OrderCostDetail ocd, decimal skuShouldPay, decimal skuPingtaibutie, decimal skuVenderFee, decimal platformCommissionRatio) + { + var koudian = (skuShouldPay - skuVenderFee) * ocd.DeductionQuantity * platformCommissionRatio; + ocd.SkuGrossProfit = (skuShouldPay + skuPingtaibutie) * ocd.DeductionQuantity - + ocd.TotalCost - ocd.DeliveryExpressFreight - koudian; + } } } diff --git a/BBWY.Server.Business/Order/OrderBusiness.cs b/BBWY.Server.Business/Order/OrderBusiness.cs index edd66f35..ef2e1597 100644 --- a/BBWY.Server.Business/Order/OrderBusiness.cs +++ b/BBWY.Server.Business/Order/OrderBusiness.cs @@ -593,7 +593,21 @@ namespace BBWY.Server.Business StorageAmount = purchaseOrder.SingleStorageAmount * deductionQuantity }; //orderCostDetail.SkuGrossProfit = orderSku.Price.Value * deductionQuantity - avgPreferential - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - orderSku.Price.Value * deductionQuantity * autoCalculationCostRequest.PlatformCommissionRatio; - orderCostDetail.SkuGrossProfit = ((orderSku.ShouldPay ?? 0M) + (orderSku.Coupon ?? 0M)) * deductionQuantity - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; + + + //var shouldPay = orderSku.ShouldPay ?? 0M; + //var pingTaiCoupon = orderSku.PingTaiChengDanYouHuiQuan ?? 0M; + //var venderFee = orderSku.VenderFee ?? 0M; + + //var koudian = (shouldPay - venderFee) * deductionQuantity * autoCalculationCostRequest.PlatformCommissionRatio; + //orderCostDetail.SkuGrossProfit = (shouldPay + pingTaiCoupon) * deductionQuantity - + // orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight - + // koudian; + orderCostDetail.CalculationSkuGrossProfit(orderSku.ShouldPay ?? 0M, + orderSku.PingTaiChengDanYouHuiQuan ?? 0M, + orderSku.VenderFee ?? 0M, + autoCalculationCostRequest.PlatformCommissionRatio); + insertOrderCostDetailList.Add(orderCostDetail); } } @@ -663,7 +677,8 @@ namespace BBWY.Server.Business osku.Price, osku.ItemTotal, osku.ShouldPay, - osku.Coupon + osku.PingTaiChengDanYouHuiQuan, + osku.VenderFee }); var avgPreferential = dbOrder.PreferentialAmount / orderSkuList.Count(); @@ -688,7 +703,13 @@ namespace BBWY.Server.Business //orderCostDetail.SkuGrossProfit = osku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential - // (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - // osku.Price.Value * orderCostDetail.DeductionQuantity * manualCalculationCostRequest.PlatformCommissionRatio; - orderCostDetail.SkuGrossProfit = ((osku.ShouldPay ?? 0M) + (osku.Coupon ?? 0M)) * orderCostDetail.DeductionQuantity - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; + + //orderCostDetail.SkuGrossProfit = ((osku.ShouldPay ?? 0M) + (osku.Coupon ?? 0M)) * orderCostDetail.DeductionQuantity - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; + + orderCostDetail.CalculationSkuGrossProfit(osku.ShouldPay ?? 0M, + osku.PingTaiChengDanYouHuiQuan ?? 0M, + osku.VenderFee ?? 0M, + manualCalculationCostRequest.PlatformCommissionRatio); } } @@ -947,7 +968,11 @@ namespace BBWY.Server.Business //orderCostDetail.SkuGrossProfit = dbOrderSku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential - // (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - // dbOrderSku.Price.Value * orderCostDetail.DeductionQuantity * relationPurchaseOrderRequestV2.PlatformCommissionRatio; - orderCostDetail.SkuGrossProfit = ((dbOrderSku.ShouldPay ?? 0M) + dbOrderSku.Coupon ?? 0M) * orderCostDetail.DeductionQuantity - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; + //orderCostDetail.SkuGrossProfit = ((dbOrderSku.ShouldPay ?? 0M) + dbOrderSku.Coupon ?? 0M) * orderCostDetail.DeductionQuantity - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; + orderCostDetail.CalculationSkuGrossProfit(dbOrderSku.ShouldPay ?? 0M, + dbOrderSku.PingTaiChengDanYouHuiQuan ?? 0M, + dbOrderSku.VenderFee ?? 0M, + relationPurchaseOrderRequestV2.PlatformCommissionRatio); } #endregion } diff --git a/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index dd62b483..42be525b 100644 --- a/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -13,7 +13,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using Yitter.IdGenerator; - +using BBWY.Server.Business.Extensions; namespace BBWY.Server.Business { public class PurchaseOrderBusiness : BaseBusiness, IDenpendency @@ -265,8 +265,12 @@ namespace BBWY.Server.Business }; //orderCostDetail.SkuGrossProfit = orderSku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - orderSku.Price.Value * orderCostDetail.DeductionQuantity * createOnlinePurchaseOrderRequest.PlatformCommissionRatio; - orderCostDetail.SkuGrossProfit = ((orderSku.ShouldPay ?? 0M) + orderSku.Coupon ?? 0M) * orderCostDetail.DeductionQuantity - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; + //orderCostDetail.SkuGrossProfit = ((orderSku.ShouldPay ?? 0M) + orderSku.Coupon ?? 0M) * orderCostDetail.DeductionQuantity - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; + orderCostDetail.CalculationSkuGrossProfit(orderSku.ShouldPay ?? 0M, + orderSku.PingTaiChengDanYouHuiQuan ?? 0M, + orderSku.VenderFee ?? 0M, + createOnlinePurchaseOrderRequest.PlatformCommissionRatio); insertOrderCostDetails.Add(orderCostDetail); #endregion } diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 75132231..0b48138f 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -10,13 +10,10 @@ using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Options; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -using NLog; using System; -using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Net.Http; -using System.Security.Cryptography; using System.Threading; using System.Threading.Tasks; using Yitter.IdGenerator; @@ -453,6 +450,7 @@ namespace BBWY.Server.Business var preferentialAmount = 0M; if (dbOrder == null) { + var orderTotalInfo = insertOrderTotalInfoList.FirstOrDefault(x => x.Id == orderId); dbOrder = new Order() { Id = orderId, @@ -462,7 +460,7 @@ namespace BBWY.Server.Business EndTime = endTime, StartTime = orderJToken.Value("orderStartTime"), ModifyTime = modifyTime, - OrderPayment = orderPayment, + OrderPayment = orderPayment, //(orderTotalInfo?.TotalShouldPay) ?? orderPayment, SellerPreferentialAmount = sellerPreferentialAmount, OrderSellerPrice = orderSellerPrice, OrderTotalPrice = orderTotalPrice, @@ -474,7 +472,8 @@ namespace BBWY.Server.Business StoreOrder = storeOrder, StoreId = storeId, IsGift = orderSellerPrice == 0M, - StorageType = storageType + StorageType = storageType, + PreferentialAmount = (orderTotalInfo?.TotalPingTaiChengDanYouHuiQuan) ?? 0M }; if (memoryCache.TryGetValue(orderId, out sDCalculationCostRequest)) @@ -635,31 +634,31 @@ namespace BBWY.Server.Business #region 订单优惠 - var orderCouponJArray = (JArray)orderJToken["couponDetailList"]; - if (orderCouponJArray.HasValues) - { - foreach (var orderCouponJToken in orderCouponJArray) - { - var couponType = orderCouponJToken.Value("couponType"); - if (string.IsNullOrEmpty(couponType)) - continue; - //dbOrder.PreferentialAmount += orderCouponJToken.Value("couponPrice"); - preferentialAmount += orderCouponJToken.Value("couponPrice"); - if (!dbOrderCouponList.Any(oc => oc.OrderId == orderId)) - { - insertOrderCouponList.Add(new OrderCoupon() - { - Id = idGenerator.NewLong(), - SkuId = orderCouponJToken.Value("skuId"), - OrderId = orderId, - CreateTime = DateTime.Now, - CouponType = couponType, - CouponPrice = orderCouponJToken.Value("couponPrice") - }); - } - } - } - #endregion + //var orderCouponJArray = (JArray)orderJToken["couponDetailList"]; + //if (orderCouponJArray.HasValues) + //{ + // foreach (var orderCouponJToken in orderCouponJArray) + // { + // var couponType = orderCouponJToken.Value("couponType"); + // if (string.IsNullOrEmpty(couponType)) + // continue; + // //dbOrder.PreferentialAmount += orderCouponJToken.Value("couponPrice"); + // preferentialAmount += orderCouponJToken.Value("couponPrice"); + // if (!dbOrderCouponList.Any(oc => oc.OrderId == orderId)) + // { + // insertOrderCouponList.Add(new OrderCoupon() + // { + // Id = idGenerator.NewLong(), + // SkuId = orderCouponJToken.Value("skuId"), + // OrderId = orderId, + // CreateTime = DateTime.Now, + // CouponType = couponType, + // CouponPrice = orderCouponJToken.Value("couponPrice") + // }); + // } + // } + //} + //#endregion #region 订单状态转换 var orderState = ConvertOrderState(orderJToken, dbOrder.StorageType); @@ -723,7 +722,7 @@ namespace BBWY.Server.Business var orderCostPurchaseAmount = 0M; var orderDeliveryExpressFreight = 0M; //发货总运费,sku购买数量第二个开始半价 - var avgPreferential = preferentialAmount / orderSkuJArray.Count(); + //var avgPreferential = preferentialAmount / orderSkuJArray.Count(); #region 扣减库存 foreach (var orderSkuJToken in orderSkuJArray) @@ -731,17 +730,28 @@ namespace BBWY.Server.Business var orderSkuId = orderSkuJToken.Value("skuId"); var itemTotal = orderSkuJToken.Value("itemTotal"); //sku购买数量 + #region sku拆分明细 decimal? skuShouldPay = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.ShouldPay; if (skuShouldPay == null) skuShouldPay = insertOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.ShouldPay; if (skuShouldPay == null) skuShouldPay = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.ShouldPay; - decimal? coupon = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.Coupon; - if (coupon == null) - coupon = insertOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.Coupon; - if (coupon == null) - coupon = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.Coupon; + + decimal? pingtaiCoupon = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && + x.SkuId == orderSkuId)?.PingTaiChengDanYouHuiQuan; + if (pingtaiCoupon == null) + pingtaiCoupon = insertOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.PingTaiChengDanYouHuiQuan; + if (pingtaiCoupon == null) + pingtaiCoupon = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.PingTaiChengDanYouHuiQuan; + + decimal? venderFee = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && + x.SkuId == orderSkuId)?.VenderFee; + if (venderFee == null) + venderFee = insertOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.VenderFee; + if (venderFee == null) + venderFee = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.VenderFee; + #endregion //var itemPrice = orderSkuJToken.Value("jdPrice"); //sku单价 var isReduceMultiTimes = false; //是否多次扣减库存 @@ -801,7 +811,13 @@ namespace BBWY.Server.Business //orderCostDetail.SkuGrossProfit = itemPrice * deductionQuantity - avgPreferential - // (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - // itemPrice * deductionQuantity * platformCommissionRatio; - orderCostDetail.SkuGrossProfit = ((skuShouldPay ?? 0M) + (coupon ?? 0M)) * deductionQuantity - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; + + //var koudian = (skuShouldPay.Value - venderFee.Value) * deductionQuantity * platformCommissionRatio; + //orderCostDetail.SkuGrossProfit = (skuShouldPay.Value + pingtaiCoupon.Value) * deductionQuantity - + // orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight - + // koudian; + + orderCostDetail.CalculationSkuGrossProfit(skuShouldPay ?? 0M, pingtaiCoupon ?? 0M, venderFee ?? 0M, platformCommissionRatio); insertOrderCostDetailList.Add(orderCostDetail); } } @@ -821,7 +837,7 @@ namespace BBWY.Server.Business if (dbOrder.OrderTotalPrice != 0) orderCost.CalculationOrderProfitAndCost(dbOrder, null); else - orderCost.CalculationOrderProfitAndCost(orderSellerPrice, freightPrice, null); + orderCost.CalculationOrderProfitAndCost(dbOrder.OrderPayment, dbOrder.PreferentialAmount, dbOrder.FreightPrice, null); insertOrderCostList.Add(orderCost); #endregion @@ -835,7 +851,7 @@ namespace BBWY.Server.Business if (isNewOrder) { dbOrder.OrderState = orderState; - dbOrder.PreferentialAmount = preferentialAmount; + //dbOrder.PreferentialAmount = preferentialAmount; } else if ((orderState != null && orderState != dbOrder.OrderState) || buyerRemark != dbOrder.BuyerRemark || From c49bedb34bf4731ea2d8ffe08fa4d7fc335484b0 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 13 Nov 2023 00:34:48 +0800 Subject: [PATCH 09/19] =?UTF-8?q?#endregion=E9=94=99=E8=AF=AF=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWY.Server.Business/Sync/OrderSyncBusiness.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 0b48138f..71c04687 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -632,7 +632,7 @@ namespace BBWY.Server.Business } #endregion - #region 订单优惠 + //#region 订单优惠 //var orderCouponJArray = (JArray)orderJToken["couponDetailList"]; //if (orderCouponJArray.HasValues) @@ -1206,6 +1206,7 @@ namespace BBWY.Server.Business deleteJdPublishOrder?.ExecuteAffrows(); }); } + #endregion /// /// 修复订单Sku缺少的spu @@ -1237,6 +1238,5 @@ namespace BBWY.Server.Business } }); } - #endregion } } From e4b898f796885a7dc46b68b37b89fcdeb772a290 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 13 Nov 2023 01:01:41 +0800 Subject: [PATCH 10/19] 1 --- BBWY.Server.API/Controllers/TestController.cs | 9 ++++++- .../Sync/OrderSyncBusiness.cs | 8 +++--- BBWY.Server.Business/TestBusiness.cs | 25 +++++++++++++------ 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/BBWY.Server.API/Controllers/TestController.cs b/BBWY.Server.API/Controllers/TestController.cs index 894d4245..c706ab87 100644 --- a/BBWY.Server.API/Controllers/TestController.cs +++ b/BBWY.Server.API/Controllers/TestController.cs @@ -1,5 +1,6 @@ using BBWY.Server.Business; using BBWY.Server.Model.Db; +using BBWY.Server.Model.Dto; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; @@ -22,6 +23,12 @@ namespace BBWY.Server.API.Controllers { testBusiness.StatisticsProduct(); - } + } + + [HttpPost] + public void RepairSkuDetailAndSkuGriooProfit([FromBody] RepairSkuDetailAndSkuGriooProfit request) + { + testBusiness.RepairSkuDetailAndSkuGriooProfit(request); + } } } diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 71c04687..1ef56770 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -285,6 +285,7 @@ namespace BBWY.Server.Business if (insertOrderList.Any(o => o.Id == orderId)) continue; var dbOrder = dbOrderList.FirstOrDefault(o => o.Id == orderId); + var dbOrderTotal = dbOrderTotalList.FirstOrDefault(o => o.Id == orderId); var isNewOrder = dbOrder == null; SDCalculationCostRequest sDCalculationCostRequest = null; //SD信息埋点 @@ -447,7 +448,6 @@ namespace BBWY.Server.Business var storeOrder = orderJToken.Value("storeOrder") ?? string.Empty; var storeId = orderJToken.Value("storeId"); var storageType = ConvertStoreOrder(storeOrder); - var preferentialAmount = 0M; if (dbOrder == null) { var orderTotalInfo = insertOrderTotalInfoList.FirstOrDefault(x => x.Id == orderId); @@ -866,8 +866,8 @@ namespace BBWY.Server.Business (orderSellerPrice > 0M && dbOrder.IsGift) || orderTotalPrice != dbOrder.OrderTotalPrice || storeOrder != dbOrder.StoreOrder || - preferentialAmount != dbOrder.PreferentialAmount || - storeId != dbOrder.StoreId) + storeId != dbOrder.StoreId || + (dbOrderTotal != null && dbOrderTotal.TotalPingTaiChengDanYouHuiQuan != dbOrder.PreferentialAmount)) { var updateSql = fsql.Update(orderId).SetIf(orderState != null && orderState != dbOrder.OrderState, o => o.OrderState, orderState) .SetIf(buyerRemark != dbOrder.BuyerRemark, o => o.BuyerRemark, buyerRemark) @@ -883,7 +883,7 @@ namespace BBWY.Server.Business .SetIf(orderSellerPrice > 0M && dbOrder.IsGift == true, o => o.IsGift, false) .SetIf(storeOrder != dbOrder.StoreOrder, o => o.StoreOrder, storeOrder) .SetIf(storeOrder != dbOrder.StoreOrder, o => o.StorageType, storageType) - .SetIf(preferentialAmount != dbOrder.PreferentialAmount, o => o.PreferentialAmount, preferentialAmount) + .SetIf(dbOrderTotal != null && dbOrderTotal.TotalPingTaiChengDanYouHuiQuan != dbOrder.PreferentialAmount, o => o.PreferentialAmount, dbOrderTotal.TotalPingTaiChengDanYouHuiQuan) .SetIf(storeId != dbOrder.StoreId, o => o.StoreId, storeId); updateOrderList.Add(updateSql); } diff --git a/BBWY.Server.Business/TestBusiness.cs b/BBWY.Server.Business/TestBusiness.cs index 1dc98590..dbaa1713 100644 --- a/BBWY.Server.Business/TestBusiness.cs +++ b/BBWY.Server.Business/TestBusiness.cs @@ -11,6 +11,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading; +using BBWY.Server.Business.Extensions; namespace BBWY.Server.Business { @@ -177,14 +178,21 @@ namespace BBWY.Server.Business o.OrderState != Enums.OrderState.已取消 && o.StorageType != Enums.StorageType.SD && o.StartTime >= request.StartTime && - o.StartTime <= request.EndTime && - !fsql.Select().Where(ot => ot.Id == o.Id).Any()) + o.StartTime <= request.EndTime) .ToList(o => o.Id); - foreach (var orderId in orderIdList) - { - orderSyncBusiness.SyncOrder(shop, orderId); - Thread.Sleep(500); - } + + //fsql.Transaction(() => + //{ + // fsql.Delete(orderIdList).ExecuteAffrows(); + // fsql.Delete().Where(on => orderIdList.Contains(on.OrderId)).ExecuteAffrows(); + // fsql.Delete().Where(op => orderIdList.Contains(op.OrderId)).ExecuteAffrows(); + //}); + + //foreach (var orderId in orderIdList) + //{ + // orderSyncBusiness.SyncOrder(shop, orderId); + // Thread.Sleep(500); + //} var orderList = fsql.Select(orderIdList).ToList(); var orderSkuList = fsql.Select().Where(osku => osku.Price > 0 && orderIdList.Contains(osku.OrderId)).ToList(); @@ -205,7 +213,8 @@ namespace BBWY.Server.Business foreach (var orderSku in currentOrderSkuList) { var ocd = currentOrderCostDetailList.FirstOrDefault(x => x.SkuId == orderSku.SkuId); - ocd.SkuGrossProfit = ((orderSku.ShouldPay ?? 0M) + (orderSku.Coupon ?? 0M)) * ocd.DeductionQuantity - ocd.TotalCost - ocd.DeliveryExpressFreight; + //ocd.SkuGrossProfit = ((orderSku.ShouldPay ?? 0M) + (orderSku.Coupon ?? 0M)) * ocd.DeductionQuantity - ocd.TotalCost - ocd.DeliveryExpressFreight; + ocd.CalculationSkuGrossProfit(orderSku.ShouldPay ?? 0M, orderSku.PingTaiChengDanYouHuiQuan ?? 0M, orderSku.VenderFee ?? 0M, shop.PlatformCommissionRatio ?? 0.05M); var update = fsql.Update(ocd.Id).Set(x => x.SkuGrossProfit, ocd.SkuGrossProfit); updateOrderCostDetailList.Add(update); } From f37e2181302e88f21b547b8849576995db36e283 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 13 Nov 2023 01:04:24 +0800 Subject: [PATCH 11/19] 1 --- BBWY.Server.Business/Sync/OrderSyncBusiness.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 1ef56770..ef693ea5 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -703,7 +703,7 @@ namespace BBWY.Server.Business { OrderId = sDCalculationCostRequest.OrderId, PlatformCommissionRatio = sDCalculationCostRequest.PlatformCommissionRatio, - PreferentialAmount = preferentialAmount, + PreferentialAmount = (dbOrderTotal?.TotalPingTaiChengDanYouHuiQuan) ?? dbOrder.PreferentialAmount, Profit = 0, DeliveryExpressFreight = sDCalculationCostRequest.DeliveryExpressFreight, CreateTime = DateTime.Now, @@ -828,7 +828,7 @@ namespace BBWY.Server.Business { OrderId = orderId, PlatformCommissionRatio = platformCommissionRatio, - PreferentialAmount = preferentialAmount, + PreferentialAmount = (dbOrderTotal?.TotalPingTaiChengDanYouHuiQuan) ?? dbOrder.PreferentialAmount, Profit = 0, PurchaseAmount = orderCostPurchaseAmount, DeliveryExpressFreight = orderDeliveryExpressFreight, From 25b14778e461f6e84a5dbd88621a8a999f64772b Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 13 Nov 2023 02:03:33 +0800 Subject: [PATCH 12/19] 1 --- .../Sync/OrderSyncBusiness.cs | 4 +-- BBWY.Server.Business/TestBusiness.cs | 36 ++++++++++++------- .../Test/RepairSkuDetailAndSkuGriooProfit.cs | 2 ++ 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index ef693ea5..387ecad6 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -281,7 +281,6 @@ namespace BBWY.Server.Business var orderId = orderJToken.Value("orderId"); try { - if (insertOrderList.Any(o => o.Id == orderId)) continue; var dbOrder = dbOrderList.FirstOrDefault(o => o.Id == orderId); @@ -292,6 +291,7 @@ namespace BBWY.Server.Business #region 优惠券/促销/拆分明细 if (!dbOrderTotalList.Any(ot => ot.Id == orderId)) { + Thread.Sleep(2000); var orderCouponDetailHttpResult = restApiService.SendRequest("http://yunding.qiyue666.com", "api/PlatformSDK/GetOrderCouponDetail", new { OrderId = orderId, @@ -883,7 +883,7 @@ namespace BBWY.Server.Business .SetIf(orderSellerPrice > 0M && dbOrder.IsGift == true, o => o.IsGift, false) .SetIf(storeOrder != dbOrder.StoreOrder, o => o.StoreOrder, storeOrder) .SetIf(storeOrder != dbOrder.StoreOrder, o => o.StorageType, storageType) - .SetIf(dbOrderTotal != null && dbOrderTotal.TotalPingTaiChengDanYouHuiQuan != dbOrder.PreferentialAmount, o => o.PreferentialAmount, dbOrderTotal.TotalPingTaiChengDanYouHuiQuan) + .SetIf(dbOrderTotal != null && dbOrderTotal.TotalPingTaiChengDanYouHuiQuan != dbOrder.PreferentialAmount, o => o.PreferentialAmount, dbOrderTotal?.TotalPingTaiChengDanYouHuiQuan) .SetIf(storeId != dbOrder.StoreId, o => o.StoreId, storeId); updateOrderList.Add(updateSql); } diff --git a/BBWY.Server.Business/TestBusiness.cs b/BBWY.Server.Business/TestBusiness.cs index dbaa1713..6c79201e 100644 --- a/BBWY.Server.Business/TestBusiness.cs +++ b/BBWY.Server.Business/TestBusiness.cs @@ -179,25 +179,28 @@ namespace BBWY.Server.Business o.StorageType != Enums.StorageType.SD && o.StartTime >= request.StartTime && o.StartTime <= request.EndTime) + .WhereIf(!string.IsNullOrEmpty(request.OrderId), o => o.Id == request.OrderId) .ToList(o => o.Id); - //fsql.Transaction(() => - //{ - // fsql.Delete(orderIdList).ExecuteAffrows(); - // fsql.Delete().Where(on => orderIdList.Contains(on.OrderId)).ExecuteAffrows(); - // fsql.Delete().Where(op => orderIdList.Contains(op.OrderId)).ExecuteAffrows(); - //}); + fsql.Transaction(() => + { + fsql.Delete(orderIdList).ExecuteAffrows(); + fsql.Delete().Where(on => orderIdList.Contains(on.OrderId)).ExecuteAffrows(); + fsql.Delete().Where(op => orderIdList.Contains(op.OrderId)).ExecuteAffrows(); + }); - //foreach (var orderId in orderIdList) - //{ - // orderSyncBusiness.SyncOrder(shop, orderId); - // Thread.Sleep(500); - //} + foreach (var orderId in orderIdList) + { + orderSyncBusiness.SyncOrder(shop, orderId); + Thread.Sleep(1000); + } var orderList = fsql.Select(orderIdList).ToList(); var orderSkuList = fsql.Select().Where(osku => osku.Price > 0 && orderIdList.Contains(osku.OrderId)).ToList(); var orderCostDetailList = fsql.Select().Where(ocd => orderIdList.Contains(ocd.OrderId) && ocd.IsEnabled == true).ToList(); - + var orderCostList = fsql.Select(orderIdList).ToList(); + var afterOrderList = fsql.Select().Where(af => orderIdList.Contains(af.OrderId)).ToList(); + var orderTotalList = fsql.Select().Where(on => orderIdList.Contains(on.Id)).ToList(); var orderIndex = 0; foreach (var order in orderList) { @@ -218,12 +221,21 @@ namespace BBWY.Server.Business var update = fsql.Update(ocd.Id).Set(x => x.SkuGrossProfit, ocd.SkuGrossProfit); updateOrderCostDetailList.Add(update); } + var currentAfterOrderList = afterOrderList.Where(af => af.OrderId == order.Id).ToList(); + var orderTotal = orderTotalList.FirstOrDefault(on => on.Id == order.Id); + var orderCost = orderCostList.FirstOrDefault(oc => oc.OrderId == order.Id); + orderCost.CalculationOrderProfitAndCost(order.OrderPayment, + orderTotal.TotalPingTaiChengDanYouHuiQuan ?? 0M, + orderTotal.TotalVenderFee ?? 0M, + currentAfterOrderList); if (updateOrderCostDetailList.Count() > 0) { fsql.Transaction(() => { foreach (var update in updateOrderCostDetailList) update.ExecuteAffrows(); + fsql.Update(orderCost.OrderId).Set(oc => oc.Profit, orderCost.Profit) + .Set(oc => oc.PlatformCommissionAmount, orderCost.PlatformCommissionAmount).ExecuteAffrows(); }); } } diff --git a/BBWY.Server.Model/Dto/Request/Test/RepairSkuDetailAndSkuGriooProfit.cs b/BBWY.Server.Model/Dto/Request/Test/RepairSkuDetailAndSkuGriooProfit.cs index 4f09dea5..3f13cd05 100644 --- a/BBWY.Server.Model/Dto/Request/Test/RepairSkuDetailAndSkuGriooProfit.cs +++ b/BBWY.Server.Model/Dto/Request/Test/RepairSkuDetailAndSkuGriooProfit.cs @@ -9,5 +9,7 @@ namespace BBWY.Server.Model.Dto public DateTime EndTime { get; set; } public long? ShopId { get; set; } + + public string OrderId { get; set; } } } From 10b05146aa0715878c06ed5982ae2a4e290d4aec Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 13 Nov 2023 02:07:55 +0800 Subject: [PATCH 13/19] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=AE=9E=E6=94=B6=E5=B1=95=E7=A4=BA=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWY.Client/GlobalContext.cs | 2 +- BBWY.Client/Models/Order/Order.cs | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/BBWY.Client/GlobalContext.cs b/BBWY.Client/GlobalContext.cs index aa0d5b61..0e23bf47 100644 --- a/BBWY.Client/GlobalContext.cs +++ b/BBWY.Client/GlobalContext.cs @@ -13,7 +13,7 @@ namespace BBWY.Client { ShopServiceGroupList = new List(); ShopServiceGroupLowerList = new List(); - ClientVersion = "10203"; + ClientVersion = "10204"; } diff --git a/BBWY.Client/Models/Order/Order.cs b/BBWY.Client/Models/Order/Order.cs index a93c95dd..d84f0ce8 100644 --- a/BBWY.Client/Models/Order/Order.cs +++ b/BBWY.Client/Models/Order/Order.cs @@ -85,7 +85,14 @@ namespace BBWY.Client.Models /// /// 实收金额 /// - public decimal ActualAmount { get { return OrderSellerPrice + FreightPrice; } } + public decimal ActualAmount + { + get + { + //return OrderSellerPrice + FreightPrice; + return OrderPayment + PreferentialAmount; + } + } /// /// 商家优惠金额 From a38fb65d72160cc45b85ef006424ab809bb48d30 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 13 Nov 2023 02:12:47 +0800 Subject: [PATCH 14/19] 10204 --- BBWY.Client/Models/Order/Order.cs | 2 +- BBWY.Client/Views/Order/OrderListControl.xaml | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/BBWY.Client/Models/Order/Order.cs b/BBWY.Client/Models/Order/Order.cs index d84f0ce8..119a9f04 100644 --- a/BBWY.Client/Models/Order/Order.cs +++ b/BBWY.Client/Models/Order/Order.cs @@ -95,7 +95,7 @@ namespace BBWY.Client.Models } /// - /// 商家优惠金额 + /// 平台优惠金额 /// public decimal PreferentialAmount { get; set; } diff --git a/BBWY.Client/Views/Order/OrderListControl.xaml b/BBWY.Client/Views/Order/OrderListControl.xaml index a7c5864f..ddde82cf 100644 --- a/BBWY.Client/Views/Order/OrderListControl.xaml +++ b/BBWY.Client/Views/Order/OrderListControl.xaml @@ -330,12 +330,14 @@ - - + + + - - + + + From 0c4561edebb62304047809ff30ef0b4cf7255052 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 13 Nov 2023 20:45:53 +0800 Subject: [PATCH 15/19] =?UTF-8?q?JD=E6=98=BE=E7=A4=BA=E6=BA=90=E6=98=AF?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JD.API/Middlewares/CustomExceptionMiddleWare.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/JD.API/Middlewares/CustomExceptionMiddleWare.cs b/JD.API/Middlewares/CustomExceptionMiddleWare.cs index da17e1db..99681780 100644 --- a/JD.API/Middlewares/CustomExceptionMiddleWare.cs +++ b/JD.API/Middlewares/CustomExceptionMiddleWare.cs @@ -34,7 +34,7 @@ namespace JD.API.Middlewares { 401, "未授权的请求" }, { 404, "找不到该资源" }, { 403, "访问被拒绝" }, - { 500, "服务器发生意外的错误" }, + //{ 500, "服务器发生意外的错误" }, { 503, "服务不可用" } //其余状态自行扩展 }; @@ -59,6 +59,7 @@ namespace JD.API.Middlewares context.Response.Clear(); context.Response.StatusCode = 500; //发生未捕获的异常,手动设置状态码 nLogManager.Default().Error(ex); //记录错误 + await ErrorHandle(context, context.Response.StatusCode, ex.Message); } } finally From 412f0fd47f2bb5ba3fee98109ee49a1103235026 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 13 Nov 2023 21:26:29 +0800 Subject: [PATCH 16/19] =?UTF-8?q?pjzs=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PlatformSDK/JDBusiness.cs | 26 ++++++++++++++++--- .../Middlewares/CustomExceptionMiddleWare.cs | 4 +-- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs index e3cdea4f..eabbc093 100644 --- a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs +++ b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs @@ -138,7 +138,10 @@ namespace BBWY.Server.Business var pageSize = 20; var totalPageSize = 1; if (!string.IsNullOrEmpty(searchProductSkuRequest.Spu)) + { totalPageSize = 1; + searchProductSkuRequest.IsCheckSkuCount = false; + } else if (!string.IsNullOrEmpty(searchProductSkuRequest.Sku)) { skuIdList = searchProductSkuRequest.Sku.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); @@ -182,7 +185,8 @@ namespace BBWY.Server.Business { var targetSkuIdList = skuList.Select(s => s.Id); var exceptSkuIdList = skuIdList.Except(targetSkuIdList); - throw new BusinessException($"{searchProductSkuRequest.CheckStep}-sku条件数量和查询结果数量不一致\r\n{string.Join(",", exceptSkuIdList)}"); + // throw new BusinessException($"{searchProductSkuRequest.CheckStep}-sku条件数量和查询结果数量不一致\r\n{string.Join(",", exceptSkuIdList)}"); + throw new BusinessException($"{JsonConvert.SerializeObject(skuIdList)} 以上SKU可能已下架,请修改任务将该SKU移除奶妈列表"); } return skuList; @@ -852,6 +856,15 @@ namespace BBWY.Server.Business } } + private string SkuShangJiaFanYi(string errorMsg) + { + if (errorMsg.Contains("销售属性值组合重复") && errorMsg.Contains("业务要求唯一性")) + errorMsg = "该任务已上架赠品,请手动下架赠品,系统10分钟后将自动重新启动该任务"; + if (errorMsg.Contains("属性[产品尺寸]扩展值数量与值数量不一致")) + errorMsg = "上架赠品失败,评价助手暂无法上架带有[产品尺寸]的商品,请手动上架赠品后在评价助手创建已上架赠品模式"; + return errorMsg; + } + public override StartPromotionTaskResponse StartJDPromotionTask(StartPromotionTaskRequest2 request) { var stepText = string.Empty; @@ -1137,12 +1150,14 @@ namespace BBWY.Server.Business errorMsg = res.Body.Contains("en_desc") ? res.Json["error_response"].Value("en_desc") : (string.IsNullOrEmpty(res.ErrorMsg) ? res.ErrMsg : res.ErrorMsg); + errorMsg = SkuShangJiaFanYi(errorMsg); RollBackWhenStartPromotionError(request.AppKey, request.AppSecret, request.AppToken, null, request.MainProductSpu, request.FullTitle, brandName, false); throw new BusinessException($"上架sku失败-{errorMsg}"); } } else { + errorMsg = SkuShangJiaFanYi(errorMsg); RollBackWhenStartPromotionError(request.AppKey, request.AppSecret, request.AppToken, null, request.MainProductSpu, request.FullTitle, brandName, false); throw new BusinessException($"上架sku失败-{errorMsg}"); } @@ -1424,6 +1439,9 @@ namespace BBWY.Server.Business ddMsg.AppendLine($"任务奶妈数:{request.JoinSkuCount}"); ddMsg.AppendLine($"参与奶妈数:{lastQueryJoinCount}"); ddMsg.AppendLine("参与任务的奶妈数异常请检查"); + //ddMsg.AppendLine("以上SKU可能已下架或同时参与多个赠品促销活动"); + //ddMsg.AppendLine("1.如已下架请将对应的SKU移除奶妈列表"); + //ddMsg.AppendLine("2.系统会自动剔除同时参与多个赠品促销的SKU,请检查以上SKU是否在失效的促销活动,请及时删除,已暂停或已停止的促销活动"); } if (!string.IsNullOrEmpty(request.PJZSDingDingKey) && !string.IsNullOrEmpty(request.PJZSDingDingWebHook)) dingDingBusiness.SendDingDingBotMessage(request.PJZSDingDingKey, request.PJZSDingDingWebHook, ddMsg.ToString()); @@ -1762,7 +1780,7 @@ namespace BBWY.Server.Business public override JToken GetProductById(GetProductByIdRequest request) { var jdClient = GetJdClient(request.AppKey, request.AppSecret); - var req = new WareReadFindWareByIdRequest() { wareId = request.SpuId}; + var req = new WareReadFindWareByIdRequest() { wareId = request.SpuId }; if (request.Field != null) req.field = request.Field; @@ -1777,9 +1795,9 @@ namespace BBWY.Server.Business public override JToken GetAttrsByCategoryId(GetAttrsByCategoryIdRequest request) { var jdClient = GetJdClient(request.AppKey, request.AppSecret); - var req = new CategoryReadFindAttrsByCategoryIdUnlimitCateRequest() { cid=request.CatId}; + var req = new CategoryReadFindAttrsByCategoryIdUnlimitCateRequest() { cid = request.CatId }; - if(request.AttributeType!=null) + if (request.AttributeType != null) req.attributeType = request.AttributeType; if (request.Field != null) req.field = request.Field; diff --git a/JD.API/Middlewares/CustomExceptionMiddleWare.cs b/JD.API/Middlewares/CustomExceptionMiddleWare.cs index 99681780..60a9627e 100644 --- a/JD.API/Middlewares/CustomExceptionMiddleWare.cs +++ b/JD.API/Middlewares/CustomExceptionMiddleWare.cs @@ -34,7 +34,7 @@ namespace JD.API.Middlewares { 401, "未授权的请求" }, { 404, "找不到该资源" }, { 403, "访问被拒绝" }, - //{ 500, "服务器发生意外的错误" }, + { 500, "服务器发生意外的错误" }, { 503, "服务不可用" } //其余状态自行扩展 }; @@ -59,7 +59,7 @@ namespace JD.API.Middlewares context.Response.Clear(); context.Response.StatusCode = 500; //发生未捕获的异常,手动设置状态码 nLogManager.Default().Error(ex); //记录错误 - await ErrorHandle(context, context.Response.StatusCode, ex.Message); + //await ErrorHandle(context, context.Response.StatusCode, ex.Message); } } finally From 327ecbc8ad980e09474ecd331d45773decf23b88 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 13 Nov 2023 21:43:19 +0800 Subject: [PATCH 17/19] 1 --- BBWY.Server.Business/PlatformSDK/JDBusiness.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs index eabbc093..b7a49e64 100644 --- a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs +++ b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs @@ -186,7 +186,8 @@ namespace BBWY.Server.Business var targetSkuIdList = skuList.Select(s => s.Id); var exceptSkuIdList = skuIdList.Except(targetSkuIdList); // throw new BusinessException($"{searchProductSkuRequest.CheckStep}-sku条件数量和查询结果数量不一致\r\n{string.Join(",", exceptSkuIdList)}"); - throw new BusinessException($"{JsonConvert.SerializeObject(skuIdList)} 以上SKU可能已下架,请修改任务将该SKU移除奶妈列表"); + //throw new BusinessException($"{JsonConvert.SerializeObject(skuIdList)} 以上SKU可能已下架,请修改任务将该SKU移除奶妈列表"); + throw new BusinessException($"以上{searchProductSkuRequest.CheckStep}状态异常,可能被系统自动下架,请检查任务的精简标题是否正确\r\n{string.Join(",", exceptSkuIdList)}"); } return skuList; @@ -899,7 +900,7 @@ namespace BBWY.Server.Business { stepText = "查询奶妈模板SKU"; searchProductSkuRequest.Sku = request.MotherTemplateSku; - searchProductSkuRequest.CheckStep = "奶妈模板"; + searchProductSkuRequest.CheckStep = "奶妈模板SKU"; motherTemplateSkuList = GetProductSkuList(searchProductSkuRequest); } #endregion @@ -909,7 +910,7 @@ namespace BBWY.Server.Business { stepText = "查询自定义奶妈SKU"; searchProductSkuRequest.Sku = request.CustomMotherSku; - searchProductSkuRequest.CheckStep = "自定义奶妈"; + searchProductSkuRequest.CheckStep = "自定义奶妈SKU"; customerMotherSkuList = GetProductSkuList(searchProductSkuRequest); } #endregion @@ -919,7 +920,7 @@ namespace BBWY.Server.Business { stepText = "查询主商品SKU"; searchProductSkuRequest.Sku = request.MainProductSku; - searchProductSkuRequest.CheckStep = "主商品"; + searchProductSkuRequest.CheckStep = "主商品SKU"; mainProductSkuList = GetProductSkuList(searchProductSkuRequest); if (mainProductSkuList != null && mainProductSkuList.Any(s => s.ProductId != request.MainProductSpu)) throw new BusinessException("主商品SKU归属有误"); @@ -931,7 +932,7 @@ namespace BBWY.Server.Business { stepText = "查询主商品赠品SKU"; searchProductSkuRequest.Sku = request.MainProductGiftSku; - searchProductSkuRequest.CheckStep = "主商品赠品"; + searchProductSkuRequest.CheckStep = "赠品SKU"; giftSkuList = GetProductSkuList(searchProductSkuRequest); giftSkuIdList = giftSkuList.Select(gs => gs.Id).ToList(); From 0d2de21239cb050b802b2c0b2781f3b900a5577c Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 14 Nov 2023 03:22:09 +0800 Subject: [PATCH 18/19] =?UTF-8?q?C=E7=AB=AF=E6=94=B9=E5=85=AC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWY.Client/GlobalContext.cs | 2 +- .../APIModel/Response/Order/OrderResponse.cs | 10 ++ BBWY.Client/Models/Order/Order.cs | 14 ++- BBWY.Client/Views/Order/OrderListControl.xaml | 14 +-- .../PopOrderQueryCouponDetaiRequest.cs | 24 +++++ .../PopOrderQueryCouponDetaiResponse.cs | 8 ++ .../Extensions/OrderCostExtension.cs | 31 ++++-- BBWY.Server.Business/Order/OrderBusiness.cs | 10 ++ .../PlatformSDK/JDBusiness.cs | 6 +- .../PurchaseOrder/PurchaseOrderBusiness.cs | 2 + .../Sync/OrderSyncBusiness.cs | 101 ++++++++++++++---- BBWY.Server.Business/TestBusiness.cs | 12 ++- BBWY.Server.Model/Db/Order/Order.cs | 16 ++- .../Dto/Response/Order/OrderResponse.cs | 12 ++- 14 files changed, 214 insertions(+), 48 deletions(-) create mode 100644 BBWY.JDSDK/Request/PopOrderQueryCouponDetaiRequest.cs create mode 100644 BBWY.JDSDK/Response/PopOrderQueryCouponDetaiResponse.cs diff --git a/BBWY.Client/GlobalContext.cs b/BBWY.Client/GlobalContext.cs index 0e23bf47..e14d54df 100644 --- a/BBWY.Client/GlobalContext.cs +++ b/BBWY.Client/GlobalContext.cs @@ -13,7 +13,7 @@ namespace BBWY.Client { ShopServiceGroupList = new List(); ShopServiceGroupLowerList = new List(); - ClientVersion = "10204"; + ClientVersion = "10205"; } diff --git a/BBWY.Client/Models/APIModel/Response/Order/OrderResponse.cs b/BBWY.Client/Models/APIModel/Response/Order/OrderResponse.cs index e10499ea..99c4507c 100644 --- a/BBWY.Client/Models/APIModel/Response/Order/OrderResponse.cs +++ b/BBWY.Client/Models/APIModel/Response/Order/OrderResponse.cs @@ -64,6 +64,16 @@ namespace BBWY.Client.Models /// public decimal OrderSellerPrice { get; set; } + /// + /// 订单实收货款 (orderSellerPrice)+平台承担优惠券(PingTaiChengDanYouHuiQuan) + /// + public decimal? ActualProductAmount { get; set; } = 0.00M; + + /// + /// 平台承担优惠券 + /// + public decimal? PingTaiChengDanYouHuiQuan { get; set; } = 0.00M; + /// /// 用户应付金额 /// diff --git a/BBWY.Client/Models/Order/Order.cs b/BBWY.Client/Models/Order/Order.cs index 119a9f04..a53f660f 100644 --- a/BBWY.Client/Models/Order/Order.cs +++ b/BBWY.Client/Models/Order/Order.cs @@ -82,6 +82,16 @@ namespace BBWY.Client.Models /// public decimal FreightPrice { get; set; } + /// + /// 订单实收货款 (orderSellerPrice)+平台承担优惠券(PingTaiChengDanYouHuiQuan) + /// + public decimal? ActualProductAmount { get; set; } = 0.00M; + + /// + /// 平台承担优惠券 + /// + public decimal? PingTaiChengDanYouHuiQuan { get; set; } = 0.00M; + /// /// 实收金额 /// @@ -90,7 +100,7 @@ namespace BBWY.Client.Models get { //return OrderSellerPrice + FreightPrice; - return OrderPayment + PreferentialAmount; + return OrderSellerPrice + FreightPrice + (PingTaiChengDanYouHuiQuan ?? 0M); } } @@ -230,7 +240,7 @@ namespace BBWY.Client.Models var beforeTotalCost = OrderCost?.BeforeTotalCost ?? 0M; return OrderState != OrderState.已取消 && StorageType != Models.StorageType.SD && ((StorageType != null && beforeTotalCost == 0M) || - (beforeTotalCost > OrderSellerPrice + FreightPrice) || + (beforeTotalCost > OrderSellerPrice + FreightPrice + PingTaiChengDanYouHuiQuan) || (StorageType == null && OrderState != OrderState.等待采购 && OrderState != OrderState.待付款)); } } diff --git a/BBWY.Client/Views/Order/OrderListControl.xaml b/BBWY.Client/Views/Order/OrderListControl.xaml index ddde82cf..7d2ca3d5 100644 --- a/BBWY.Client/Views/Order/OrderListControl.xaml +++ b/BBWY.Client/Views/Order/OrderListControl.xaml @@ -330,14 +330,16 @@ - - - + + - - - + + + + + + diff --git a/BBWY.JDSDK/Request/PopOrderQueryCouponDetaiRequest.cs b/BBWY.JDSDK/Request/PopOrderQueryCouponDetaiRequest.cs new file mode 100644 index 00000000..23c575e2 --- /dev/null +++ b/BBWY.JDSDK/Request/PopOrderQueryCouponDetaiRequest.cs @@ -0,0 +1,24 @@ +using BBWY.JDSDK.Response; +using Jd.Api; +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.JDSDK.Request +{ + public class PopOrderQueryCouponDetaiRequest : JdRequestBase + { + public override string ApiName => "jingdong.pop.order.queryCouponDetai"; + + public string orderId { get; set; } + + public bool? queryPromoFlag { get; set; } + + protected override void PrepareParam(IDictionary paramters) + { + paramters.Add("orderId", orderId); + if (queryPromoFlag != null) + paramters.Add("queryPromoFlag", queryPromoFlag); + } + } +} diff --git a/BBWY.JDSDK/Response/PopOrderQueryCouponDetaiResponse.cs b/BBWY.JDSDK/Response/PopOrderQueryCouponDetaiResponse.cs new file mode 100644 index 00000000..0616dad1 --- /dev/null +++ b/BBWY.JDSDK/Response/PopOrderQueryCouponDetaiResponse.cs @@ -0,0 +1,8 @@ +using Jd.Api; + +namespace BBWY.JDSDK.Response +{ + public class PopOrderQueryCouponDetaiResponse : JdResponse + { + } +} diff --git a/BBWY.Server.Business/Extensions/OrderCostExtension.cs b/BBWY.Server.Business/Extensions/OrderCostExtension.cs index 67ac590e..43d32c6a 100644 --- a/BBWY.Server.Business/Extensions/OrderCostExtension.cs +++ b/BBWY.Server.Business/Extensions/OrderCostExtension.cs @@ -13,8 +13,9 @@ namespace BBWY.Server.Business.Extensions orderCost.RefundPurchaseAmount = afterSaleOrders == null || afterSaleOrders.Count == 0M ? 0M : afterSaleOrders.Sum(aso => aso.RefundPurchaseAmount ?? 0); //退款之后平台扣点 - orderCost.PlatformCommissionAmount = (order.OrderPayment - order.FreightPrice - orderCost.RefundAmount) * (orderCost.PlatformCommissionRatio); + //orderCost.PlatformCommissionAmount = (order.OrderPayment - order.FreightPrice - orderCost.RefundAmount) * (orderCost.PlatformCommissionRatio); + orderCost.PlatformCommissionAmount = (order.OrderSellerPrice + (order.PingTaiChengDanYouHuiQuan ?? 0M) - orderCost.RefundAmount) * orderCost.PlatformCommissionRatio; //orderCost.Profit = order.OrderSellerPrice + order.FreightPrice - orderCost.RefundAmount - // orderCost.PurchaseAmount - // orderCost.DeliveryExpressFreight - @@ -22,8 +23,7 @@ namespace BBWY.Server.Business.Extensions // orderCost.AfterTotalCost + // orderCost.RefundPurchaseAmount; - orderCost.Profit = order.OrderPayment + - order.PreferentialAmount - + orderCost.Profit = (order.ActualProductAmount ?? 0M) - orderCost.RefundAmount - orderCost.PurchaseAmount - orderCost.DeliveryExpressFreight - @@ -33,14 +33,15 @@ namespace BBWY.Server.Business.Extensions } - public static void CalculationOrderProfitAndCost(this OrderCost orderCost, decimal orderPayment, decimal preferentialAmount, decimal freightPrice, IList afterSaleOrders) + public static void CalculationOrderProfitAndCost(this OrderCost orderCost, decimal actualAmountProduct, decimal orderSellerPrice, decimal pingtaichengdanyouhuiquan, IList afterSaleOrders) { orderCost.AfterTotalCost = afterSaleOrders == null || afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.AfterTotalCost); orderCost.RefundAmount = afterSaleOrders == null || afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.RefundAmount ?? 0M); orderCost.RefundPurchaseAmount = afterSaleOrders == null || afterSaleOrders.Count == 0M ? 0M : afterSaleOrders.Sum(aso => aso.RefundPurchaseAmount ?? 0); //退款之后平台扣点 - orderCost.PlatformCommissionAmount = (orderPayment - freightPrice - orderCost.RefundAmount) * (orderCost.PlatformCommissionRatio); + //orderCost.PlatformCommissionAmount = (orderPayment - freightPrice - orderCost.RefundAmount) * (orderCost.PlatformCommissionRatio); + orderCost.PlatformCommissionAmount = (orderSellerPrice + pingtaichengdanyouhuiquan - orderCost.RefundAmount) * orderCost.PlatformCommissionRatio; //orderCost.Profit = orderSellerPrice + freightPrice - orderCost.RefundAmount - // orderCost.PurchaseAmount - @@ -49,8 +50,7 @@ namespace BBWY.Server.Business.Extensions // orderCost.AfterTotalCost + // orderCost.RefundPurchaseAmount; - orderCost.Profit = orderPayment + - preferentialAmount - + orderCost.Profit = actualAmountProduct - orderCost.RefundAmount - orderCost.PurchaseAmount - orderCost.DeliveryExpressFreight - @@ -77,13 +77,22 @@ namespace BBWY.Server.Business.Extensions /// /// /// - /// + /// + /// + /// /// /// - public static void CalculationSkuGrossProfit(this OrderCostDetail ocd, decimal skuShouldPay, decimal skuPingtaibutie, decimal skuVenderFee, decimal platformCommissionRatio) + public static void CalculationSkuGrossProfit(this OrderCostDetail ocd, + decimal skuShouldPay, + decimal pingTaiChengDanYouHuiQuan, + decimal superRedEnvelope, + decimal xianPinLeiDongQuan, + decimal skuVenderFee, + decimal platformCommissionRatio) { - var koudian = (skuShouldPay - skuVenderFee) * ocd.DeductionQuantity * platformCommissionRatio; - ocd.SkuGrossProfit = (skuShouldPay + skuPingtaibutie) * ocd.DeductionQuantity - + var pingTaiBuTie = pingTaiChengDanYouHuiQuan + superRedEnvelope + xianPinLeiDongQuan; + var koudian = (skuShouldPay + pingTaiBuTie - skuVenderFee) * ocd.DeductionQuantity * platformCommissionRatio; + ocd.SkuGrossProfit = (skuShouldPay + pingTaiBuTie) * ocd.DeductionQuantity - ocd.TotalCost - ocd.DeliveryExpressFreight - koudian; } } diff --git a/BBWY.Server.Business/Order/OrderBusiness.cs b/BBWY.Server.Business/Order/OrderBusiness.cs index ef2e1597..a01dbbb8 100644 --- a/BBWY.Server.Business/Order/OrderBusiness.cs +++ b/BBWY.Server.Business/Order/OrderBusiness.cs @@ -131,6 +131,7 @@ namespace BBWY.Server.Business IsAfterSaleOrder = o.IsAfterSaleOrder, SellerPreferentialAmount = o.SellerPreferentialAmount, PreferentialAmount = o.PreferentialAmount, + PingTaiChengDanYouHuiQuan = o.PingTaiChengDanYouHuiQuan, ContactName = ocs.ContactName, Address = ocs.Address, @@ -603,8 +604,11 @@ namespace BBWY.Server.Business //orderCostDetail.SkuGrossProfit = (shouldPay + pingTaiCoupon) * deductionQuantity - // orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight - // koudian; + orderCostDetail.CalculationSkuGrossProfit(orderSku.ShouldPay ?? 0M, orderSku.PingTaiChengDanYouHuiQuan ?? 0M, + orderSku.SuperRedEnvelope ?? 0M, + orderSku.XianPinLeiDongQuan ?? 0M, orderSku.VenderFee ?? 0M, autoCalculationCostRequest.PlatformCommissionRatio); @@ -678,6 +682,8 @@ namespace BBWY.Server.Business osku.ItemTotal, osku.ShouldPay, osku.PingTaiChengDanYouHuiQuan, + osku.SuperRedEnvelope, + osku.XianPinLeiDongQuan, osku.VenderFee }); var avgPreferential = dbOrder.PreferentialAmount / orderSkuList.Count(); @@ -708,6 +714,8 @@ namespace BBWY.Server.Business orderCostDetail.CalculationSkuGrossProfit(osku.ShouldPay ?? 0M, osku.PingTaiChengDanYouHuiQuan ?? 0M, + osku.SuperRedEnvelope ?? 0M, + osku.XianPinLeiDongQuan ?? 0M, osku.VenderFee ?? 0M, manualCalculationCostRequest.PlatformCommissionRatio); } @@ -971,6 +979,8 @@ namespace BBWY.Server.Business //orderCostDetail.SkuGrossProfit = ((dbOrderSku.ShouldPay ?? 0M) + dbOrderSku.Coupon ?? 0M) * orderCostDetail.DeductionQuantity - orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight; orderCostDetail.CalculationSkuGrossProfit(dbOrderSku.ShouldPay ?? 0M, dbOrderSku.PingTaiChengDanYouHuiQuan ?? 0M, + dbOrderSku.SuperRedEnvelope ?? 0M, + dbOrderSku.XianPinLeiDongQuan ?? 0M, dbOrderSku.VenderFee ?? 0M, relationPurchaseOrderRequestV2.PlatformCommissionRatio); } diff --git a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs index b7a49e64..923740e4 100644 --- a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs +++ b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs @@ -1712,10 +1712,10 @@ namespace BBWY.Server.Business public override JToken GetOrderCouponDetail(QueryOrderCouponDetailRequest request) { var jdClient = GetJdClient(request.AppKey, request.AppSecret); - var req = new PopOrderCoupondetailRequest(); - - req.orderId = Convert.ToInt64(request.OrderId); + //var req = new PopOrderCoupondetailRequest(); + var req = new PopOrderQueryCouponDetaiRequest(); + req.orderId = request.OrderId; var res = jdClient.Execute(req, request.AppToken, DateTime.Now.ToLocalTime()); if (res.Json == null) diff --git a/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 42be525b..a67ca7fb 100644 --- a/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -269,6 +269,8 @@ namespace BBWY.Server.Business orderCostDetail.CalculationSkuGrossProfit(orderSku.ShouldPay ?? 0M, orderSku.PingTaiChengDanYouHuiQuan ?? 0M, + orderSku.SuperRedEnvelope ?? 0M, + orderSku.XianPinLeiDongQuan ?? 0M, orderSku.VenderFee ?? 0M, createOnlinePurchaseOrderRequest.PlatformCommissionRatio); insertOrderCostDetails.Add(orderCostDetail); diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 387ecad6..bb5a54ee 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -305,7 +305,7 @@ namespace BBWY.Server.Business var orderCouponDetailResponse = JsonConvert.DeserializeObject>(orderCouponDetailHttpResult.Content); if (orderCouponDetailResponse.Success) { - var jtoken = orderCouponDetailResponse.Data["jingdong_pop_order_coupondetail_responce"]["couponDetailExternal"]["couponDetailVo"]; + var jtoken = orderCouponDetailResponse.Data["jingdong_pop_order_queryCouponDetai_responce"]["couponDetailExternal"]["couponDetailVo"]; #region 订单合计信息 var orderTotal = new OrderTotalInfo() @@ -392,6 +392,27 @@ namespace BBWY.Server.Business { foreach (var oskuJtoken in skuJArray) { + var skuDiscountInfoList = oskuJtoken["skuDiscountInfoList"] as JArray; + decimal? xianPinLeiDongQuan = 0M; + if (skuDiscountInfoList != null && skuDiscountInfoList.Count > 0) + { + foreach (var item1 in skuDiscountInfoList) + { + var discountTypeList = item1["discountTypeList"] as JArray; + if (discountTypeList != null && discountTypeList.Count() > 0) + { + foreach (var discountType in discountTypeList) + { + if (discountType.Value("type") == 6) + xianPinLeiDongQuan += discountType.Value("amount"); + } + } + } + } + + if (xianPinLeiDongQuan == 0M) + xianPinLeiDongQuan = oskuJtoken.Value("xianPinLeiDongQuan"); + var oskuCF = new OrderSkuCFDetail() { OrderId = orderId, @@ -420,7 +441,7 @@ namespace BBWY.Server.Business TaxFee = oskuJtoken.Value("taxFee"), TuiHuanHuoWuYou = oskuJtoken.Value("tuiHuanHuoWuYou"), VenderFee = oskuJtoken.Value("venderFee"), - XianPinLeiDongQuan = oskuJtoken.Value("xianPinLeiDongQuan"), + XianPinLeiDongQuan = xianPinLeiDongQuan, //数据不齐 XianPinLeiJingQuan = oskuJtoken.Value("xianPinLeiJingQuan"), ZhiFuYingXiaoYouHui = oskuJtoken.Value("zhiFuYingXiaoYouHui") }; @@ -448,9 +469,18 @@ namespace BBWY.Server.Business var storeOrder = orderJToken.Value("storeOrder") ?? string.Empty; var storeId = orderJToken.Value("storeId"); var storageType = ConvertStoreOrder(storeOrder); + + decimal? actualProductAmount = 0M; + decimal? preferentialAmount = 0M; + decimal? pingtaiChengDanYouHuiQuan = 0M; + if (dbOrder == null) { var orderTotalInfo = insertOrderTotalInfoList.FirstOrDefault(x => x.Id == orderId); + //actualProductAmount = orderPayment - freightPrice + pingtaibutie; + pingtaiChengDanYouHuiQuan = (orderTotalInfo?.TotalPingTaiChengDanYouHuiQuan ?? 0M); + actualProductAmount = orderSellerPrice + pingtaiChengDanYouHuiQuan; + preferentialAmount = orderTotalPrice - (actualProductAmount ?? 0M) - freightPrice; dbOrder = new Order() { Id = orderId, @@ -473,7 +503,10 @@ namespace BBWY.Server.Business StoreId = storeId, IsGift = orderSellerPrice == 0M, StorageType = storageType, - PreferentialAmount = (orderTotalInfo?.TotalPingTaiChengDanYouHuiQuan) ?? 0M + //PreferentialAmount = (orderTotalInfo?.TotalPingTaiChengDanYouHuiQuan) ?? 0M, + ActualProductAmount = actualProductAmount ?? 0M, + PreferentialAmount = preferentialAmount ?? 0M, + PingTaiChengDanYouHuiQuan = pingtaiChengDanYouHuiQuan ?? 0M }; if (memoryCache.TryGetValue(orderId, out sDCalculationCostRequest)) @@ -556,6 +589,14 @@ namespace BBWY.Server.Business } else { + var orderTotalInfo = insertOrderTotalInfoList.FirstOrDefault(x => x.Id == orderId); + if (orderTotalInfo == null) + orderTotalInfo = dbOrderTotalList.FirstOrDefault(x => x.Id == orderId); + + pingtaiChengDanYouHuiQuan = (orderTotalInfo?.TotalPingTaiChengDanYouHuiQuan ?? 0M); + actualProductAmount = orderSellerPrice + pingtaiChengDanYouHuiQuan; + preferentialAmount = orderTotalPrice - (actualProductAmount ?? 0M) - freightPrice; + //preferentialAmount = dbOrder.PreferentialAmount; if (storageType != null && dbOrder.StorageType != storageType) dbOrder.StorageType = storageType; @@ -738,19 +779,33 @@ namespace BBWY.Server.Business skuShouldPay = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.ShouldPay; - decimal? pingtaiCoupon = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && + decimal? skuPingTaiChengDanYouHuiQuan = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.PingTaiChengDanYouHuiQuan; - if (pingtaiCoupon == null) - pingtaiCoupon = insertOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.PingTaiChengDanYouHuiQuan; - if (pingtaiCoupon == null) - pingtaiCoupon = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.PingTaiChengDanYouHuiQuan; - - decimal? venderFee = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && + if (skuPingTaiChengDanYouHuiQuan == null) + skuPingTaiChengDanYouHuiQuan = insertOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.PingTaiChengDanYouHuiQuan; + if (skuPingTaiChengDanYouHuiQuan == null) + skuPingTaiChengDanYouHuiQuan = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.PingTaiChengDanYouHuiQuan; + + decimal? skuSuperRedEnvelope = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && + x.SkuId == orderSkuId)?.SuperRedEnvelope; + if (skuSuperRedEnvelope == null) + skuSuperRedEnvelope = insertOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.SuperRedEnvelope; + if (skuSuperRedEnvelope == null) + skuSuperRedEnvelope = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.SuperRedEnvelope; + + decimal? skuXianPinLeiDongQuan = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && + x.SkuId == orderSkuId)?.XianPinLeiDongQuan; + if (skuXianPinLeiDongQuan == null) + skuXianPinLeiDongQuan = insertOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.XianPinLeiDongQuan; + if (skuXianPinLeiDongQuan == null) + skuXianPinLeiDongQuan = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.XianPinLeiDongQuan; + + decimal? skuVenderFee = orderSkuCFDetailList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.VenderFee; - if (venderFee == null) - venderFee = insertOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.VenderFee; - if (venderFee == null) - venderFee = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.VenderFee; + if (skuVenderFee == null) + skuVenderFee = insertOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.VenderFee; + if (skuVenderFee == null) + skuVenderFee = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == orderSkuId)?.VenderFee; #endregion //var itemPrice = orderSkuJToken.Value("jdPrice"); //sku单价 @@ -817,7 +872,11 @@ namespace BBWY.Server.Business // orderCostDetail.TotalCost - orderCostDetail.DeliveryExpressFreight - // koudian; - orderCostDetail.CalculationSkuGrossProfit(skuShouldPay ?? 0M, pingtaiCoupon ?? 0M, venderFee ?? 0M, platformCommissionRatio); + orderCostDetail.CalculationSkuGrossProfit(skuShouldPay ?? 0M, + skuPingTaiChengDanYouHuiQuan ?? 0M, + skuSuperRedEnvelope ?? 0M, + skuXianPinLeiDongQuan ?? 0M, + skuVenderFee ?? 0M, platformCommissionRatio); insertOrderCostDetailList.Add(orderCostDetail); } } @@ -837,7 +896,7 @@ namespace BBWY.Server.Business if (dbOrder.OrderTotalPrice != 0) orderCost.CalculationOrderProfitAndCost(dbOrder, null); else - orderCost.CalculationOrderProfitAndCost(dbOrder.OrderPayment, dbOrder.PreferentialAmount, dbOrder.FreightPrice, null); + orderCost.CalculationOrderProfitAndCost(actualProductAmount ?? 0M, orderSellerPrice, pingtaiChengDanYouHuiQuan ?? 0M, null); insertOrderCostList.Add(orderCost); #endregion @@ -867,7 +926,9 @@ namespace BBWY.Server.Business orderTotalPrice != dbOrder.OrderTotalPrice || storeOrder != dbOrder.StoreOrder || storeId != dbOrder.StoreId || - (dbOrderTotal != null && dbOrderTotal.TotalPingTaiChengDanYouHuiQuan != dbOrder.PreferentialAmount)) + actualProductAmount != dbOrder.ActualProductAmount || + preferentialAmount != dbOrder.PreferentialAmount || + pingtaiChengDanYouHuiQuan != dbOrder.PingTaiChengDanYouHuiQuan) { var updateSql = fsql.Update(orderId).SetIf(orderState != null && orderState != dbOrder.OrderState, o => o.OrderState, orderState) .SetIf(buyerRemark != dbOrder.BuyerRemark, o => o.BuyerRemark, buyerRemark) @@ -883,8 +944,10 @@ namespace BBWY.Server.Business .SetIf(orderSellerPrice > 0M && dbOrder.IsGift == true, o => o.IsGift, false) .SetIf(storeOrder != dbOrder.StoreOrder, o => o.StoreOrder, storeOrder) .SetIf(storeOrder != dbOrder.StoreOrder, o => o.StorageType, storageType) - .SetIf(dbOrderTotal != null && dbOrderTotal.TotalPingTaiChengDanYouHuiQuan != dbOrder.PreferentialAmount, o => o.PreferentialAmount, dbOrderTotal?.TotalPingTaiChengDanYouHuiQuan) - .SetIf(storeId != dbOrder.StoreId, o => o.StoreId, storeId); + .SetIf(storeId != dbOrder.StoreId, o => o.StoreId, storeId) + .SetIf(actualProductAmount != dbOrder.ActualProductAmount, o => o.ActualProductAmount, actualProductAmount) + .SetIf(preferentialAmount != dbOrder.PreferentialAmount, o => o.PreferentialAmount, preferentialAmount) + .SetIf(pingtaiChengDanYouHuiQuan != dbOrder.PingTaiChengDanYouHuiQuan, o => o.PingTaiChengDanYouHuiQuan, pingtaiChengDanYouHuiQuan); updateOrderList.Add(updateSql); } #endregion diff --git a/BBWY.Server.Business/TestBusiness.cs b/BBWY.Server.Business/TestBusiness.cs index 6c79201e..3069f8bd 100644 --- a/BBWY.Server.Business/TestBusiness.cs +++ b/BBWY.Server.Business/TestBusiness.cs @@ -187,6 +187,7 @@ namespace BBWY.Server.Business fsql.Delete(orderIdList).ExecuteAffrows(); fsql.Delete().Where(on => orderIdList.Contains(on.OrderId)).ExecuteAffrows(); fsql.Delete().Where(op => orderIdList.Contains(op.OrderId)).ExecuteAffrows(); + fsql.Update().Set(osku => osku.ShouldPay, 0).Where(osku => orderIdList.Contains(osku.OrderId)).ExecuteAffrows(); }); foreach (var orderId in orderIdList) @@ -216,15 +217,20 @@ namespace BBWY.Server.Business foreach (var orderSku in currentOrderSkuList) { var ocd = currentOrderCostDetailList.FirstOrDefault(x => x.SkuId == orderSku.SkuId); - //ocd.SkuGrossProfit = ((orderSku.ShouldPay ?? 0M) + (orderSku.Coupon ?? 0M)) * ocd.DeductionQuantity - ocd.TotalCost - ocd.DeliveryExpressFreight; - ocd.CalculationSkuGrossProfit(orderSku.ShouldPay ?? 0M, orderSku.PingTaiChengDanYouHuiQuan ?? 0M, orderSku.VenderFee ?? 0M, shop.PlatformCommissionRatio ?? 0.05M); + + ocd.CalculationSkuGrossProfit(orderSku.ShouldPay ?? 0M, + orderSku.PingTaiChengDanYouHuiQuan ?? 0M, + orderSku.SuperRedEnvelope ?? 0M, + orderSku.XianPinLeiDongQuan ?? 0M, + orderSku.VenderFee ?? 0M, + shop.PlatformCommissionRatio ?? 0.05M); var update = fsql.Update(ocd.Id).Set(x => x.SkuGrossProfit, ocd.SkuGrossProfit); updateOrderCostDetailList.Add(update); } var currentAfterOrderList = afterOrderList.Where(af => af.OrderId == order.Id).ToList(); var orderTotal = orderTotalList.FirstOrDefault(on => on.Id == order.Id); var orderCost = orderCostList.FirstOrDefault(oc => oc.OrderId == order.Id); - orderCost.CalculationOrderProfitAndCost(order.OrderPayment, + orderCost.CalculationOrderProfitAndCost(order.ActualProductAmount ?? 0M, orderTotal.TotalPingTaiChengDanYouHuiQuan ?? 0M, orderTotal.TotalVenderFee ?? 0M, currentAfterOrderList); diff --git a/BBWY.Server.Model/Db/Order/Order.cs b/BBWY.Server.Model/Db/Order/Order.cs index e6649953..0fc9fbd0 100644 --- a/BBWY.Server.Model/Db/Order/Order.cs +++ b/BBWY.Server.Model/Db/Order/Order.cs @@ -52,13 +52,13 @@ namespace BBWY.Server.Model.Db public decimal OrderSellerPrice { get; set; } = 0.00M; /// - /// 平台补贴 + /// 优惠金额(订单总价-订单实收货款-用户支付运费) /// [Column(DbType = "decimal(20,2)")] public decimal PreferentialAmount { get; set; } = 0.00M; /// - /// 商家优惠金额(商家承担) + /// 商家优惠金额(商家承担)(废弃) /// [Column(DbType = "decimal(20,2)")] public decimal SellerPreferentialAmount { get; set; } = 0.00M; @@ -185,6 +185,18 @@ namespace BBWY.Server.Model.Db [Column(DbType = "bit")] public bool IsGift { get; set; } = false; + /// + /// 订单实收货款 (orderSellerPrice)+平台承担优惠券(PingTaiChengDanYouHuiQuan) + /// + [Column(DbType = "decimal(18, 2)")] + public decimal? ActualProductAmount { get; set; } = 0.00M; + + /// + /// 平台承担优惠券 + /// + [Column(DbType = "decimal(18, 2)")] + public decimal? PingTaiChengDanYouHuiQuan { get; set; } = 0.00M; + #region 订单成本 /// /// 平台扣点金额 diff --git a/BBWY.Server.Model/Dto/Response/Order/OrderResponse.cs b/BBWY.Server.Model/Dto/Response/Order/OrderResponse.cs index 6cd6bf12..5e732835 100644 --- a/BBWY.Server.Model/Dto/Response/Order/OrderResponse.cs +++ b/BBWY.Server.Model/Dto/Response/Order/OrderResponse.cs @@ -72,13 +72,23 @@ namespace BBWY.Server.Model.Dto /// public decimal OrderPayment { get; set; } + /// + /// 订单实收货款 (orderSellerPrice)+平台承担优惠券(PingTaiChengDanYouHuiQuan) + /// + public decimal? ActualProductAmount { get; set; } = 0.00M; + + /// + /// 平台承担优惠券 + /// + public decimal? PingTaiChengDanYouHuiQuan { get; set; } = 0.00M; + /// /// 商品运费(用户付) /// public decimal FreightPrice { get; set; } /// - /// 平台补贴 + /// 优惠金额 订单总价-订单实收货款-用户支付运费 /// public decimal PreferentialAmount { get; set; } From cb8a95380d62bdbb30703010b72163775961f71d Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 14 Nov 2023 11:05:42 +0800 Subject: [PATCH 19/19] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BC=98=E6=83=A0?= =?UTF-8?q?=E5=85=AC=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sync/OrderSyncBusiness.cs | 8 ++- BBWY.Server.Business/TestBusiness.cs | 56 +++++++++++-------- 2 files changed, 39 insertions(+), 25 deletions(-) diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index bb5a54ee..e60ea19b 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -479,8 +479,9 @@ namespace BBWY.Server.Business var orderTotalInfo = insertOrderTotalInfoList.FirstOrDefault(x => x.Id == orderId); //actualProductAmount = orderPayment - freightPrice + pingtaibutie; pingtaiChengDanYouHuiQuan = (orderTotalInfo?.TotalPingTaiChengDanYouHuiQuan ?? 0M); - actualProductAmount = orderSellerPrice + pingtaiChengDanYouHuiQuan; - preferentialAmount = orderTotalPrice - (actualProductAmount ?? 0M) - freightPrice; + actualProductAmount = orderSellerPrice + pingtaiChengDanYouHuiQuan; + //preferentialAmount = orderTotalPrice - (actualProductAmount ?? 0M) - freightPrice; + preferentialAmount = orderTotalPrice - (actualProductAmount ?? 0M); dbOrder = new Order() { Id = orderId, @@ -595,7 +596,8 @@ namespace BBWY.Server.Business pingtaiChengDanYouHuiQuan = (orderTotalInfo?.TotalPingTaiChengDanYouHuiQuan ?? 0M); actualProductAmount = orderSellerPrice + pingtaiChengDanYouHuiQuan; - preferentialAmount = orderTotalPrice - (actualProductAmount ?? 0M) - freightPrice; + //preferentialAmount = orderTotalPrice - (actualProductAmount ?? 0M) - freightPrice; + preferentialAmount = orderTotalPrice - (actualProductAmount ?? 0M); //preferentialAmount = dbOrder.PreferentialAmount; if (storageType != null && dbOrder.StorageType != storageType) diff --git a/BBWY.Server.Business/TestBusiness.cs b/BBWY.Server.Business/TestBusiness.cs index 3069f8bd..1850e817 100644 --- a/BBWY.Server.Business/TestBusiness.cs +++ b/BBWY.Server.Business/TestBusiness.cs @@ -190,11 +190,17 @@ namespace BBWY.Server.Business fsql.Update().Set(osku => osku.ShouldPay, 0).Where(osku => orderIdList.Contains(osku.OrderId)).ExecuteAffrows(); }); - foreach (var orderId in orderIdList) + for (var i = 0; i < orderIdList.Count(); i++) { + var orderId = orderIdList[i]; orderSyncBusiness.SyncOrder(shop, orderId); - Thread.Sleep(1000); + Console.WriteLine($"shopProgress {shopIndex}/{shopList.Count()} {shop.ShopName},orderProgress {i + 1}/{orderIdList.Count()}"); } + // foreach (var orderId in orderIdList) + // { + // orderSyncBusiness.SyncOrder(shop, orderId); + // Thread.Sleep(1000); + // } var orderList = fsql.Select(orderIdList).ToList(); var orderSkuList = fsql.Select().Where(osku => osku.Price > 0 && orderIdList.Contains(osku.OrderId)).ToList(); @@ -217,33 +223,39 @@ namespace BBWY.Server.Business foreach (var orderSku in currentOrderSkuList) { var ocd = currentOrderCostDetailList.FirstOrDefault(x => x.SkuId == orderSku.SkuId); - - ocd.CalculationSkuGrossProfit(orderSku.ShouldPay ?? 0M, - orderSku.PingTaiChengDanYouHuiQuan ?? 0M, - orderSku.SuperRedEnvelope ?? 0M, - orderSku.XianPinLeiDongQuan ?? 0M, - orderSku.VenderFee ?? 0M, - shop.PlatformCommissionRatio ?? 0.05M); - var update = fsql.Update(ocd.Id).Set(x => x.SkuGrossProfit, ocd.SkuGrossProfit); - updateOrderCostDetailList.Add(update); + if (ocd != null) + { + ocd.CalculationSkuGrossProfit(orderSku.ShouldPay ?? 0M, + orderSku.PingTaiChengDanYouHuiQuan ?? 0M, + orderSku.SuperRedEnvelope ?? 0M, + orderSku.XianPinLeiDongQuan ?? 0M, + orderSku.VenderFee ?? 0M, + shop.PlatformCommissionRatio ?? 0.05M); + var update = fsql.Update(ocd.Id).Set(x => x.SkuGrossProfit, ocd.SkuGrossProfit); + updateOrderCostDetailList.Add(update); + } } var currentAfterOrderList = afterOrderList.Where(af => af.OrderId == order.Id).ToList(); var orderTotal = orderTotalList.FirstOrDefault(on => on.Id == order.Id); var orderCost = orderCostList.FirstOrDefault(oc => oc.OrderId == order.Id); - orderCost.CalculationOrderProfitAndCost(order.ActualProductAmount ?? 0M, - orderTotal.TotalPingTaiChengDanYouHuiQuan ?? 0M, - orderTotal.TotalVenderFee ?? 0M, - currentAfterOrderList); - if (updateOrderCostDetailList.Count() > 0) + if (orderCost != null && orderTotal != null) { - fsql.Transaction(() => + orderCost.CalculationOrderProfitAndCost(order.ActualProductAmount ?? 0M, + orderTotal.TotalPingTaiChengDanYouHuiQuan ?? 0M, + orderTotal.TotalVenderFee ?? 0M, + currentAfterOrderList); + if (updateOrderCostDetailList.Count() > 0) { - foreach (var update in updateOrderCostDetailList) - update.ExecuteAffrows(); - fsql.Update(orderCost.OrderId).Set(oc => oc.Profit, orderCost.Profit) - .Set(oc => oc.PlatformCommissionAmount, orderCost.PlatformCommissionAmount).ExecuteAffrows(); - }); + fsql.Transaction(() => + { + foreach (var update in updateOrderCostDetailList) + update.ExecuteAffrows(); + fsql.Update(orderCost.OrderId).Set(oc => oc.Profit, orderCost.Profit) + .Set(oc => oc.PlatformCommissionAmount, orderCost.PlatformCommissionAmount).ExecuteAffrows(); + }); + } } + } } }