From b0b0b0d8d16befcc46cbd6595319067589e2a212 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B7=B3?= <454313500@qq.com> Date: Mon, 25 Dec 2023 17:49:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E7=A4=BE=E5=8C=BA?= =?UTF-8?q?=E5=88=86=E6=9E=90=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Analyses/BbsDisucssAnalyseService.cs | 43 ++++++++++++++ .../Analyses/BbsUserAnalyseService.cs | 59 +++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Analyses/BbsDisucssAnalyseService.cs create mode 100644 Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Analyses/BbsUserAnalyseService.cs diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Analyses/BbsDisucssAnalyseService.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Analyses/BbsDisucssAnalyseService.cs new file mode 100644 index 00000000..b6ee519d --- /dev/null +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Analyses/BbsDisucssAnalyseService.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +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.Domain.Shared.Consts; + +namespace Yi.Framework.Bbs.Application.Services.Analyses +{ + public class BbsUserAnalyseService : ApplicationService, IApplicationService + { + private BbsUserManager _bbsUserManager; + public BbsUserAnalyseService(BbsUserManager bbsUserManager) + { + _bbsUserManager = bbsUserManager; + } + + /// + /// 推荐好友,随机返回好友列表 + /// + /// + [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>(); + } + + + } +} 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 new file mode 100644 index 00000000..4e823e81 --- /dev/null +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Analyses/BbsUserAnalyseService.cs @@ -0,0 +1,59 @@ +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.Application.Contracts.Dtos.Discuss; +using Yi.Framework.Bbs.Domain.Entities; +using Yi.Framework.Bbs.Domain.Managers; +using Yi.Framework.Bbs.Domain.Shared.Enums; +using Yi.Framework.Rbac.Domain.Entities; +using Yi.Framework.Rbac.Domain.Shared.Consts; +using Yi.Framework.SqlSugarCore.Abstractions; + +namespace Yi.Framework.Bbs.Application.Services.Analyses +{ + public class BbsForumAnalyseService : ApplicationService, IApplicationService + { + private ForumManager _forumManager; + public BbsForumAnalyseService(ForumManager forumManager) + { + _forumManager = forumManager; + } + + /// + /// 推荐好友,随机返回好友列表 + /// + /// + [HttpGet("analyse/bbs-discuss/random")] + public async Task> GetRandomDiscussAsync([FromQuery] PagedResultRequestDto input) + { + var output = await _forumManager._discussRepository._DbQueryable + .Where(discuss=>discuss.PermissionType== DiscussPermissionTypeEnum.Public) + .LeftJoin((discuss, user) => discuss.CreatorId == user.Id) + .LeftJoin((discuss, user, info) => user.Id == info.UserId) + + .OrderBy(x => SqlFunc.GetRandom()) + .Select((discuss, user, info) => new DiscussGetListOutputDto + { + Id = discuss.Id, + IsAgree = SqlFunc.Subqueryable().WhereIF(CurrentUser.Id != null, x => x.CreatorId == CurrentUser.Id && x.DiscussId == discuss.Id).Any(), + + User = new BbsUserGetListOutputDto() + { + Id = user.Id, + UserName = user.UserName, + Nick = user.Nick, + Icon = user.Icon, + Level = info.Level, + UserLimit = info.UserLimit + } + + }, true) + .ToPageListAsync(input.SkipCount, input.MaxResultCount); + return output; + } + + + } +}