LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
LifePayment/LifePayment.Application/LifePay/LifePayService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
LifePayment/LifePayment.Application/LifePay/StatisticsService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
@@ -14,9 +14,6 @@ using LifePayment.Domain; using static LifePayment.Domain.Shared.LifePaymentConstant; using Newtonsoft.Json; using LifePayment.Domain.Common; using Spire.Pdf.Exporting.XPS.Schema; using Nest; namespace LifePayment.Application.LifePay { @@ -61,7 +58,7 @@ public async Task<PageOutput<LifePayConsumptionListOutput>> GetLifePayConsumptionPage(LifePayConsumptionPageInput input) { var channles = await _lifePayChannlesRep.Where(x => x.ChannlesName.Contains(input.KeyWord)).Select(x => x.ChannlesNum).ToListAsync(); var list = await _lifePayConsumption.Where(x => x.IsDeleted == false) var list = await _lifePayConsumption .WhereIf(input.KeyWord.IsNotNullOrEmpty(), x => x.OrderNo.Contains(input.KeyWord) || x.AcoolyOrderNo.Contains(input.KeyWord) || channles.Contains(x.ChannelId)) .WhereIf(input.Flow.HasValue, x => x.Flow == input.Flow) .WhereIf(input.TimeBegin.HasValue, x => x.FinishTime >= input.TimeBegin) @@ -81,8 +78,8 @@ }) .GetPageResult(input.PageModel); var totalDeductionAmount = await _lifePayConsumption.Where(x => x.IsDeleted == false).SumAsync(x => x.DeductionAmount); var totalFrozenAmount = await _lifePayConsumption.Where(x => x.IsDeleted == false).SumAsync(x => x.FrozenAmount); var totalDeductionAmount = await _lifePayConsumption.SumAsync(x => x.DeductionAmount); var totalFrozenAmount = await _lifePayConsumption.SumAsync(x => x.FrozenAmount); LifePayConsumptionStatistics objectData = new LifePayConsumptionStatistics(); objectData.TotalDeductionAmount = totalDeductionAmount; objectData.TotalFrozenAmount = totalFrozenAmount.Value; @@ -97,7 +94,7 @@ /// <returns></returns> public async Task<PageOutput<LifePayRechargeReceiptsListOutput>> GetLifePayRechargeReceiptsPage(LifePayRechargeReceiptsPageInput input) { var list = await _lifePayRechargeReceiptsRepository.Where(x => x.IsDeleted == false) var list = await _lifePayRechargeReceiptsRepository .WhereIf(input.KeyWord.IsNotNullOrEmpty(), x => x.OrderNo.Contains(input.KeyWord)) .WhereIf(input.CreationTimeBegin.HasValue, x => x.CreationTime >= input.CreationTimeBegin) .WhereIf(input.CreationTimeEnd.HasValue, x => x.CreationTime <= input.CreationTimeEnd) @@ -112,7 +109,7 @@ }) .GetPageResult(input.PageModel); var total = await _lifePayRechargeReceiptsRepository.Where(x => x.IsDeleted == false).SumAsync(x => x.RechargeAmount); var total = await _lifePayRechargeReceiptsRepository.SumAsync(x => x.RechargeAmount); LifePayRechargeReceiptsStatistics objectData = new LifePayRechargeReceiptsStatistics(); objectData.TotalRechargeAmount = total; list.ObjectData = objectData; @@ -126,7 +123,7 @@ /// <returns></returns> public async Task<PageOutput<LifePayExpensesReceiptsListOutput>> GetLifePayExpensesReceiptsPage(LifePayExpensesReceiptsPageInput input) { var list = await _lifePayExpensesReceiptsRepository.Where(x => x.IsDeleted == false) var list = await _lifePayExpensesReceiptsRepository .WhereIf(input.KeyWord.IsNotNullOrEmpty(), x => x.OrderNo.Contains(input.KeyWord) || x.OutOrderNo.Contains(input.KeyWord)) .WhereIf(input.LifePayType.HasValue, x => x.LifePayType == input.LifePayType) .WhereIf(input.ExpensesReceiptsType.HasValue, x => x.ExpensesReceiptsType == input.ExpensesReceiptsType) @@ -145,8 +142,8 @@ }) .GetPageResult(input.PageModel); var totalIncome = await _lifePayExpensesReceiptsRepository.Where(x => x.IsDeleted == false && x.ExpensesReceiptsType == ExpensesReceiptsTypeEnum.Expenses).SumAsync(x => x.Amount); var totalRefund = await _lifePayExpensesReceiptsRepository.Where(x => x.IsDeleted == false && x.ExpensesReceiptsType == ExpensesReceiptsTypeEnum.Receipts).SumAsync(x => x.Amount); var totalIncome = await _lifePayExpensesReceiptsRepository.Where(x => x.ExpensesReceiptsType == ExpensesReceiptsTypeEnum.Expenses).SumAsync(x => x.Amount); var totalRefund = await _lifePayExpensesReceiptsRepository.Where(x => x.ExpensesReceiptsType == ExpensesReceiptsTypeEnum.Receipts).SumAsync(x => x.Amount); LifePayExpensesReceiptsStatistics objectData = new LifePayExpensesReceiptsStatistics(); objectData.TotalIncome = totalIncome; @@ -163,7 +160,7 @@ /// <returns></returns> public async Task<PageOutput<LifePayChannlesRakeListOutput>> GetLifePayChannlesRakePage(LifePayChannlesRakePageInput input) { var list = await _lifePayChannlesRakeRepository.Where(x => x.IsDeleted == false) var list = await _lifePayChannlesRakeRepository .WhereIf(input.ChannelId.IsNotNullOrEmpty(), x => x.ChannelId == input.ChannelId) .WhereIf(input.CreationTimeBegin.HasValue, x => x.CreationTime >= input.CreationTimeBegin) .WhereIf(input.CreationTimeEnd.HasValue, x => x.CreationTime <= input.CreationTimeEnd) @@ -183,7 +180,7 @@ }) .GetPageResult(input.PageModel); var totalRakePrice = await _lifePayChannlesRakeRepository.Where(x => x.IsDeleted == false) var totalRakePrice = await _lifePayChannlesRakeRepository .WhereIf(input.ChannelId.IsNotNullOrEmpty(), x => x.ChannelId == input.ChannelId) .WhereIf(input.CreationTimeBegin.HasValue, x => x.CreationTime >= input.CreationTimeBegin) .WhereIf(input.CreationTimeEnd.HasValue, x => x.CreationTime <= input.CreationTimeEnd) @@ -235,11 +232,11 @@ CheckExtensions.IfTrueThrowUserFriendlyException(input.OrderNo == null, "请输入业务订单号"); CheckExtensions.IfTrueThrowUserFriendlyException(input.RechargeAmount <= 0, "充值金额应大于0"); CheckExtensions.IfTrueThrowUserFriendlyException(input.Voucher == null, "请提交充值凭证"); var repeat = await _lifePayRechargeReceiptsRepository.Where(x => x.IsDeleted == false && x.OrderNo == input.OrderNo).FirstOrDefaultAsync(); var repeat = await _lifePayRechargeReceiptsRepository.Where(x => x.OrderNo == input.OrderNo).FirstOrDefaultAsync(); CheckExtensions.IfTrueThrowUserFriendlyException(repeat != null && repeat.Id != input.Id, "业务订单号重复"); if (input.Id.HasValue) { var payRechargeReceipts = await _lifePayRechargeReceiptsRepository.Where(x => x.IsDeleted == false && x.Id == input.Id.Value).FirstOrDefaultAsync(); var payRechargeReceipts = await _lifePayRechargeReceiptsRepository.Where(x => x.Id == input.Id.Value).FirstOrDefaultAsync(); payRechargeReceipts.OrderNo = input.OrderNo; payRechargeReceipts.RechargeAmount = input.RechargeAmount; payRechargeReceipts.Remark = input.Remark; @@ -438,7 +435,7 @@ /// <returns></returns> public async Task GetAllChannlesRake() { var orderlist = await _lifePayOrderRepository.Where(x => x.IsDeleted == false && x.PayStatus == LifePayStatusEnum.已支付 && x.LifePayOrderStatus == LifePayOrderStatusEnum.已完成).ToListAsync(); var orderlist = await _lifePayOrderRepository.Where(x => x.PayStatus == LifePayStatusEnum.已支付 && x.LifePayOrderStatus == LifePayOrderStatusEnum.已完成).ToListAsync(); foreach (var item in orderlist) { /// 毛利 @@ -568,7 +565,7 @@ private async Task<IQueryable<LifePayChannlesRakeListOutput>> GetLifePayChannlesRakeListFilter(LifePayChannlesRakePageInput input) { var list = _lifePayChannlesRakeRepository.Where(x => x.IsDeleted == false) var list = _lifePayChannlesRakeRepository .WhereIf(input.ChannelId.IsNotNullOrEmpty(), x => x.ChannelId == input.ChannelId) .WhereIf(input.CreationTimeBegin.HasValue, x => x.CreationTime >= input.CreationTimeBegin) .WhereIf(input.CreationTimeEnd.HasValue, x => x.CreationTime <= input.CreationTimeEnd) LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -160,7 +160,7 @@ /// <returns></returns> public async Task<List<LifePayRateListOutput>> GetRate() { return await _lifePayRateRepository.Where(x => x.IsDeleted == false).Select(x => new LifePayRateListOutput() { Id = x.Id, Rate = x.Rate, RateType = x.RateType }) return await _lifePayRateRepository.Select(x => new LifePayRateListOutput() { Id = x.Id, Rate = x.Rate, RateType = x.RateType }) .ToListAsync(); } @@ -170,7 +170,7 @@ /// <returns></returns> public async Task<ChannelRateOutput> GetChannelRate(ChannelsBaseInput input) { return _lifePayChannlesRep.Where(x => x.IsDeleted == false && x.ChannlesNum == input.CheckChannelId).Select(x => new ChannelRateOutput() { ChannlesRate = x.ChannlesRate }) return _lifePayChannlesRep.Where(x => x.ChannlesNum == input.CheckChannelId).Select(x => new ChannelRateOutput() { ChannlesRate = x.ChannlesRate }) .FirstOrDefault(); } @@ -180,7 +180,7 @@ /// <returns></returns> public async Task<List<LifePayPremiumListOutput>> GetPremium() { return await _lifePayPremiumRepository.Where(x => x.IsDeleted == false).Select(x => new LifePayPremiumListOutput() { Id = x.Id, Rate = x.Rate, PremiumType = x.PremiumType }) return await _lifePayPremiumRepository.Select(x => new LifePayPremiumListOutput() { Id = x.Id, Rate = x.Rate, PremiumType = x.PremiumType }) .ToListAsync(); } @@ -190,7 +190,7 @@ /// <returns></returns> public async Task<List<LifePayIntroInfoOutput>> GetIntroInfo(LifePayOrderTypeEnum lifePayType) { return await _lifePayIntroInfoRepository.Where(x => x.IsDeleted == false && x.LifePayType == lifePayType).OrderBy(x => x.Sequence) return await _lifePayIntroInfoRepository.Where(x => x.LifePayType == lifePayType).OrderBy(x => x.Sequence) .Select(x => new LifePayIntroInfoOutput() { Type = x.Type, ContentSummary = x.ContentSummary, Content = x.Content, LifePayType = x.LifePayType, Path = x.Path, Sequence = x.Sequence }) .ToListAsync(); } @@ -202,7 +202,7 @@ /// <returns></returns> public async Task<PageOutput<UserListOutput>> GetUserPage(QueryUserPageInput input) { return await _channelFilter.GetChannelLifePayUserFilter(_lifePayUserRepository).Where(x => x.IsDeleted == false) return await _channelFilter.GetChannelLifePayUserFilter(_lifePayUserRepository) .WhereIf(!string.IsNullOrEmpty(input.QueryCondition), x => x.PhoneNumber.Contains(input.QueryCondition) || x.Name.Contains(input.QueryCondition)) .WhereIf(input.CreationTimeBegin.HasValue, x => x.CreationTime >= input.CreationTimeBegin) .WhereIf(input.CreationTimeEnd.HasValue, x => x.CreationTime <= input.CreationTimeEnd) @@ -467,7 +467,7 @@ var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync(); var platformRate = await _lifePayRateRepository.FirstOrDefaultAsync(r => r.RateType == LifePayRateTypeEnum.供应商折扣价); var channle = await _lifePayChannlesRep.FirstOrDefaultAsync(r => r.ChannlesNum == order.ChannelId); var premium = await _lifePayPremiumRepository.Where(x => x.IsDeleted == false && x.PremiumType == order.LifePayType).FirstOrDefaultAsync(); var premium = await _lifePayPremiumRepository.Where(x => x.PremiumType == order.LifePayType).FirstOrDefaultAsync(); CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "订单不存在"); var user = await _lifePayUserRepository.FirstOrDefaultAsync(x => x.Id == order.UserId); @@ -669,7 +669,7 @@ return new PageOutput<UserAccountOutput>(); } var result = await _lifePayAccount.Where(x => x.UserId == input.UserId && x.IsDeleted == false) var result = await _lifePayAccount.Where(x => x.UserId == input.UserId) .WhereIf(input.LifePayOrderType.HasValue, x => x.LifePayType == input.LifePayOrderType) .OrderByDescending(x => x.CreationTime) .Select(x => @@ -696,7 +696,7 @@ return new List<UserAccountOutput>(); } var result = await _lifePayAccount.Where(x => x.UserId == input.UserId && x.IsDeleted == false) var result = await _lifePayAccount.Where(x => x.UserId == input.UserId) .WhereIf(input.LifePayOrderType.HasValue, x => x.LifePayType == input.LifePayOrderType) .OrderByDescending(x => x.CreationTime) .Select(x => @@ -1615,7 +1615,7 @@ var userAccount = await _lifePayAccount.Where(x => x.UserId == input.UserId && x.Id == input.Id) .FirstOrDefaultAsync(); CheckExtensions.IfTrueThrowUserFriendlyException(userAccount == null, "户号不存在"); var repeatAccountContent = await _lifePayAccount.Where(x => x.UserId == input.UserId && x.LifePayType == input.LifePayType && x.Content == input.Content && x.Id != input.Id && x.IsDeleted == false) var repeatAccountContent = await _lifePayAccount.Where(x => x.UserId == input.UserId && x.LifePayType == input.LifePayType && x.Content == input.Content && x.Id != input.Id) .FirstOrDefaultAsync(); CheckExtensions.IfTrueThrowUserFriendlyException(repeatAccountContent != null, "户号已存在"); @@ -2257,7 +2257,7 @@ CheckExtensions.IfTrueThrowUserFriendlyException(order.LifePayType.HasValue, "当前订单已选择支付类型"); order.LifePayType = lifePayType; var premium = await _lifePayPremiumRepository.Where(x => x.IsDeleted == false && x.PremiumType == order.LifePayType).FirstOrDefaultAsync(); var premium = await _lifePayPremiumRepository.Where(x => x.PremiumType == order.LifePayType).FirstOrDefaultAsync(); order.PremiumRate = premium == null ? 0 : premium.Rate; await _lifePayOrderRepository.UpdateAsync(order); LifePayment/LifePayment.Application/LifePay/StatisticsService.cs
@@ -60,11 +60,11 @@ var statistics = await _dallyStatisticsRepository.Where(x => x.CreationTime.Date == today) .WhereIf(channleList.Count() > 0, x => channleList.Contains(x.ChannelId)) .ToListAsync(); var totalRechargeReceipts = await _lifePayRechargeReceiptsRepository.Where(x => x.IsDeleted == false && x.CreationTime < today).SumAsync(x => x.RechargeAmount); var totalRechargeReceipts = await _lifePayRechargeReceiptsRepository.Where(x => x.CreationTime < today).SumAsync(x => x.RechargeAmount); if (statistics == null || statistics.Count() == 0) { TopStatisticsOutput topStatisticsOutput = new TopStatisticsOutput() { }; var allChannle = await _lifePayChannlesRep.Where(x => x.IsDeleted == false).ToListAsync(); var allChannle = await _lifePayChannlesRep.ToListAsync(); foreach (var item in allChannle) { var entity = await TopStatistics(item.ChannlesNum, today); @@ -86,9 +86,8 @@ if (channleList.Count() == 0) { /// 账户余额 var accountBalance = totalRechargeReceipts - await _lifePayOrderRepository.Where(x => x.ACOOLYStatus == ACOOLYStatusEnum.充值成功 || x.ACOOLYStatus == ACOOLYStatusEnum.已完成 || x.ACOOLYStatus == ACOOLYStatusEnum.部分充值成功) .SumAsync(x => x.PlatformDeductionAmount); topStatisticsOutput.Amount = accountBalance ?? 0; topStatisticsOutput.Amount = totalRechargeReceipts - await _lifePayOrderRepository.Where(x => x.ACOOLYStatus == ACOOLYStatusEnum.充值成功 || x.ACOOLYStatus == ACOOLYStatusEnum.已完成 || x.ACOOLYStatus == ACOOLYStatusEnum.部分充值成功) .SumAsync(x => x.PlatformDeductionAmount) ?? 0; } return topStatisticsOutput; @@ -111,9 +110,8 @@ if (channleList.Count() == 0) { /// 账户余额 var accountBalance = totalRechargeReceipts - await _lifePayOrderRepository.Where(x => x.ACOOLYStatus == ACOOLYStatusEnum.充值成功 || x.ACOOLYStatus == ACOOLYStatusEnum.已完成 || x.ACOOLYStatus == ACOOLYStatusEnum.部分充值成功) .SumAsync(x => x.PlatformDeductionAmount); topStatisticsOutput.Amount = accountBalance ?? 0; topStatisticsOutput.Amount = totalRechargeReceipts - await _lifePayOrderRepository.Where(x => x.ACOOLYStatus == ACOOLYStatusEnum.充值成功 || x.ACOOLYStatus == ACOOLYStatusEnum.已完成 || x.ACOOLYStatus == ACOOLYStatusEnum.部分充值成功) .SumAsync(x => x.PlatformDeductionAmount) ?? 0; } return topStatisticsOutput; @@ -132,7 +130,7 @@ .WhereIf(channleList.Count() > 0, x => channleList.Contains(x.ChannelId)) .OrderBy(o => o.CreationTime) .ToListAsync(); CheckExtensions.IfTrueThrowUserFriendlyException(statistics == null, "收款统计失败"); var groupedStatistics = statistics .GroupBy(x => x.CreationTime) .Select(g => new @@ -163,13 +161,18 @@ return receiptsListOutPut; } /// <summary> /// 获取30天佣金 /// </summary> /// <param name="channleList"></param> /// <returns></returns> public async Task<ChannlesRakeListOutPut> GetChannlesRakeList(List<string> channleList) { var today = DateTime.Now.Date; var statistics = await _lifePayChannlesRakeRepository.Where(x => x.IsDeleted == false && x.FinishTime.Date <= today && x.FinishTime.Date >= today.AddDays(-30)) var statistics = await _lifePayChannlesRakeRepository.Where(x => x.FinishTime.Date <= today && x.FinishTime.Date >= today.AddDays(-30)) .WhereIf(channleList.Count() > 0, x => channleList.Contains(x.ChannelId)) .ToListAsync(); CheckExtensions.IfTrueThrowUserFriendlyException(statistics == null, "佣金统计失败"); var groupedStatistics = statistics .GroupBy(x => x.FinishTime.ToString("yyyy-MM-dd")) .Select(g => new @@ -188,22 +191,19 @@ CreationTime = item.FinishTime, Amount = item.ChannlesRakePrice }; channlesRakeListOutPut.ChannlesRakeList.Add(receive); } return channlesRakeListOutPut; } public async Task<ChannelDataListOutPut> GetChannelDataList(List<string> channleList) { var statistics = await _lifePayChannlesRakeRepository.Where(x => x.IsDeleted == false) int maxStatisticsNumber = 5; var statistics = await _lifePayChannlesRakeRepository .WhereIf(channleList != null && channleList.Count() > 0, x => channleList.Contains(x.ChannelId)) .ToListAsync(); CheckExtensions.IfTrueThrowUserFriendlyException(statistics == null, "统计失败"); CheckExtensions.IfTrueThrowUserFriendlyException(statistics == null, "渠道收款统计失败"); var groupedStatistics = statistics .GroupBy(x => x.ChannelId) .Select(g => new @@ -225,15 +225,16 @@ ReceivePrice = item.ReceivePrice, ChannlesRakePrice = item.ChannlesRakePrice, }; if (channelDataList.ReceiveList.Count() < 5) if (channelDataList.ReceiveList.Count() < maxStatisticsNumber) { channelDataList.ReceiveList.Add(receive); } } /// 累计用户 var users = await _lifePayUserRepository.Where(x => x.IsDeleted == false).WhereIf(channleList.Count() > 0, x => channleList.Contains(x.CreationChannleNum)) var users = await _lifePayUserRepository.WhereIf(channleList.Count() > 0, x => channleList.Contains(x.CreationChannleNum)) .ToListAsync(); CheckExtensions.IfTrueThrowUserFriendlyException(statistics == null, "累计用户统计失败"); var groupedUsers = users .GroupBy(x => x.CreationChannleNum) .Select(g => new @@ -250,7 +251,7 @@ ChannelName = _lifePayChannlesRep.Where(x => x.ChannlesNum == item.ChannelId).FirstOrDefault()?.ChannlesName, Number = item.Number, }; if (channelDataList.UserNumberList.Count() < 5) if (channelDataList.UserNumberList.Count() < maxStatisticsNumber) { channelDataList.UserNumberList.Add(usernumber); } @@ -272,7 +273,7 @@ if (statistics == null || statistics.Count() == 0) { TopStatisticsOutput topStatisticsOutput = new TopStatisticsOutput() { }; var allChannle = await _lifePayChannlesRep.Where(x => x.IsDeleted == false).ToListAsync(); var allChannle = await _lifePayChannlesRep.ToListAsync(); foreach (var item in allChannle) { var entity = await TopStatistics(item.ChannlesNum, today); @@ -313,7 +314,7 @@ 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.Where(x => x.IsDeleted == false && x.CreationTime < today) var accumulatedUsers = await _lifePayUserRepository.Where(x => x.CreationTime < today) .WhereIf(!string.IsNullOrWhiteSpace(channleId), x => x.CreationChannleNum == channleId).CountAsync(); /// 昨日活跃用户 var yesterdayActiveUsers = await (from a in _lifePayUserRepository @@ -322,7 +323,7 @@ && (b.ACOOLYStatus == ACOOLYStatusEnum.充值中 || b.ACOOLYStatus == ACOOLYStatusEnum.充值成功 || b.ACOOLYStatus == ACOOLYStatusEnum.已完成 || b.ACOOLYStatus == ACOOLYStatusEnum.部分充值成功) select b).Distinct().CountAsync(); /// 累计佣金 var accumulatedChannlesRakePrice = await _lifePayChannlesRakeRepository.Where(x => x.IsDeleted == false && x.FinishTime < today) var accumulatedChannlesRakePrice = await _lifePayChannlesRakeRepository.Where(x => x.FinishTime < today) .WhereIf(!string.IsNullOrWhiteSpace(channleId), x => x.ChannelId == channleId).SumAsync(x => x.ChannlesRakePrice); var entity = new DallyStatistics()