/*********************************************************************** * Project: baifenBinfa * ProjectName: 百分兵法管理系统 * Web: http://chuanyin.com * Author: * Email: * CreateTime: 202403/02 * Description: 暂无 ***********************************************************************/ using System; using System.Collections.Generic; using System.Threading.Tasks; using CoreCms.Net.Configuration; using CoreCms.Net.IRepository; using CoreCms.Net.IRepository.UnitOfWork; using CoreCms.Net.IServices; using CoreCms.Net.Model.Entities; using CoreCms.Net.Model.ViewModels.Basics; using CoreCms.Net.Model.ViewModels.Echarts; using CoreCms.Net.Model.ViewModels.UI; using CoreCms.Net.Utility.Helper; using SqlSugar; namespace CoreCms.Net.Services { /// /// 报表 接口实现 /// public class CoreCmsReportsServices : BaseServices, ICoreCmsReportsServices { private readonly ICoreCmsReportsRepository _dal; private readonly IUnitOfWork _unitOfWork; public CoreCmsReportsServices(IUnitOfWork unitOfWork, ICoreCmsReportsRepository dal) { this._dal = dal; base.BaseDal = dal; _unitOfWork = unitOfWork; } /// /// 订单报表 /// /// 数量 /// 查询条件 /// 查询值 /// 开始时间 /// 筛选字段createTime/paymentTime /// public List GetOrderMark(int num, string where, int section, DateTime sTime, string joinVal) { var sqlStr = string.Empty; string dbTypeString = AppSettingsConstVars.DbDbType; if (dbTypeString == DbType.SqlServer.ToString()) { sqlStr = @"SELECT tmp_x.number , ISNULL(SUM(o.orderAmount), 0) AS val , COUNT(o.orderId) AS num FROM ( ( SELECT number FROM MASTER..spt_values WHERE TYPE = 'P' AND number >= 0 AND number <= " + num + @" ) tmp_x LEFT OUTER JOIN ( SELECT * FROM CoreCmsOrder WHERE isdel=0 " + where + @" ) o ON tmp_x.number = DATEDIFF(" + (section == 3600 ? "HOUR" : "DAY") + ", '" + sTime.ToString("yyyy-MM-dd HH:mm:ss") + @"', o." + joinVal + @") ) GROUP BY tmp_x.number"; } else if (dbTypeString == DbType.MySql.ToString()) { sqlStr = @"select tmp_x.x,ifnull(sum(o.orderAmount),0) as val,count(o.orderId) as num from (SELECT @xi:=@xi+1 as x from (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10) x1, (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10) x2, (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10) x3, (SELECT @xi:=-1) x0 limit 0," + num + @") tmp_x left join ( select * from CoreCmsOrder where 1 = 1 " + where + @" ) o on tmp_x.x = ((unix_timestamp(o." + joinVal + @") - " + CommonHelper.ConvertDateTimeToInt(sTime) + @") div(" + section + @")) group by tmp_x.x "; } Console.WriteLine(sqlStr); var sp = new List(); var list = _dal.SqlQuery(sqlStr, sp); return list; } /// /// 支付单报表 /// /// 数量 /// 查询条件 /// 查询值 /// 开始时间 /// 筛选字段createTime/paymentTime /// public List GetPaymentsMark(int num, string where, int section, DateTime sTime, string joinVal) { var sqlStr = string.Empty; string dbTypeString = AppSettingsConstVars.DbDbType; if (dbTypeString == DbType.SqlServer.ToString()) { sqlStr = @"SELECT tmp_x.number , ISNULL(SUM(o.money), 0) AS val , COUNT(o.paymentId) AS num FROM ( ( SELECT number FROM MASTER..spt_values WHERE TYPE = 'P' AND number >= 0 AND number <= " + num + @" ) tmp_x LEFT OUTER JOIN ( SELECT * FROM CoreCmsBillPayments WHERE 1=1 " + where + @" ) o ON tmp_x.number = DATEDIFF(" + (section == 3600 ? "HOUR" : "DAY") + ", '" + sTime.ToString("yyyy-MM-dd HH:mm:ss") + @"', o." + joinVal + @") ) GROUP BY tmp_x.number"; } else if (dbTypeString == DbType.MySql.ToString()) { sqlStr = @"select tmp_x.x,ifnull(sum(o.money),0) as val,count(o.paymentId) as num from (SELECT @xi:=@xi+1 as x from (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10) x1, (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10) x2, (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10) x3, (SELECT @xi:=-1) x0 limit 0," + num + @") tmp_x left join ( select * from CoreCmsBillPayments where 1 = 1 " + where + @" ) o on tmp_x.x = ((unix_timestamp(o." + joinVal + @") - " + CommonHelper.ConvertDateTimeToInt(sTime) + @") div(" + section + @")) group by tmp_x.x "; } var sp = new List(); var list = _dal.SqlQuery(sqlStr, sp); return list; } /// /// 退款单报表 /// /// 数量 /// 查询条件 /// 查询值 /// 开始时间 /// 筛选字段createTime/paymentTime /// public List GetRefundMark(int num, string where, int section, DateTime sTime, string joinVal) { var sqlStr = string.Empty; string dbTypeString = AppSettingsConstVars.DbDbType; if (dbTypeString == DbType.SqlServer.ToString()) { sqlStr = @"SELECT tmp_x.number , ISNULL(SUM(o.money), 0) AS val , COUNT(o.refundId) AS num FROM ( ( SELECT number FROM MASTER..spt_values WHERE TYPE = 'P' AND number >= 0 AND number <= " + num + @" ) tmp_x LEFT OUTER JOIN ( SELECT * FROM CoreCmsBillRefund WHERE 1=1 " + where + @" ) o ON tmp_x.number = DATEDIFF(" + (section == 3600 ? "HOUR" : "DAY") + ", '" + sTime.ToString("yyyy-MM-dd HH:mm:ss") + @"', o." + joinVal + @") ) GROUP BY tmp_x.number"; } else if (dbTypeString == DbType.MySql.ToString()) { sqlStr = @"select tmp_x.x,ifnull(sum(o.money),0) as val,count(o.refundId) as num from (SELECT @xi:=@xi+1 as x from (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10) x1, (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10) x2, (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10) x3, (SELECT @xi:=-1) x0 limit 0," + num + @") tmp_x left join( select* from CoreCmsBillRefund where 1 = 1 " + where + @" ) o on tmp_x.x = ((unix_timestamp(o." + joinVal + @") - " + CommonHelper.ConvertDateTimeToInt(sTime) + @") div(" + section + @")) group by tmp_x.x "; } var sp = new List(); var list = _dal.SqlQuery(sqlStr, sp); return list; } /// /// 用户提现报表 /// /// 数量 /// 查询条件 /// 查询值 /// 开始时间 /// 筛选字段createTime/paymentTime /// public List GetTocashMark(int num, string where, int section, DateTime sTime, string joinVal) { var sqlStr = string.Empty; string dbTypeString = AppSettingsConstVars.DbDbType; if (dbTypeString == DbType.SqlServer.ToString()) { sqlStr = @"SELECT tmp_x.number , ISNULL(SUM(o.money), 0) AS val , COUNT(o.id) AS num FROM ( ( SELECT number FROM MASTER..spt_values WHERE TYPE = 'P' AND number >= 0 AND number <= " + num + @" ) tmp_x LEFT OUTER JOIN ( SELECT * FROM CoreCmsUserTocash WHERE 1=1 " + where + @" ) o ON tmp_x.number = DATEDIFF(" + (section == 3600 ? "HOUR" : "DAY") + ", '" + sTime.ToString("yyyy-MM-dd HH:mm:ss") + @"', o." + joinVal + @") ) GROUP BY tmp_x.number"; } else if (dbTypeString == DbType.MySql.ToString()) { sqlStr = @"select tmp_x.x,ifnull(sum(o.money),0) as val,count(o.id) as num from (SELECT @xi:=@xi+1 as x from (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10) x1, (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10) x2, (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10) x3, (SELECT @xi:=-1) x0 limit 0," + num + @") tmp_x left join ( select * from CoreCmsUserTocash where 1 = 1 " + where + @" ) o on tmp_x.x = ((unix_timestamp(o." + joinVal + @") - " + CommonHelper.ConvertDateTimeToInt(sTime) + @") div(" + section + @")) group by tmp_x.x "; } var sp = new List(); var list = _dal.SqlQuery(sqlStr, sp); return list; } /// /// 获取订单销量查询返回结果 /// /// /// /// /// /// /// /// /// public async Task> GetGoodsSalesVolumes(string start, string end, string filter, string filterSed, string thesort, int pageIndex = 1, int pageSize = 5000) { return await _dal.GetGoodsSalesVolumes(start, end, filter, filterSed, thesort, pageIndex, pageSize); } /// /// 获取商品收藏查询返回结果 /// /// /// /// /// /// /// public async Task> GetGoodsCollections(string start, string end, string thesort, int pageIndex = 1, int pageSize = 5000) { return await _dal.GetGoodsCollections(start, end, thesort, pageIndex, pageSize); } } }