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();
+ });
+ }
}
}