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; private IOnlineService _onlineService; public BbsUserAnalyseService(BbsUserManager bbsUserManager, IOnlineService onlineService) { _bbsUserManager = bbsUserManager; _onlineService= onlineService; } /// /// 推荐好友,随机返回好友列表 /// /// [HttpGet("analyse/bbs-user/random")] public async Task> GetRandomUserAsync([FromQuery] PagedResultRequestDto input) { var randUserIds = await _bbsUserManager._userRepository._DbQueryable .Where(x => x.UserName != UserConst.Admin) .OrderBy(x => SqlFunc.GetRandom()) .Select(x => x.Id). ToPageListAsync(input.SkipCount, input.MaxResultCount); var output = await _bbsUserManager.GetBbsUserInfoAsync(randUserIds); return output.Adapt>(); } /// /// 积分排行榜 /// /// [HttpGet("analyse/bbs-user/integral-top")] public async Task> GetIntegralTopUserAsync([FromQuery] PagedResultRequestDto input) { var randUserIds = await _bbsUserManager._userRepository._DbQueryable .Where(x => x.UserName != UserConst.Admin) .OrderBy(x => SqlFunc.GetRandom()) .Select(x => x.Id). ToPageListAsync(input.SkipCount, input.MaxResultCount); var output = await _bbsUserManager.GetBbsUserInfoAsync(randUserIds); 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; } } }