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;
+ }
+
+
+ }
+}