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; }