From e79f5e164f302a1ab4d8e048dfdbce065af12fc7 Mon Sep 17 00:00:00 2001 From: JianWeie Date: Thu, 14 Oct 2021 11:35:39 +0800 Subject: [PATCH] =?UTF-8?q?##=201.0.7=EF=BC=882021-10-14=EF=BC=89=201?= =?UTF-8?q?=E3=80=81=E3=80=90=E4=BF=AE=E5=A4=8D=E3=80=91=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=8A=A8=E6=80=81=E8=A1=A8=E8=BE=BE=E5=BC=8F?= =?UTF-8?q?=E7=BB=84=E5=90=88Expression.And=E4=B8=BAExpression.AndAlso?= =?UTF-8?q?=E3=80=82=202=E3=80=81=E3=80=90=E5=8D=87=E7=BA=A7=E3=80=91?= =?UTF-8?q?=E5=8D=87=E7=BA=A7=E5=A4=9A=E4=B8=AA=E7=BB=84=E4=BB=B6=E5=88=B0?= =?UTF-8?q?=E6=9C=80=E6=96=B0=E7=89=88=E6=9C=AC=E3=80=82=203=E3=80=81?= =?UTF-8?q?=E3=80=90=E4=BC=98=E5=8C=96=E3=80=91=E5=8E=BB=E9=99=A4=E5=8F=91?= =?UTF-8?q?=E8=B4=A7=E5=8D=95=E7=BB=9F=E8=AE=A17=E5=A4=A9=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E3=80=81=E6=94=AF=E4=BB=98=E5=8D=957=E5=A4=A9?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E3=80=81=E6=8C=89=E5=A4=A9=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=96=B0=E4=BC=9A=E5=91=98=E4=B8=89=E4=B8=AA=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?Sql=E6=89=A7=E8=A1=8C=E8=AF=AD=E5=8F=A5=EF=BC=8C=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2=E4=B8=BA=E4=BD=BF=E7=94=A8SqlSugar=E6=A3=80=E7=B4=A2?= =?UTF-8?q?=E8=AF=AD=E5=8F=A5=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entities/Expression/PredicateBuilder.cs | 2 +- .../Bill/CoreCmsBillDeliveryRepository.cs | 35 +++++++------------ .../Bill/CoreCmsBillPaymentsRepository.cs | 35 +++++++------------ .../User/CoreCmsUserRepository.cs | 35 +++++++------------ 4 files changed, 38 insertions(+), 69 deletions(-) diff --git a/CoreCms.Net.Model/Entities/Expression/PredicateBuilder.cs b/CoreCms.Net.Model/Entities/Expression/PredicateBuilder.cs index 0af59b1..7961e1a 100644 --- a/CoreCms.Net.Model/Entities/Expression/PredicateBuilder.cs +++ b/CoreCms.Net.Model/Entities/Expression/PredicateBuilder.cs @@ -51,7 +51,7 @@ namespace CoreCms.Net.Model.Entities.Expression public static Expression> And(this Expression> first, Expression> second) { - return first.Compose(second, System.Linq.Expressions.Expression.And); + return first.Compose(second, System.Linq.Expressions.Expression.AndAlso); } public static Expression> Or(this Expression> first, diff --git a/CoreCms.Net.Repository/Bill/CoreCmsBillDeliveryRepository.cs b/CoreCms.Net.Repository/Bill/CoreCmsBillDeliveryRepository.cs index eab1948..21a3143 100644 --- a/CoreCms.Net.Repository/Bill/CoreCmsBillDeliveryRepository.cs +++ b/CoreCms.Net.Repository/Bill/CoreCmsBillDeliveryRepository.cs @@ -41,30 +41,21 @@ namespace CoreCms.Net.Repository /// public async Task> Statistics() { - var dt = DateTime.Now.AddDays(-8).ToString("yyyy-MM-dd 00:00:00"); + var dt = DateTime.Now.AddDays(-8); - var sqlStr = string.Empty; - string dbTypeString = AppSettingsConstVars.DbDbType; - if (dbTypeString == DbType.SqlServer.ToString()) - { - sqlStr = @"SELECT count(1) AS nums,CONVERT(varchar(100),createTime, 23) AS day - FROM CoreCmsBillDelivery - WHERE createTime >= '" + dt + @"' - GROUP BY CONVERT(varchar(100),createTime, 23)"; - } - else if (dbTypeString == DbType.MySql.ToString()) - { - sqlStr = @"SELECT count(1) AS nums,date(createTime) AS day - FROM CoreCmsBillDelivery - WHERE createTime >= '" + dt + @"' - GROUP BY date(createTime)"; - } + var list = await DbClient.Queryable() + .Where(p => p.createTime >= dt) + .Select(it => new + { + it.deliveryId, + createTime = it.createTime.Date + }) + .MergeTable() + .GroupBy(it => it.createTime) + .Select(it => new StatisticsOut { day = it.createTime.ToString("yyyy-MM-dd"), nums = SqlFunc.AggregateCount(it.deliveryId) }) + .ToListAsync(); - if (string.IsNullOrEmpty(sqlStr)) - { - return null; - } - return await DbClient.SqlQueryable(sqlStr).ToListAsync(); + return list; } } diff --git a/CoreCms.Net.Repository/Bill/CoreCmsBillPaymentsRepository.cs b/CoreCms.Net.Repository/Bill/CoreCmsBillPaymentsRepository.cs index d2d20ca..d69dc92 100644 --- a/CoreCms.Net.Repository/Bill/CoreCmsBillPaymentsRepository.cs +++ b/CoreCms.Net.Repository/Bill/CoreCmsBillPaymentsRepository.cs @@ -41,31 +41,20 @@ namespace CoreCms.Net.Repository /// public async Task> Statistics() { - var dt = DateTime.Now.AddDays(-8).ToString("yyyy-MM-dd 00:00:00"); + var dt = DateTime.Now.AddDays(-8); - var sqlStr = string.Empty; - string dbTypeString = AppSettingsConstVars.DbDbType; - if (dbTypeString == DbType.SqlServer.ToString()) - { - sqlStr = @"SELECT count(1) AS nums,CONVERT(varchar(100),createTime, 23) AS day - FROM CoreCmsBillPayments - WHERE createTime >= '" + dt + @"' AND status = " + (int)GlobalEnumVars.BillPaymentsStatus.Payed + @" AND type=" + (int)GlobalEnumVars.BillPaymentsType.Order + @" - GROUP BY CONVERT(varchar(100),createTime, 23)"; - } - else if (dbTypeString == DbType.MySql.ToString()) - { - sqlStr = @"SELECT count(1) AS nums,date(createTime) AS day - FROM CoreCmsBillPayments - WHERE createTime >= '" + dt + @"' AND status = " + (int)GlobalEnumVars.BillPaymentsStatus.Payed + @" AND type=" + (int)GlobalEnumVars.BillPaymentsType.Order + @" - GROUP BY date(createTime)"; - } + var list = await DbClient.Queryable() + .Where(p => p.createTime >= dt && p.status == (int)GlobalEnumVars.BillPaymentsStatus.Payed && p.type == (int)GlobalEnumVars.BillPaymentsType.Order) + .Select(it => new + { + it.paymentId, + createTime = it.createTime.Date + }) + .MergeTable() + .GroupBy(it => it.createTime) + .Select(it => new StatisticsOut { day = it.createTime.ToString("yyyy-MM-dd"), nums = SqlFunc.AggregateCount(it.paymentId) }) + .ToListAsync(); - if (string.IsNullOrEmpty(sqlStr)) - { - return null; - } - - var list = await DbClient.SqlQueryable(sqlStr).ToListAsync(); return list; } diff --git a/CoreCms.Net.Repository/User/CoreCmsUserRepository.cs b/CoreCms.Net.Repository/User/CoreCmsUserRepository.cs index 295704d..0fc8bb9 100644 --- a/CoreCms.Net.Repository/User/CoreCmsUserRepository.cs +++ b/CoreCms.Net.Repository/User/CoreCmsUserRepository.cs @@ -150,30 +150,19 @@ namespace CoreCms.Net.Repository /// public async Task> Statistics(int day) { - var dt = DateTime.Now.AddDays(-day).ToString("yyyy-MM-dd"); + var dt = DateTime.Now.AddDays(-day); + var list = await DbClient.Queryable() + .Where(p => p.createTime >= dt) + .Select(it => new + { + it.id, + createTime = it.createTime.Date + }) + .MergeTable() + .GroupBy(it => it.createTime) + .Select(it => new StatisticsOut { day = it.createTime.ToString("yyyy-MM-dd"), nums = SqlFunc.AggregateCount(it.id) }) + .ToListAsync(); - var sqlStr = string.Empty; - string dbTypeString = AppSettingsConstVars.DbDbType; - if (dbTypeString == DbType.SqlServer.ToString()) - { - sqlStr = @"SELECT count(1) AS nums,CONVERT(varchar(100),createTime, 23) AS day - FROM CoreCmsUser - WHERE createTime > '" + dt + @"' - GROUP BY CONVERT(varchar(100),createTime, 23)"; - } - else if (dbTypeString == DbType.MySql.ToString()) - { - sqlStr = @"SELECT count(1) AS nums,date(createTime) AS day - FROM CoreCmsUser - WHERE createTime > '" + dt + @"' - GROUP BY date(createTime)"; - } - if (string.IsNullOrEmpty(sqlStr)) - { - return null; - } - - var list = await DbClient.SqlQueryable(sqlStr).ToListAsync(); return list; }