/*********************************************************************** * 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.Model.Entities; using CoreCms.Net.Model.ViewModels.Basics; using CoreCms.Net.Model.ViewModels.Echarts; using CoreCms.Net.Model.ViewModels.UI; using SqlSugar; namespace CoreCms.Net.Repository { /// /// 报表通用返回 接口实现 /// public class CoreCmsReportsRepository : BaseRepository, ICoreCmsReportsRepository { public CoreCmsReportsRepository(IUnitOfWork unitOfWork) : base(unitOfWork) { } /// /// 获取订单销量查询返回结果 /// /// /// /// /// /// /// /// /// public async Task> GetGoodsSalesVolumes(string start, string end, string filter, string filterSed, string thesort, int pageIndex = 1, int pageSize = 5000) { RefAsync totalCount = 0; var startDt = DateTime.Parse(start); var endDt = DateTime.Parse(end); var orderBy = thesort switch { "asc" => OrderByType.Asc, "desc" => OrderByType.Desc, _ => OrderByType.Desc }; var data = await DbClient.Queryable() .LeftJoin((oi, o) => oi.orderId == o.orderId) .Where((oi, o) => o.payStatus != 1 && o.paymentTime > startDt && o.paymentTime <= endDt) .GroupBy((oi, o) => new { oi.sn, oi.name, oi.imageUrl, oi.addon }) .Select((oi, o) => new GoodsSalesVolume() { nums = SqlFunc.AggregateSum(oi.nums), amount = SqlFunc.AggregateSum(oi.amount), sn = oi.sn, name = oi.name, imageUrl = oi.imageUrl, addon = oi.addon }) .MergeTable() .OrderByIF(filter == "nums", p => p.nums, orderBy) .OrderByIF(filter == "amount", p => p.amount, orderBy) .OrderByIF(filterSed == "nums", p => p.nums, orderBy) .OrderByIF(filterSed == "amount", p => p.amount, orderBy) .ToPageListAsync(pageIndex, pageSize, totalCount); var list = new PageList(data, pageIndex, pageSize, totalCount); return list; } /// /// 获取商品收藏查询返回结果 /// /// /// /// /// /// /// public async Task> GetGoodsCollections(string start, string end, string thesort, int pageIndex = 1, int pageSize = 5000) { RefAsync totalCount = 0; var startDt = DateTime.Parse(start); var endDt = DateTime.Parse(end); var orderBy = thesort switch { "asc" => OrderByType.Asc, "desc" => OrderByType.Desc, _ => OrderByType.Desc }; var data = await DbClient.Queryable() .LeftJoin((gc, g) => gc.goodsId == g.id) .Where((gc, g) => gc.createTime > startDt && gc.createTime <= endDt) .GroupBy((gc, g) => new { gc.goodsId, gc.goodsName, g.images }) .Select((gc, g) => new GoodsCollection() { nums = SqlFunc.AggregateCount(gc.goodsId), goodsName = gc.goodsName, goodId = gc.goodsId, images = g.images }) .MergeTable() .OrderBy(gc => gc.nums, orderBy) .ToPageListAsync(pageIndex, pageSize, totalCount); var list = new PageList(data, pageIndex, pageSize, totalCount); return list; } } }