diff --git a/BBWY.Server.API/Controllers/TestController.cs b/BBWY.Server.API/Controllers/TestController.cs index f7a33fea..6a5d2d0c 100644 --- a/BBWY.Server.API/Controllers/TestController.cs +++ b/BBWY.Server.API/Controllers/TestController.cs @@ -23,5 +23,11 @@ namespace BBWY.Server.API.Controllers testBusiness.StatisticsProduct(); } + + [HttpPost] + public void XiuFu() + { + testBusiness.XiuFu(); + } } } diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index b055c426..ea28ca2c 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -442,6 +442,7 @@ namespace BBWY.Server.Business CouponPrice = orderCouponJToken.Value("couponPrice") }); } + dbOrder.PreferentialAmount = preferentialAmount; } } #endregion diff --git a/BBWY.Server.Business/TestBusiness.cs b/BBWY.Server.Business/TestBusiness.cs index 23a9a1b3..c4398cee 100644 --- a/BBWY.Server.Business/TestBusiness.cs +++ b/BBWY.Server.Business/TestBusiness.cs @@ -8,6 +8,7 @@ using Microsoft.Extensions.Options; using System; using System.Collections.Generic; using System.IO; +using System.Linq; namespace BBWY.Server.Business { @@ -86,6 +87,48 @@ namespace BBWY.Server.Business var filePath = Path.Combine(AppContext.BaseDirectory, "result.csv"); File.WriteAllLines(filePath, list, System.Text.Encoding.UTF8); } + + public void XiuFu() + { + var st = DateTime.Parse("2023-09-01"); + var orderList = fsql.Select().InnerJoin((oc, o) => oc.OrderId == o.Id) + .Where((oc, o) => o.OrderState != Enums.OrderState.已取消 && o.StartTime >= st && o.PreferentialAmount == 0) + .GroupBy((oc, o) => oc.OrderId) + .ToList(g => new Order + { + Id = g.Key, + PreferentialAmount = g.Sum(g.Value.Item1.CouponPrice) + }); + + List> updateOrderList = new List>(); + var totalCount = orderList.Count(); + for (var i = 0; i < totalCount; i++) + { + var order = orderList[i]; + updateOrderList.Add(fsql.Update(order.Id).Set(o => o.PreferentialAmount, order.PreferentialAmount)); + if (updateOrderList.Count() == 50) + { + Console.WriteLine($"执行数据库更新 {i}/{totalCount}"); + fsql.Transaction(() => + { + foreach (var update in updateOrderList) + update.ExecuteAffrows(); + }); + updateOrderList.Clear(); + } + } + + if (updateOrderList.Count() > 0) + { + fsql.Transaction(() => + { + foreach (var update in updateOrderList) + update.ExecuteAffrows(); + }); + updateOrderList.Clear(); + } + Console.WriteLine("更新完毕"); + } } public class JPCount