LifePayment/LifePayment.Application.Contracts/LifePay/IStatisticsService.cs
@@ -12,4 +12,7 @@ { Task<TopStatisticsOutput> GetTopStatistics(List<string>? channleList = null); Task<ReceiptsListOutPut> GetReceiptsList(List<string>? channleList = null); Task<ChannelDataListOutPut> GetChannelDataList(List<string>? channleList = null); } LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs
@@ -593,7 +593,28 @@ public decimal Profit { get; set; } } public class LifePayConsumptionPageInput : ChannelsBaseInput { /// <summary> /// æ¥è¯¢æ¡ä»¶ /// </summary> public string? KeyWord { get; set; } /// <summary> /// èµéæµå /// </summary> public ConsumptionFlowEnum? Flow { get; set; } /// <summary> /// è®°è´¦å¼å§æ¶é´ /// </summary> public DateTime? TimeBegin { get; set; } /// <summary> /// è®°è´¦ç»ææ¶é´ /// </summary> public DateTime? TimeEnd { get; set; } } public class LifePayRechargeReceiptsPageInput : ChannelsBaseInput { /// <summary> LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs
@@ -1096,6 +1096,7 @@ /// </summary> public int YesterdayActiveUsers { get; set; } } public class ChannelRateOutput @@ -1152,6 +1153,54 @@ public DateTime CreationTime { get; set; } } public class LifePayConsumptionListOutput { /// <summary> /// ç¼å· /// </summary> public Guid Id { get; set; } // <summary> /// å¹³å°è®¢åå· /// </summary> public string OrderNo { get; set; } /// <summary> /// æ¸ éæµæ°´å· /// </summary> public string OutOrderNo { get; set; } /// <summary> /// 交æéé¢ /// </summary> public decimal Amount { get; set; } /// <summary> /// è®°è´¦æ¶é´ /// </summary> public DateTime FinishTime { get; set; } /// <summary> /// å»ç»ç¶æ /// </summary> public ConsumptionFrozenStatusEnum FrozenStatus { get; set; } /// <summary> /// èµéæµå /// </summary> public ConsumptionFlowEnum Flow { get; set; } /// <summary> /// æ£æ¬¾éé¢ /// </summary> public decimal DeductionAmount { get; set; } /// <summary> /// å»ç»éé¢ /// </summary> public decimal FrozenAmount { get; set; } } public class LifePayPhoneMesssageCodeLoginOutput { /// <summary> @@ -1262,13 +1311,77 @@ public class ReceiptsListOutPut { /// <summary> /// 30å¤©æ¶æ¬¾ /// </summary> public List<ReceiptsDetail> ReceiveList { get; set; } = new List<ReceiptsDetail>(); /// <summary> /// 30天æ¶å ¥ /// </summary> public List<ReceiptsDetail> IncomeList { get; set; } = new List<ReceiptsDetail>(); } public class ReceiptsDetail { /// <summary> /// å建æ¶é´ /// </summary> public DateTime CreationTime { get; set; } public string CreationTime { get; set; } /// <summary> /// éé¢ /// </summary> public decimal Amount { get; set; } } public class ChannelDataListOutPut { /// <summary> /// Top5æ¸ éæ¶æ¬¾ /// </summary> public List<ChannelDataReceive> ReceiveList { get; set; } = new List<ChannelDataReceive>(); /// <summary> /// Top5æ¸ éç¨æ· /// </summary> public List<ChannelDataUserNumber> UserNumberList { get; set; } = new List<ChannelDataUserNumber>(); } public class ChannelDataReceive { /// <summary> /// æ¸ éç¼å· /// </summary> public string ChannelId { get; set; } /// <summary> /// æ¶æ¬¾ /// </summary> public decimal ReceivePrice { get; set; } /// <summary> /// ä½£é /// </summary> public decimal ChannlesRakePrice { get; set; } } public class ChannelDataUserNumber { /// <summary> /// æ¸ éç¼å· /// </summary> public string ChannelId { get; set; } /// <summary> /// ç¨æ·æ°é /// </summary> public int Number { get; set; } } public class LifePayChannlesRakeListOutput { LifePayment/LifePayment.Application.Contracts/User/QrCodeLogin.cs
@@ -89,7 +89,7 @@ public string[] RoleNames { get; set; } /// <summary> /// æ¸ éå表 /// æ¸ éç¼å· /// </summary> public string[] ChannlesId { get; set; } LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
@@ -23,6 +23,7 @@ { private readonly IRepository<LifePayRechargeReceipts, Guid> _lifePayRechargeReceiptsRepository; private readonly IRepository<LifePayExpensesReceipts, Guid> _lifePayExpensesReceiptsRepository; private readonly IRepository<LifePayConsumption, Guid> _lifePayConsumption; private readonly IRepository<LifePayChannlesRake, Guid> _lifePayChannlesRakeRepository; private readonly IRepository<LifePayOrder, Guid> _lifePayOrderRepository; private readonly IAliPayApi _aliPayApi; @@ -31,6 +32,7 @@ public LifePayOrderService( IRepository<LifePayRechargeReceipts, Guid> lifePayRechargeReceiptsRepository, IRepository<LifePayExpensesReceipts, Guid> lifePayExpensesReceiptsRepository, IRepository<LifePayConsumption, Guid> lifePayConsumptionRepository, IRepository<LifePayChannlesRake, Guid> lifePayChannlesRakeRepository, IRepository<LifePayOrder, Guid> lifePayOrderRepository, IAliPayApi aliPayApi, @@ -38,6 +40,7 @@ { _lifePayRechargeReceiptsRepository = lifePayRechargeReceiptsRepository; _lifePayExpensesReceiptsRepository = lifePayExpensesReceiptsRepository; _lifePayConsumption = lifePayConsumptionRepository; _lifePayChannlesRakeRepository = lifePayChannlesRakeRepository; _lifePayOrderRepository = lifePayOrderRepository; _aliPayApi = aliPayApi; @@ -45,6 +48,39 @@ } #region æ¥è¯¢ /// <summary> /// è·åæ¶è´¹æµæ°´ /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<PageOutput<LifePayConsumptionListOutput>> GetLifePayConsumptionPage(LifePayConsumptionPageInput input) { var list = await _lifePayConsumption.Where(x => x.IsDeleted == false) .WhereIf(input.KeyWord.IsNotNullOrEmpty(), x => x.OrderNo.Contains(input.KeyWord) || x.OutOrderNo.Contains(input.KeyWord) || x.ChannelId.Contains(input.KeyWord)) .WhereIf(input.Flow.HasValue,x => x.Flow == input.Flow) .WhereIf(input.TimeBegin.HasValue, x => x.FinishTime >= input.TimeBegin) .WhereIf(input.TimeEnd.HasValue, x => x.FinishTime <= input.TimeEnd) .Select(x => new LifePayConsumptionListOutput() { Id = x.Id, OrderNo = x.OrderNo, OutOrderNo = x.OutOrderNo, Amount = x.Amount, FinishTime = x.FinishTime, FrozenStatus = x.FrozenStatus, Flow = x.Flow, DeductionAmount = x.DeductionAmount, }) .GetPageResult(input.PageModel); var total = await _lifePayRechargeReceiptsRepository.Where(x => x.IsDeleted == false).SumAsync(x => x.RechargeAmount); LifePayRechargeReceiptsStatistics objectData = new LifePayRechargeReceiptsStatistics(); objectData.TotalRechargeAmount = total; list.ObjectData = objectData; return list; } /// <summary> /// è·åå 弿µæ°´ /// </summary> LifePayment/LifePayment.Application/LifePay/StatisticsService.cs
@@ -18,6 +18,7 @@ using Microsoft.EntityFrameworkCore; using System.Threading.Channels; using ZeroD.Util; using NPOI.SS.Formula.Functions; namespace LifePayment.Application.LifePay { @@ -26,17 +27,20 @@ private readonly IRepository<LifePayOrder, Guid> _lifePayOrderRepository; private readonly IRepository<LifePayUser, Guid> _lifePayUserRepository; private readonly IRepository<DallyStatistics, Guid> _dallyStatisticsRepository; private readonly IRepository<LifePayChannlesRake, Guid> _lifePayChannlesRakeRepository; private readonly IRepository<LifePayChannles, Guid> _lifePayChannlesRep; public StatisticsService( IRepository<LifePayOrder, Guid> lifePayOrderRepository, IRepository<LifePayUser, Guid> lifePayUserRepository, IRepository<DallyStatistics, Guid> dallyStatisticsRepository, IRepository<LifePayChannlesRake, Guid> lifePayChannlesRakeRepository, IRepository<LifePayChannles, Guid> lifePayChannlesRep) { _lifePayOrderRepository = lifePayOrderRepository; _lifePayUserRepository = lifePayUserRepository; _dallyStatisticsRepository = dallyStatisticsRepository; _lifePayChannlesRakeRepository = lifePayChannlesRakeRepository; _lifePayChannlesRep = lifePayChannlesRep; } @@ -72,8 +76,6 @@ topStatisticsOutput.YesterdayActiveUsers += entity.YesterdayActiveUsers; } } return topStatisticsOutput; } else @@ -95,11 +97,114 @@ } } //public async Task<ReceiptsListOutPut> GetReceiptsList(List<string> channleList) //{ // var today = DateTime.Now.Date; /// <summary> /// è¿30æ¥æ¶æ¬¾æ°æ® /// </summary> /// <param name="channleList"></param> /// <returns></returns> public async Task<ReceiptsListOutPut> GetReceiptsList(List<string> channleList) { var today = DateTime.Now.Date; var statistics = await _dallyStatisticsRepository.Where(x => x.CreationTime.Date <= today && x.CreationTime.Date >= today.AddDays(-30)) .WhereIf(channleList.Count() > 0, x => channleList.Contains(x.ChannelId)) .OrderBy(o => o.CreationTime) .ToListAsync(); //} var groupedStatistics = statistics .GroupBy(x => x.CreationTime) .Select(g => new { CreationTime = g.Key, TotalReceiptsYesterday = g.Sum(x => x.ReceiptsYesterday), TotalIncomeYesterday = g.Sum(x => x.IncomeYesterday) }) .ToList(); ReceiptsListOutPut receiptsListOutPut = new ReceiptsListOutPut(); foreach (var item in groupedStatistics) { ReceiptsDetail receive = new ReceiptsDetail() { CreationTime = item.CreationTime.ToString("yyyy-MM-dd"), Amount = item.TotalReceiptsYesterday }; ReceiptsDetail income = new ReceiptsDetail() { CreationTime = item.CreationTime.ToString("yyyy-MM-dd"), Amount = item.TotalIncomeYesterday }; receiptsListOutPut.ReceiveList.Add(receive); receiptsListOutPut.IncomeList.Add(income); } return receiptsListOutPut; } public async Task<ChannelDataListOutPut> GetChannelDataList(List<string> channleList) { var statistics = await _lifePayChannlesRakeRepository.Where(x => x.IsDeleted == false) .WhereIf(channleList.Count() > 0, x => channleList.Contains(x.ChannelId)) .ToListAsync(); var groupedStatistics = statistics .GroupBy(x => x.ChannelId) .Select(g => new { ChannelId = g.Key, ReceivePrice = g.Sum(x => x.PayAmount), ChannlesRakePrice = g.Sum(x => x.ChannlesRakePrice), }) .OrderByDescending(o => o.ReceivePrice) .ToList(); ChannelDataListOutPut channelDataList = new ChannelDataListOutPut(); foreach (var item in groupedStatistics) { ChannelDataReceive receive = new ChannelDataReceive() { ChannelId = item.ChannelId, ReceivePrice = item.ReceivePrice, ChannlesRakePrice = item.ChannlesRakePrice, }; if (channelDataList.ReceiveList.Count() < 5) { channelDataList.ReceiveList.Add(receive); } } /// ç´¯è®¡ç¨æ· var users = await _lifePayUserRepository.Where(x => x.IsDeleted == false).WhereIf(channleList.Count() > 0, x => channleList.Contains(x.CreationChannleNum)) .ToListAsync(); var groupedUsers = users .GroupBy(x => x.CreationChannleNum) .Select(g => new { ChannelId = g.Key, Number = g.Count(), }) .OrderByDescending(o => o.Number) .ToList(); foreach (var item in groupedUsers) { ChannelDataUserNumber usernumber = new ChannelDataUserNumber() { ChannelId = item.ChannelId, Number = item.Number, }; if (channelDataList.UserNumberList.Count() < 5) { channelDataList.UserNumberList.Add(usernumber); } } return channelDataList; } private async Task<DallyStatistics> TopStatistics(string channleId, DateTime today) { @@ -116,6 +221,9 @@ /// 累计æ¶å ¥ï¼ç»è®¡å¹³å°è´¦æ·ä¸è®¢åç¶æä¸ºâ已宿âä¸è®¢åå建æ¶é´å¨æ¨å¤©åä¹åæ¶å°çãç¨æ·å®ä»éé¢-平尿£æ¬¾éé¢-é¨å鿬¾éé¢ãï¼ var accumulatedIncome = await _lifePayOrderRepository.Where(x => x.CreationTime < today && x.LifePayOrderStatus == LifePayOrderStatusEnum.已宿) .WhereIf(!string.IsNullOrWhiteSpace(channleId), x => x.ChannelId == channleId).SumAsync(x => x.PayAmount - (x.PlatformDeductionAmount ?? 0) - (x.RefundPrice ?? 0)); /// æ¨æ¥æ¶å ¥ï¼ç»è®¡å¹³å°è´¦æ·ä¸è®¢åç¶æä¸ºâ已宿âä¸è®¢åå建æ¶é´å¨æ¨å¤©æ¶å°çãç¨æ·å®ä»éé¢-平尿£æ¬¾éé¢-é¨å鿬¾éé¢ãï¼ var yesterdayIncome = await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today && x.LifePayOrderStatus == LifePayOrderStatusEnum.已宿) .WhereIf(!string.IsNullOrWhiteSpace(channleId), x => x.ChannelId == channleId).SumAsync(x => x.PayAmount - (x.PlatformDeductionAmount ?? 0) - (x.RefundPrice ?? 0)); /// 累计ä¸åï¼ç»è®¡å¹³å°ä¸è®¢åä¸åæ¶é´å¨æ¨å¤©åä¹åæ¶é´ç订åè®°å½ï¼ var accumulatedOrders = await _lifePayOrderRepository.Where(x => x.CreationTime < today).WhereIf(!string.IsNullOrWhiteSpace(channleId), x => x.ChannelId == channleId).CountAsync(); /// æ¨æ¥ä¸åï¼ç»è®¡å¹³å°ä¸è®¢åä¸åæ¶é´å¨æ¨å¤©ç订åè®°å½ï¼ @@ -128,18 +236,19 @@ var yesterdayFail = await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today && x.LifePayOrderStatus == LifePayOrderStatusEnum.已鿬¾) .WhereIf(!string.IsNullOrWhiteSpace(channleId), x => x.ChannelId == channleId).CountAsync(); /// ç´¯è®¡ç¨æ· var accumulatedUsers = await _lifePayUserRepository.WhereIf(!string.IsNullOrWhiteSpace(channleId), x => x.CreationChannleNum == channleId).CountAsync(); var accumulatedUsers = await _lifePayUserRepository.Where(x => x.IsDeleted == false).WhereIf(!string.IsNullOrWhiteSpace(channleId), x => x.CreationChannleNum == channleId).CountAsync(); /// æ¨æ¥æ´»è·ç¨æ· var yesterdayActiveUsers = await _lifePayUserRepository.WhereIf(!string.IsNullOrWhiteSpace(channleId), x => x.CreationChannleNum == channleId).Where(x => x.LastLoginTime >= today.AddDays(-1)).CountAsync(); var yesterdayActiveUsers = await _lifePayUserRepository.Where(x => x.IsDeleted == false).WhereIf(!string.IsNullOrWhiteSpace(channleId), x => x.CreationChannleNum == channleId).Where(x => x.LastLoginTime >= today.AddDays(-1)).CountAsync(); var entity = new DallyStatistics() { Id = GuidGenerator.Create(), CreationTime = DateTime.Now, CreationTime = today, Amount = 0, AccumulatedReceipts = accumulatedReceipts ?? 0, AccumulatedIncome = accumulatedIncome ?? 0, IncomeYesterday = yesterdayIncome ?? 0, ReceiptsYesterday = receiptsYesterday ?? 0, AccumulatedOrders = accumulatedOrders, OrdersNumYesterday = ordersNumYesterday, LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs
@@ -196,5 +196,21 @@ [Description("æ¯åº")] Receipts = 20, } public enum ConsumptionFrozenStatusEnum { [Description("å»ç»")] Frozen = 10, [Description("è§£å»")] Thaw = 20, } public enum ConsumptionFlowEnum { [Description("ä¸å")] Unchanged = 10, [Description("åºé")] Out = 20, } LifePayment/LifePayment.Domain/LifePay/DallyStatistics.cs
@@ -34,6 +34,11 @@ public decimal AccumulatedIncome { get; set; } /// <summary> /// æ¨æ¥æ¶å ¥ /// </summary> public decimal IncomeYesterday { get; set; } /// <summary> /// 累计ä¸å /// </summary> public int AccumulatedOrders { get; set; } LifePayment/LifePayment.Domain/LifePay/LifePayConsumption.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,72 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Volo.Abp.Domain.Entities.Auditing; using Volo.Abp; using LifePayment.Domain.Shared; namespace LifePayment.Domain.LifePay { /// <summary> /// æ¶è´¹æµæ°´ /// </summary> public class LifePayConsumption : FullAuditedEntity<Guid>, IDataUserFilter { public LifePayConsumption() { } /// <summary> /// å¹³å°è®¢åå· /// </summary> public string OrderNo { get; set; } /// <summary> /// æ¸ éæµæ°´å· /// </summary> public string OutOrderNo { get; set; } /// <summary> /// 交æéé¢ /// </summary> public decimal Amount { get; set; } /// <summary> /// è®°è´¦æ¶é´ /// </summary> public DateTime FinishTime { get; set; } /// <summary> /// æå±å±æ§ /// </summary> public string ExtraProperties { get; set; } /// <summary> /// å»ç»ç¶æ /// </summary> public ConsumptionFrozenStatusEnum FrozenStatus { get; set; } /// <summary> /// èµéæµå /// </summary> public ConsumptionFlowEnum Flow { get; set; } /// <summary> /// æ£æ¬¾éé¢ /// </summary> public decimal DeductionAmount { get; set; } /// <summary> /// å»ç»éé¢ /// </summary> public decimal? FrozenAmount { get; set; } /// <summary> /// æ¸ éå· /// </summary> public string ChannelId { get; set; } } } LifePayment/LifePayment.EntityFrameworkCore/LifePaymentServicesDbContext.cs
@@ -25,6 +25,8 @@ public virtual DbSet<LifePayPremium> LifePayPremium { get; set; } public virtual DbSet<LifePayConsumption> LifePayConsumption { get; set; } public virtual DbSet<LifePayRechargeReceipts> LifePayRechargeReceipts { get; set; } public virtual DbSet<LifePayExpensesReceipts> LifePayExpensesReceipts { get; set; } LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml
@@ -70,6 +70,13 @@ <param name="input"></param> <returns></returns> </member> <member name="M:LifePayment.HttpApi.LifePayController.GetReceiptsList(LifePayment.Application.Contracts.TopStatisticsInput)"> <summary> è·å30æ¥æ¶æ¬¾ç»è®¡ </summary> <param name="input"></param> <returns></returns> </member> <member name="M:LifePayment.HttpApi.LifePayController.GetElectricParValue(LifePayment.Domain.Shared.ChannelsBaseInput)"> <summary> è·åçµè´¹é¢å¼ LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml
@@ -724,6 +724,26 @@ 婿¶¦ </summary> </member> <member name="P:LifePayment.Application.Contracts.LifePayConsumptionPageInput.KeyWord"> <summary> æ¥è¯¢æ¡ä»¶ </summary> </member> <member name="P:LifePayment.Application.Contracts.LifePayConsumptionPageInput.Flow"> <summary> èµéæµå </summary> </member> <member name="P:LifePayment.Application.Contracts.LifePayConsumptionPageInput.TimeBegin"> <summary> è®°è´¦å¼å§æ¶é´ </summary> </member> <member name="P:LifePayment.Application.Contracts.LifePayConsumptionPageInput.TimeEnd"> <summary> è®°è´¦ç»ææ¶é´ </summary> </member> <member name="P:LifePayment.Application.Contracts.LifePayRechargeReceiptsPageInput.KeyWord"> <summary> æ¥è¯¢æ¡ä»¶ @@ -1759,6 +1779,47 @@ è®°è´¦æ¶é´ </summary> </member> <member name="P:LifePayment.Application.Contracts.LifePayConsumptionListOutput.Id"> <summary> ç¼å· </summary> </member> <!-- Badly formed XML comment ignored for member "P:LifePayment.Application.Contracts.LifePayConsumptionListOutput.OrderNo" --> <member name="P:LifePayment.Application.Contracts.LifePayConsumptionListOutput.OutOrderNo"> <summary> æ¸ éæµæ°´å· </summary> </member> <member name="P:LifePayment.Application.Contracts.LifePayConsumptionListOutput.Amount"> <summary> 交æéé¢ </summary> </member> <member name="P:LifePayment.Application.Contracts.LifePayConsumptionListOutput.FinishTime"> <summary> è®°è´¦æ¶é´ </summary> </member> <member name="P:LifePayment.Application.Contracts.LifePayConsumptionListOutput.FrozenStatus"> <summary> å»ç»ç¶æ </summary> </member> <member name="P:LifePayment.Application.Contracts.LifePayConsumptionListOutput.Flow"> <summary> èµéæµå </summary> </member> <member name="P:LifePayment.Application.Contracts.LifePayConsumptionListOutput.DeductionAmount"> <summary> æ£æ¬¾éé¢ </summary> </member> <member name="P:LifePayment.Application.Contracts.LifePayConsumptionListOutput.FrozenAmount"> <summary> å»ç»éé¢ </summary> </member> <member name="P:LifePayment.Application.Contracts.LifePayPhoneMesssageCodeLoginOutput.UserId"> <summary> ç¨æ·Id @@ -1839,11 +1900,61 @@ å计佣é </summary> </member> <member name="P:LifePayment.Application.Contracts.ReceiptsListOutPut.CreationTime"> <member name="P:LifePayment.Application.Contracts.ReceiptsListOutPut.ReceiveList"> <summary> 30å¤©æ¶æ¬¾ </summary> </member> <member name="P:LifePayment.Application.Contracts.ReceiptsListOutPut.IncomeList"> <summary> 30天æ¶å ¥ </summary> </member> <member name="P:LifePayment.Application.Contracts.ReceiptsDetail.CreationTime"> <summary> å建æ¶é´ </summary> </member> <member name="P:LifePayment.Application.Contracts.ReceiptsDetail.Amount"> <summary> éé¢ </summary> </member> <member name="P:LifePayment.Application.Contracts.ChannelDataListOutPut.ReceiveList"> <summary> Top5æ¸ éæ¶æ¬¾ </summary> </member> <member name="P:LifePayment.Application.Contracts.ChannelDataListOutPut.UserNumberList"> <summary> Top5æ¸ éç¨æ· </summary> </member> <member name="P:LifePayment.Application.Contracts.ChannelDataReceive.ChannelId"> <summary> æ¸ éç¼å· </summary> </member> <member name="P:LifePayment.Application.Contracts.ChannelDataReceive.ReceivePrice"> <summary> æ¶æ¬¾ </summary> </member> <member name="P:LifePayment.Application.Contracts.ChannelDataReceive.ChannlesRakePrice"> <summary> ä½£é </summary> </member> <member name="P:LifePayment.Application.Contracts.ChannelDataUserNumber.ChannelId"> <summary> æ¸ éç¼å· </summary> </member> <member name="P:LifePayment.Application.Contracts.ChannelDataUserNumber.Number"> <summary> ç¨æ·æ°é </summary> </member> <member name="P:LifePayment.Application.Contracts.LifePayChannlesRakeListOutput.Id"> <summary> ç¼å· @@ -2839,7 +2950,7 @@ </member> <member name="P:LifePayment.Application.Contracts.CreateAccountInput.ChannlesId"> <summary> æ¸ éå表 æ¸ éç¼å· </summary> </member> <member name="P:LifePayment.Application.Contracts.CreateAccountInput.OpenId"> LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs
@@ -61,6 +61,25 @@ } /// <summary> /// è·å30æ¥æ¶æ¬¾ç»è®¡ /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [AllowAnonymous] public async Task<ReceiptsListOutPut> GetReceiptsList(TopStatisticsInput input) { return await _statisticsService.GetReceiptsList(input.ChannleList); } [HttpPost] [AllowAnonymous] public async Task<ChannelDataListOutPut> GetChannelDataList(TopStatisticsInput input) { return await _statisticsService.GetChannelDataList(input.ChannleList); } /// <summary> /// è·åçµè´¹é¢å¼ /// </summary> /// <returns></returns>