| | |
| | | _dallyStatisticsRepository = dallyStatisticsRepository; |
| | | } |
| | | |
| | | public async Task<TopStatisticsOutput> GetTopStatistics() |
| | | /// <summary> |
| | | /// 顶部统计 |
| | | /// </summary> |
| | | /// <param name="channleId"></param> |
| | | /// <returns></returns> |
| | | public async Task<TopStatisticsOutput> GetTopStatistics(string channleId = "") |
| | | { |
| | | var today = DateTime.Now.Date; |
| | | var statistics = await _dallyStatisticsRepository.Where(x => x.CreationTime.Date == today).FirstOrDefaultAsync(); |
| | | var statistics = await _dallyStatisticsRepository.Where(x => x.CreationTime.Date == today) |
| | | .WhereIf(string.IsNullOrWhiteSpace(channleId), x => x.Channel == channleId) |
| | | .FirstOrDefaultAsync(); |
| | | if (statistics == null) |
| | | { |
| | | var accumulatedReceipts = await _lifePayOrderRepository.Where(x => x.CreationTime < today).SumAsync(x => x.PayAmount); |
| | | var receiptsYesterday = await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today).SumAsync(x => x.PayAmount); |
| | | var accumulatedOrders = await _lifePayOrderRepository.Where(x => x.CreationTime < today).CountAsync(); |
| | | var accumulatedIncome = await _lifePayOrderRepository.Where(x => x.CreationTime < today).SumAsync(x => x.RechargeAmount); |
| | | 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 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.已退款).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.已退款).SumAsync(x => (x.RefundPrice ?? 0)); |
| | | /// 累计收入:统计平台账户下订单状态为“已完成”且订单创建时间在昨天及之前收到的【用户实付金额-平台扣款金额-部分退款金额】; |
| | | 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, |
| | | AccumulatedIncome = accumulatedIncome, |
| | | ReceiptsYesterday = receiptsYesterday, |
| | | AccumulatedReceipts = accumulatedReceipts??0, |
| | | AccumulatedIncome = accumulatedIncome ?? 0, |
| | | ReceiptsYesterday = receiptsYesterday ?? 0, |
| | | AccumulatedOrders = accumulatedOrders, |
| | | OrdersNumYesterday = ordersNumYesterday, |
| | | YesterdaySuccess = yesterdaySuccess, |
| | | YesterdayFail = yesterdayFail, |
| | | AccumulatedUsers = accumulatedUsers, |
| | | YesterdayActiveUsers = yesterdayActiveUsers |
| | | YesterdayActiveUsers = yesterdayActiveUsers, |
| | | Channel = channleId |
| | | }; |
| | | await _dallyStatisticsRepository.InsertAsync(entity); |
| | | |
| | |
| | | YesterdaySuccess = entity.YesterdaySuccess, |
| | | YesterdayFail = entity.YesterdayFail, |
| | | AccumulatedUsers = entity.AccumulatedUsers, |
| | | YesterdayActiveUsers = entity.AccumulatedUsers, |
| | | YesterdayActiveUsers = entity.YesterdayActiveUsers, |
| | | }; |
| | | return 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, |
| | | }; |
| | | return topStatisticsOutput; |
| | | } |
| | | } |
| | | |
| | | //public async Task<ReceiptsListOutPut> GetReceiptsList(string channleId = "") |
| | | //{ |
| | | // var today = DateTime.Now.Date; |
| | | |
| | | //} |
| | | } |
| | | } |