diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/Dtos/BbsUser/BbsUserAnalyseGetOutput.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/Dtos/BbsUser/BbsUserAnalyseGetOutput.cs new file mode 100644 index 00000000..bba3a652 --- /dev/null +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/Dtos/BbsUser/BbsUserAnalyseGetOutput.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Framework.Bbs.Application.Contracts.Dtos.BbsUser +{ + public class BbsUserAnalyseGetOutput + { + /// + /// 注册人数 + /// + public long RegisterNumber { get; set; } + + + /// + /// 在线人数 + /// + public long OnlineNumber { get; set; } + } +} diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Analyses/BbsUserAnalyseService.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Analyses/BbsUserAnalyseService.cs index 5c67f099..de463a0f 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Analyses/BbsUserAnalyseService.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Analyses/BbsUserAnalyseService.cs @@ -1,25 +1,24 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Mapster; +using Mapster; using Microsoft.AspNetCore.Mvc; using SqlSugar; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using Yi.Framework.Bbs.Application.Contracts.Dtos.BbsUser; using Yi.Framework.Bbs.Domain.Managers; +using Yi.Framework.Rbac.Application.Contracts.IServices; using Yi.Framework.Rbac.Domain.Shared.Consts; +using Yi.Framework.Rbac.Domain.Shared.Model; namespace Yi.Framework.Bbs.Application.Services.Analyses { public class BbsUserAnalyseService : ApplicationService, IApplicationService { private BbsUserManager _bbsUserManager; - public BbsUserAnalyseService(BbsUserManager bbsUserManager) + private IOnlineService _onlineService; + public BbsUserAnalyseService(BbsUserManager bbsUserManager, IOnlineService onlineService) { _bbsUserManager = bbsUserManager; + _onlineService= onlineService; } /// @@ -54,5 +53,21 @@ namespace Yi.Framework.Bbs.Application.Services.Analyses return output.Adapt>(); } + /// + /// 用户分析 + /// + /// + [HttpGet("analyse/bbs-user")] + public async Task GetUserAnalyseAsync() + { + + var registerUser = await _bbsUserManager._userRepository._DbQueryable.CountAsync(); + + var userOnline =( await _onlineService.GetListAsync(new OnlineUserModel { })).TotalCount; + var output = new BbsUserAnalyseGetOutput() { OnlineNumber = userOnline, RegisterNumber = registerUser }; + + return output; + } + } } diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/IServices/IOnlineService.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/IServices/IOnlineService.cs index 3a0a0202..6023aa96 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/IServices/IOnlineService.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/IServices/IOnlineService.cs @@ -1,6 +1,10 @@ -namespace Yi.Framework.Rbac.Application.Contracts.IServices +using Volo.Abp.Application.Dtos; +using Yi.Framework.Rbac.Domain.Shared.Model; + +namespace Yi.Framework.Rbac.Application.Contracts.IServices { public interface IOnlineService { + Task< PagedResultDto> GetListAsync(OnlineUserModel online); } } diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/OnlineService.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/OnlineService.cs index 3432470a..24208774 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/OnlineService.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/OnlineService.cs @@ -4,8 +4,8 @@ using Microsoft.Extensions.Logging; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using Yi.Framework.Rbac.Application.Contracts.IServices; +using Yi.Framework.Rbac.Domain.Shared.Model; using Yi.Framework.Rbac.Domain.SignalRHubs; -using Yi.Framework.Rbac.Domain.SignalRHubs.Model; namespace Yi.Framework.Rbac.Application.Services { @@ -24,7 +24,7 @@ namespace Yi.Framework.Rbac.Application.Services /// /// /// - public PagedResultDto GetListAsync([FromQuery] OnlineUserModel online) + public Task> GetListAsync([FromQuery] OnlineUserModel online) { var data = OnlineUserHub.clientUsers; IEnumerable dataWhere = data.AsEnumerable(); @@ -37,7 +37,7 @@ namespace Yi.Framework.Rbac.Application.Services { dataWhere = dataWhere.Where((u) => u.UserName!.Contains(online.UserName)); } - return new PagedResultDto() { TotalCount = data.Count, Items = dataWhere.ToList() }; + return Task.FromResult(new PagedResultDto() { TotalCount = data.Count, Items = dataWhere.ToList() }) ; } diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/SignalRHubs/Model/OnlineUserModel.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain.Shared/Model/OnlineUserModel.cs similarity index 94% rename from Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/SignalRHubs/Model/OnlineUserModel.cs rename to Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain.Shared/Model/OnlineUserModel.cs index 97158463..bd9958fd 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/SignalRHubs/Model/OnlineUserModel.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain.Shared/Model/OnlineUserModel.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Framework.Rbac.Domain.SignalRHubs.Model +namespace Yi.Framework.Rbac.Domain.Shared.Model { public class OnlineUserModel { diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/SignalRHubs/OnlineUserHub.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/SignalRHubs/OnlineUserHub.cs index 623b79a3..04771480 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/SignalRHubs/OnlineUserHub.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/SignalRHubs/OnlineUserHub.cs @@ -4,7 +4,7 @@ using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.Logging; using Volo.Abp.AspNetCore.SignalR; using Yi.Framework.Rbac.Domain.Entities; -using Yi.Framework.Rbac.Domain.SignalRHubs.Model; +using Yi.Framework.Rbac.Domain.Shared.Model; namespace Yi.Framework.Rbac.Domain.SignalRHubs {