From fb430bfddf2f1c424e3800f037f1e7c64365c45e Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 30 Jul 2023 14:32:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AE=A2=E5=8D=95=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/DataRepairController.cs | 9 ++++ .../DataRepair/DataRepairBusiness.cs | 43 +++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index da563c3..027cc64 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -33,5 +33,14 @@ namespace BBWYB.Server.API.Controllers { dataRepairBusiness.SupplementPurchaserInfo(); } + + /// + /// 修复订单Sku成本 + /// + [HttpPost] + public void SupplementOrderSkuCost() + { + dataRepairBusiness.SupplementOrderSkuCost(); + } } } diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index 93f4187..d396495 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -92,5 +92,48 @@ namespace BBWYB.Server.Business }); } } + + public void SupplementOrderSkuCost() + { + var orderSkuCostList = fsql.Select().InnerJoin((ocd, o) => ocd.OrderId == o.Id) + .Where((ocd, o) => ocd.IsEnabled == true && + o.IsPurchased == true && + o.OrderState != Enums.OrderState.已取消 && + !fsql.Select().As("osc").Where(osc => osc.OrderId == o.Id).Any()) + .GroupBy((ocd, o) => new { ocd.OrderId, ocd.SkuId }) + .ToList(g => new + { + OrderId = g.Key.OrderId, + SkuId = g.Key.SkuId, + SkuAmount = g.Sum(g.Value.Item1.SkuAmount), + PurchaseFreight = g.Sum(g.Value.Item1.PurchaseFreight) + }); + var orderIds = orderSkuCostList.Select(x => x.OrderId).Distinct().ToList(); + var orderSkuList = fsql.Select().Where(osku => orderIds.Contains(osku.OrderId)).ToList(); + + var insertOrderSkuCostList = new List(); + foreach (var osc in orderSkuCostList) + { + var osku = orderSkuList.FirstOrDefault(osku => osku.SkuId == osc.SkuId && osku.OrderId == osc.OrderId); + var insert = new OrderSkuCost() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + DeliveryExpressFreight = 0M, + OrderId = osc.OrderId, + SkuId = osc.SkuId, + OutPackAmount = 0M, + PurchaseFreight = osc.PurchaseFreight, + SkuAmount = osc.SkuAmount, + TotalCost = osc.PurchaseFreight + osc.SkuAmount, + Profit = ((osku.Price * osku.ItemTotal) ?? 0M) - osc.PurchaseFreight - osc.SkuAmount + }; + insertOrderSkuCostList.Add(insert); + } + fsql.Transaction(() => + { + fsql.Insert(insertOrderSkuCostList).ExecuteAffrows(); + }); + } } }