From a3bfd6cd7ee9580db08aa03a8656ad5572089756 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期一, 31 三月 2025 16:19:36 +0800
Subject: [PATCH] Merge branch 'dev-lifepay-v1.3' of http://120.26.58.240:8888/r/LifePaymentApi into dev-lifepay-v1.3
---
LifePayment/LifePayment.Application/LifePay/StatisticsService.cs | 164 ++++++++++++++++++++++++++++++++++--------------------
1 files changed, 103 insertions(+), 61 deletions(-)
diff --git a/LifePayment/LifePayment.Application/LifePay/StatisticsService.cs b/LifePayment/LifePayment.Application/LifePay/StatisticsService.cs
index 02d873c..0ff2fb3 100644
--- a/LifePayment/LifePayment.Application/LifePay/StatisticsService.cs
+++ b/LifePayment/LifePayment.Application/LifePay/StatisticsService.cs
@@ -16,6 +16,8 @@
using Volo.Abp.EventBus.Distributed;
using static Nest.FileSystemStats;
using Microsoft.EntityFrameworkCore;
+using System.Threading.Channels;
+using ZeroD.Util;
namespace LifePayment.Application.LifePay
{
@@ -24,91 +26,131 @@
private readonly IRepository<LifePayOrder, Guid> _lifePayOrderRepository;
private readonly IRepository<LifePayUser, Guid> _lifePayUserRepository;
private readonly IRepository<DallyStatistics, Guid> _dallyStatisticsRepository;
+ private readonly IRepository<LifePayChannles, Guid> _lifePayChannlesRep;
public StatisticsService(
IRepository<LifePayOrder, Guid> lifePayOrderRepository,
IRepository<LifePayUser, Guid> lifePayUserRepository,
- IRepository<DallyStatistics, Guid> dallyStatisticsRepository)
+ IRepository<DallyStatistics, Guid> dallyStatisticsRepository,
+ IRepository<LifePayChannles, Guid> lifePayChannlesRep)
{
_lifePayOrderRepository = lifePayOrderRepository;
_lifePayUserRepository = lifePayUserRepository;
_dallyStatisticsRepository = dallyStatisticsRepository;
+ _lifePayChannlesRep = lifePayChannlesRep;
}
- public async Task<TopStatisticsOutput> GetTopStatistics()
+ /// <summary>
+ /// 椤堕儴缁熻
+ /// </summary>
+ /// <param name="channleId"></param>
+ /// <returns></returns>
+ public async Task<TopStatisticsOutput> GetTopStatistics(List<string> channleList)
{
var today = DateTime.Now.Date;
- var statistics = await _dallyStatisticsRepository.Where(x => x.CreationTime.Date == today).FirstOrDefaultAsync();
- if (statistics == null)
+ var statistics = await _dallyStatisticsRepository.Where(x => x.CreationTime.Date == today)
+ .WhereIf(channleList.Count() > 0, x => channleList.Contains(x.ChannelId))
+ .ToListAsync();
+ if (statistics == null || statistics.Count() == 0)
{
- /// 绱鏀舵锛氱粺璁″钩鍙拌处鎴蜂笅璁㈠崟鍒涘缓鏃堕棿鍦ㄦ槰澶╁強涔嬪墠鏀跺埌鐨勩�愮敤鎴锋敮浠樻垚鍔熺殑閲戦-閫�娆剧粰鐢ㄦ埛鐨勯噾棰濄�戯紱
- var accumulatedReceipts = await _lifePayOrderRepository.Where(x => x.CreationTime < today && x.PayStatus == LifePayStatusEnum.宸叉敮浠�).SumAsync(x => x.PayAmount) - await _lifePayOrderRepository.Where(x => x.CreationTime < today && x.LifePayRefundStatus == LifePayRefundStatusEnum.宸查��娆�).SumAsync(x => x.RefundPrice);
- /// 鏄ㄦ棩鏀舵锛氱粺璁″钩鍙拌处鎴蜂笅璁㈠崟鍒涘缓鏃堕棿鍦ㄦ槰澶╂敹鍒扮殑銆愮敤鎴锋敮浠樻垚鍔熺殑閲戦-閫�娆剧粰鐢ㄦ埛鐨勯噾棰濄�戯紱
- var receiptsYesterday = await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today && x.PayStatus == LifePayStatusEnum.宸叉敮浠�).SumAsync(x => x.PayAmount) - await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today && x.LifePayRefundStatus == LifePayRefundStatusEnum.宸查��娆�).SumAsync(x => x.PayAmount);
- /// 绱鏀跺叆锛氱粺璁″钩鍙拌处鎴蜂笅璁㈠崟鐘舵�佷负鈥滃凡瀹屾垚鈥濅笖璁㈠崟鍒涘缓鏃堕棿鍦ㄦ槰澶╁強涔嬪墠鏀跺埌鐨勩�愮敤鎴峰疄浠橀噾棰�-骞冲彴鎵f閲戦-閮ㄥ垎閫�娆鹃噾棰濄�戯紱
- var accumulatedIncome = await _lifePayOrderRepository.Where(x => x.CreationTime < today && x.LifePayOrderStatus == LifePayOrderStatusEnum.宸插畬鎴�).SumAsync(x => x.PayAmount - x.PlatformDeductionAmount - x.RefundPrice);
- /// 绱涓嬪崟锛氱粺璁″钩鍙颁腑璁㈠崟涓嬪崟鏃堕棿鍦ㄦ槰澶╁強涔嬪墠鏃堕棿鐨勮鍗曡褰曪紱
- var accumulatedOrders = await _lifePayOrderRepository.Where(x => x.CreationTime < today).CountAsync();
- /// 鏄ㄦ棩涓嬪崟锛氱粺璁″钩鍙颁腑璁㈠崟涓嬪崟鏃堕棿鍦ㄦ槰澶╃殑璁㈠崟璁板綍锛�
- var ordersNumYesterday = await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today).CountAsync();
- /// 鏄ㄦ棩鎴愬姛锛氱粺璁″钩鍙颁腑璁㈠崟鐘舵�佷负鈥滃凡瀹屾垚/閮ㄥ垎鍏呭�兼垚鍔熲�濅笖璁㈠崟涓嬪崟鏃堕棿鍦ㄦ槰澶╃殑璁㈠崟璁板綍锛�
- var yesterdaySuccess = await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today && x.LifePayOrderStatus == LifePayOrderStatusEnum.宸插畬鎴�).CountAsync();
- /// 鏄ㄦ棩澶辫触锛氱粺璁″钩鍙颁腑璁㈠崟鐘舵�佷负鈥滃厖鍊煎け璐�/宸查��娆锯�濅笖璁㈠崟涓嬪崟鏃堕棿鍦ㄦ槰澶╃殑璁㈠崟璁板綍锛�
- var yesterdayFail = await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today && x.LifePayOrderStatus == LifePayOrderStatusEnum.宸查��娆�).CountAsync();
- /// 绱鐢ㄦ埛
- var accumulatedUsers = await _lifePayUserRepository.CountAsync();
- /// 鏄ㄦ棩娲昏穬鐢ㄦ埛
- var yesterdayActiveUsers = await _lifePayUserRepository.Where(x => x.LastLoginTime >= today.AddDays(-1)).CountAsync();
-
- var entity = new DallyStatistics()
+ TopStatisticsOutput topStatisticsOutput = new TopStatisticsOutput() { };
+ var allChannle = await _lifePayChannlesRep.Where(x => x.IsDeleted == false).ToListAsync();
+ foreach (var item in allChannle)
{
- Id = GuidGenerator.Create(),
- CreationTime = DateTime.Now,
- Amount = 0,
- AccumulatedReceipts = accumulatedReceipts.HasValue? accumulatedReceipts.Value:0,
- AccumulatedIncome = accumulatedIncome.HasValue ? accumulatedIncome.Value : 0,
- ReceiptsYesterday = receiptsYesterday,
- AccumulatedOrders = accumulatedOrders,
- OrdersNumYesterday = ordersNumYesterday,
- YesterdaySuccess = yesterdaySuccess,
- YesterdayFail = yesterdayFail,
- AccumulatedUsers = accumulatedUsers,
- YesterdayActiveUsers = yesterdayActiveUsers
- };
- await _dallyStatisticsRepository.InsertAsync(entity);
+ var entity = await TopStatistics(item.ChannlesNum, today);
+ if (channleList.Count() == 0 || channleList.Contains(item.ChannlesNum))
+ {
+ topStatisticsOutput.Amount += entity.Amount;
+ topStatisticsOutput.AccumulatedReceipts += entity.AccumulatedReceipts;
+ topStatisticsOutput.AccumulatedIncome += entity.AccumulatedIncome;
+ topStatisticsOutput.ReceiptsYesterday += entity.ReceiptsYesterday;
+ topStatisticsOutput.AccumulatedOrders += entity.AccumulatedOrders;
+ topStatisticsOutput.OrdersNumYesterday += entity.OrdersNumYesterday;
+ topStatisticsOutput.YesterdaySuccess += entity.YesterdaySuccess;
+ topStatisticsOutput.YesterdayFail += entity.YesterdayFail;
+ topStatisticsOutput.AccumulatedUsers += entity.AccumulatedUsers;
+ topStatisticsOutput.YesterdayActiveUsers += entity.YesterdayActiveUsers;
+ }
+ }
- TopStatisticsOutput topStatisticsOutput = new TopStatisticsOutput()
- {
- Amount = entity.Amount,
- AccumulatedReceipts = entity.AccumulatedReceipts,
- AccumulatedIncome = entity.AccumulatedIncome,
- ReceiptsYesterday = entity.ReceiptsYesterday,
- AccumulatedOrders = entity.AccumulatedOrders,
- OrdersNumYesterday = entity.OrdersNumYesterday,
- YesterdaySuccess = entity.YesterdaySuccess,
- YesterdayFail = entity.YesterdayFail,
- AccumulatedUsers = entity.AccumulatedUsers,
- YesterdayActiveUsers = entity.YesterdayActiveUsers,
- };
+
return topStatisticsOutput;
}
else
{
TopStatisticsOutput topStatisticsOutput = new TopStatisticsOutput()
{
- Amount = statistics.Amount,
- AccumulatedReceipts = statistics.AccumulatedReceipts,
- AccumulatedIncome = statistics.AccumulatedIncome,
- ReceiptsYesterday = statistics.ReceiptsYesterday,
- AccumulatedOrders = statistics.AccumulatedOrders,
- OrdersNumYesterday = statistics.OrdersNumYesterday,
- YesterdaySuccess = statistics.YesterdaySuccess,
- YesterdayFail = statistics.YesterdayFail,
- AccumulatedUsers = statistics.AccumulatedUsers,
- YesterdayActiveUsers = statistics.YesterdayActiveUsers,
+ Amount = statistics.Sum(s => s.Amount),
+ AccumulatedReceipts = statistics.Sum(s => s.AccumulatedReceipts),
+ AccumulatedIncome = statistics.Sum(s => s.AccumulatedIncome),
+ ReceiptsYesterday = statistics.Sum(s => s.ReceiptsYesterday),
+ AccumulatedOrders = statistics.Sum(s => s.AccumulatedOrders),
+ OrdersNumYesterday = statistics.Sum(s => s.OrdersNumYesterday),
+ YesterdaySuccess = statistics.Sum(s => s.YesterdaySuccess),
+ YesterdayFail = statistics.Sum(s => s.YesterdayFail),
+ AccumulatedUsers = statistics.Sum(s => s.AccumulatedUsers),
+ YesterdayActiveUsers = statistics.Sum(s => s.YesterdayActiveUsers),
};
return topStatisticsOutput;
}
}
+
+ //public async Task<ReceiptsListOutPut> GetReceiptsList(List<string> channleList)
+ //{
+ // var today = DateTime.Now.Date;
+
+ //}
+
+ private async Task<DallyStatistics> TopStatistics(string channleId, DateTime today)
+ {
+ /// 绱鏀舵锛氱粺璁″钩鍙拌处鎴蜂笅璁㈠崟鍒涘缓鏃堕棿鍦ㄦ槰澶╁強涔嬪墠鏀跺埌鐨勩�愮敤鎴锋敮浠樻垚鍔熺殑閲戦-閫�娆剧粰鐢ㄦ埛鐨勯噾棰濄�戯紱
+ var accumulatedReceipts = await _lifePayOrderRepository.Where(x => x.CreationTime < today && x.PayStatus != LifePayStatusEnum.鏈敮浠�)
+ .WhereIf(!string.IsNullOrWhiteSpace(channleId), x => x.ChannelId == channleId).SumAsync(x => x.PayAmount) -
+ await _lifePayOrderRepository.Where(x => x.CreationTime < today && x.LifePayRefundStatus == LifePayRefundStatusEnum.宸查��娆�)
+ .WhereIf(!string.IsNullOrWhiteSpace(channleId), x => x.ChannelId == channleId).SumAsync(x => (x.RefundPrice ?? 0));
+ /// 鏄ㄦ棩鏀舵锛氱粺璁″钩鍙拌处鎴蜂笅璁㈠崟鍒涘缓鏃堕棿鍦ㄦ槰澶╂敹鍒扮殑銆愮敤鎴锋敮浠樻垚鍔熺殑閲戦-閫�娆剧粰鐢ㄦ埛鐨勯噾棰濄�戯紱
+ var receiptsYesterday = await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today && x.PayStatus == LifePayStatusEnum.宸叉敮浠�)
+ .WhereIf(!string.IsNullOrWhiteSpace(channleId), x => x.ChannelId == channleId).SumAsync(x => x.PayAmount) -
+ await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today && x.LifePayRefundStatus == LifePayRefundStatusEnum.宸查��娆�)
+ .WhereIf(!string.IsNullOrWhiteSpace(channleId), x => x.ChannelId == channleId).SumAsync(x => (x.RefundPrice ?? 0));
+ /// 绱鏀跺叆锛氱粺璁″钩鍙拌处鎴蜂笅璁㈠崟鐘舵�佷负鈥滃凡瀹屾垚鈥濅笖璁㈠崟鍒涘缓鏃堕棿鍦ㄦ槰澶╁強涔嬪墠鏀跺埌鐨勩�愮敤鎴峰疄浠橀噾棰�-骞冲彴鎵f閲戦-閮ㄥ垎閫�娆鹃噾棰濄�戯紱
+ 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 accumulatedOrders = await _lifePayOrderRepository.Where(x => x.CreationTime < today).WhereIf(!string.IsNullOrWhiteSpace(channleId), x => x.ChannelId == channleId).CountAsync();
+ /// 鏄ㄦ棩涓嬪崟锛氱粺璁″钩鍙颁腑璁㈠崟涓嬪崟鏃堕棿鍦ㄦ槰澶╃殑璁㈠崟璁板綍锛�
+ var ordersNumYesterday = await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today)
+ .WhereIf(!string.IsNullOrWhiteSpace(channleId), x => x.ChannelId == channleId).CountAsync();
+ /// 鏄ㄦ棩鎴愬姛锛氱粺璁″钩鍙颁腑璁㈠崟鐘舵�佷负鈥滃凡瀹屾垚/閮ㄥ垎鍏呭�兼垚鍔熲�濅笖璁㈠崟涓嬪崟鏃堕棿鍦ㄦ槰澶╃殑璁㈠崟璁板綍锛�
+ var yesterdaySuccess = 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 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 yesterdayActiveUsers = await _lifePayUserRepository.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,
+ Amount = 0,
+ AccumulatedReceipts = accumulatedReceipts ?? 0,
+ AccumulatedIncome = accumulatedIncome ?? 0,
+ ReceiptsYesterday = receiptsYesterday ?? 0,
+ AccumulatedOrders = accumulatedOrders,
+ OrdersNumYesterday = ordersNumYesterday,
+ YesterdaySuccess = yesterdaySuccess,
+ YesterdayFail = yesterdayFail,
+ AccumulatedUsers = accumulatedUsers,
+ YesterdayActiveUsers = yesterdayActiveUsers,
+ ChannelId = channleId
+ };
+ await _dallyStatisticsRepository.InsertAsync(entity);
+ return entity;
+ }
}
}
--
Gitblit v1.9.1