| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.Data.Entity;
- using System.Linq;
- using System.Threading.Tasks;
- using System.Web.Mvc;
- using Abp.Auditing;
- using Abp.Domain.Repositories;
- using IwbZero.Authorization.Base;
- using IwbZero.Authorization.Base.Users;
- using IwbZero.ToolCommon.StringModel;
- using WeEngine.Statistic;
- using WeOnlineApp.Configuration;
- using WeOnlineApp.TrainingCamp;
- namespace WeOnlineApp.BaseSystem.ExQuery
- {
- [AllowAnonymous, DisableAuditing]
- public class ExQueryAppService : IwbAppServiceBase, IExQueryAppService
- {
- public ExQueryAppService(IRepository<UserLoginAttempt, long> userLoginRepository, IRepository<CampPlayUserInfo> cpuRepository, IRepository<CampInfo, string> campRepository, IRepository<CampPlayInfo, string> campPlayRepository)
- {
- _userLoginRepository = userLoginRepository;
- _cpuRepository = cpuRepository;
- _campRepository = campRepository;
- _campPlayRepository = campPlayRepository;
- }
- protected IRepository<UserLoginAttempt, long> _userLoginRepository { get; }
- protected IRepository<CampInfo, string> _campRepository { get; }
- protected IRepository<CampPlayInfo, string> _campPlayRepository { get; }
- protected IRepository<CampPlayUserInfo> _cpuRepository { get; }
- public async Task<StatisticDto> Statistic()
- {
- var date = DateTime.Now.AddHours(-2);
- var today = DateTime.Today;
- StatisticUserDto statisticUser = new StatisticUserDto
- {
- TotalLogin = await _userLoginRepository.CountAsync(a => a.Result == IwbLoginResultType.Success),
- TodayLogin = await _userLoginRepository.CountAsync(a => a.Result == IwbLoginResultType.Success && a.CreationTime >= today),
- Online = await _userLoginRepository.CountAsync(a => a.Result == IwbLoginResultType.Success && a.CreationTime >= date),
- Playing = await _cpuRepository.CountAsync(a => a.PlayerState == CampPlayUserStateDefinition.Run)
- };
- statisticUser.Online = statisticUser.Online < statisticUser.Playing ? statisticUser.Playing : statisticUser.Online;
- StatisticCampDto statisticCamp = new StatisticCampDto()
- {
- CampCount = await _campRepository.CountAsync(a => a.CampState == CampStateDefinition.Active),
- PlayCount = await _campPlayRepository.CountAsync(a => a.PlayState == CampPlayStateDefinition.Run || a.PlayState == CampPlayStateDefinition.End || a.PlayState == CampPlayStateDefinition.OverTime),
- PlayerTotalCount = await _cpuRepository.CountAsync(a => a.PlayerState == CampPlayUserStateDefinition.Run || a.PlayerState == CampPlayUserStateDefinition.End || a.PlayerState == CampPlayUserStateDefinition.Exit),
- TodayPlayCount = await _campPlayRepository.CountAsync(a => (a.PlayState == CampPlayStateDefinition.Run || a.PlayState == CampPlayStateDefinition.End || a.PlayState == CampPlayStateDefinition.OverTime) && a.CreationTime >= today),
- TodayPlayerTotalCount = await _cpuRepository.CountAsync(a => (a.PlayerState == CampPlayUserStateDefinition.Run || a.PlayerState == CampPlayUserStateDefinition.End || a.PlayerState == CampPlayUserStateDefinition.Exit) && a.CreationTime >= today),
- };
- List<PlayingCampDto> playingCamps = await _campPlayRepository.GetAll().Where(a => a.PlayState == CampPlayStateDefinition.Run).Select(a => new PlayingCampDto()
- {
- No = a.Id,
- Name = a.Name,
- }).ToListAsync();
- StatisticDto statistic = new StatisticDto()
- {
- UserInfo = statisticUser,
- CampInfo = statisticCamp,
- PlayingInfo = playingCamps.Select(MapPlayingCampDto).ToList(),
- };
- return statistic;
- }
- private readonly string WebRootUrl = ConfigurationManager.AppSettings["WebRootUrl"]?.Ew("/") ?? "Http://ShVber.com:5028/";
- private PlayingCampDto MapPlayingCampDto(PlayingCampDto dto)
- {
- dto.Url = $"{WebRootUrl}Play/display/{dto.No}";
- return dto;
- }
- }
- }
|