From 87b0ae0a2aca16763bf054c4c785323e36f68387 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期三, 11 六月 2025 17:46:28 +0800 Subject: [PATCH] fix:用户端--我的--数据看板,昨日活跃用户数据统计不正确,统计的是登录账号所配置的渠道中昨日进行充值且充值成功的用户记录 --- LifePayment/LifePayment.Application/LifePay/StatisticsService.cs | 47 ++++++++++++++++++++++++++++++++++++----------- 1 files changed, 36 insertions(+), 11 deletions(-) diff --git a/LifePayment/LifePayment.Application/LifePay/StatisticsService.cs b/LifePayment/LifePayment.Application/LifePay/StatisticsService.cs index 17ab4c9..24dd202 100644 --- a/LifePayment/LifePayment.Application/LifePay/StatisticsService.cs +++ b/LifePayment/LifePayment.Application/LifePay/StatisticsService.cs @@ -205,19 +205,39 @@ public async Task<ChannelDataListOutPut> GetChannelDataList(List<string> channleList) { + var today = DateTime.Now.Date; int maxStatisticsNumber = 5; /// 杩欓噷涓嶅姞鍏�.Where()浼氭姤閿� - var statistics = await _lifePayChannlesRakeRepository.Where(x => x.IsDeleted == false) - .WhereIf(channleList.Count() > 0, x => channleList.Contains(x.ChannelId)) - .ToListAsync(); + var statistics = await _lifePayChannlesRakeRepository + .Where(x => x.IsDeleted == false && x.CreationTime < today) + .WhereIf(channleList.Count() > 0, x => channleList.Contains(x.ChannelId)) + .ToListAsync(); + + var lifepayOrderBaseList = await _lifePayOrderRepository + .Where(x => x.CreationTime < today && x.PayStatus != LifePayStatusEnum.鏈敮浠�) + .WhereIf(channleList.Count() > 0, x => channleList.Contains(x.ChannelId)) + .ToListAsync(); + CheckExtensions.IfTrueThrowUserFriendlyException(statistics == null, "娓犻亾鏀舵缁熻澶辫触"); var groupedStatistics = statistics .GroupBy(x => x.ChannelId) - .Select(g => new + .Select(g => { - ChannelId = g.Key, - ReceivePrice = g.Sum(x => x.PayAmount), - ChannlesRakePrice = g.Sum(x => x.ChannlesRakePrice), + /// 绱鏀舵锛氱粺璁″钩鍙拌处鎴蜂笅璁㈠崟鍒涘缓鏃堕棿鍦ㄦ槰澶╁強涔嬪墠鏀跺埌鐨勩�愮敤鎴锋敮浠樻垚鍔熺殑閲戦-閫�娆剧粰鐢ㄦ埛鐨勯噾棰濄�戯紱 + var accumulatedReceipts = + lifepayOrderBaseList + .Where(x => x.ChannelId == g.Key) + .Sum(x => x.PayAmount) + - + lifepayOrderBaseList + .Where(x => x.ChannelId == g.Key && x.LifePayRefundStatus == LifePayRefundStatusEnum.宸查��娆�) + .Sum(x => (x.RefundPrice ?? 0)); + return new + { + ChannelId = g.Key, + ReceivePrice = accumulatedReceipts ?? 0, + ChannlesRakePrice = g.Sum(x => x.ChannlesRakePrice), + }; }) .OrderByDescending(o => o.ReceivePrice) .ToList(); @@ -239,7 +259,7 @@ } /// 绱鐢ㄦ埛 - var users = await _lifePayUserRepository.Where(x => x.IsDeleted == false).WhereIf(channleList.Count() > 0, x => channleList.Contains(x.CreationChannleNum)) + var users = await _lifePayUserRepository.Where(x => x.IsDeleted == false && x.CreationTime < today).WhereIf(channleList.Count() > 0, x => channleList.Contains(x.CreationChannleNum)) .ToListAsync(); CheckExtensions.IfTrueThrowUserFriendlyException(statistics == null, "绱鐢ㄦ埛缁熻澶辫触"); var groupedUsers = users @@ -293,7 +313,7 @@ private async Task<DallyStatistics> TopStatistics(string channleId, DateTime today) { - var lifepayOrderBaseList = await _lifePayOrderRepository.Where(x => x.CreationTime < today) + var lifepayOrderBaseList = await _lifePayOrderRepository.Where(x => x.CreationTime < today && x.PayStatus != LifePayStatusEnum.鏈敮浠�) .WhereIf(!string.IsNullOrWhiteSpace(channleId), x => x.ChannelId == channleId).ToListAsync(); /// 绱鏀舵锛氱粺璁″钩鍙拌处鎴蜂笅璁㈠崟鍒涘缓鏃堕棿鍦ㄦ槰澶╁強涔嬪墠鏀跺埌鐨勩�愮敤鎴锋敮浠樻垚鍔熺殑閲戦-閫�娆剧粰鐢ㄦ埛鐨勯噾棰濄�戯紱 @@ -327,8 +347,13 @@ /// 鏄ㄦ棩娲昏穬鐢ㄦ埛 var yesterdayActiveUsers = await (from a in _lifePayUserRepository join b in _lifePayOrderRepository on a.Id equals b.UserId - where b.CreationTime >= today.AddDays(-1) && b.CreationTime < today - && (b.ACOOLYStatus == ACOOLYStatusEnum.鍏呭�间腑 || b.ACOOLYStatus == ACOOLYStatusEnum.鍏呭�兼垚鍔� || b.ACOOLYStatus == ACOOLYStatusEnum.宸插畬鎴� || b.ACOOLYStatus == ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�) + where + b.CreationTime >= today.AddDays(-1) + && b.CreationTime < today + && (channleId == null || channleId == "" || a.CreationChannleNum == channleId) + && (b.ACOOLYStatus == ACOOLYStatusEnum.鍏呭�兼垚鍔� + || b.ACOOLYStatus == ACOOLYStatusEnum.宸插畬鎴� + || b.ACOOLYStatus == ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�) select b).Distinct().CountAsync(); /// 绱浣i噾 var accumulatedChannlesRakePrice = await _lifePayChannlesRakeRepository.Where(x => x.FinishTime < today) -- Gitblit v1.9.1