From bce9b58265acf0cc37a40a4f6f73967bfb3639fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A9=99=E5=AD=90?= <454313500@qq.com> Date: Tue, 4 Feb 2025 15:23:20 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96bbs=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E6=95=B4=E4=BD=93=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Analyses/BbsForumAnalyseService.cs | 50 ++++++++++++++ Yi.Bbs.Vue3/src/apis/analyseApi.js | 15 +++++ Yi.Bbs.Vue3/src/components/DisscussCard.vue | 5 +- Yi.Bbs.Vue3/src/components/InfoCard.vue | 5 +- Yi.Bbs.Vue3/src/components/ScrollbarInfo.vue | 23 ++++--- .../src/components/TreeArticleInfo.vue | 3 +- Yi.Bbs.Vue3/src/router/index.js | 2 +- Yi.Bbs.Vue3/src/views/Article.vue | 67 ++++++++++++------- Yi.Bbs.Vue3/src/views/EditArticle.vue | 4 +- Yi.Bbs.Vue3/src/views/home/Index.vue | 16 ++--- 10 files changed, 138 insertions(+), 52 deletions(-) diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Analyses/BbsForumAnalyseService.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Analyses/BbsForumAnalyseService.cs index 39727e8f..03d91c94 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Analyses/BbsForumAnalyseService.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Analyses/BbsForumAnalyseService.cs @@ -77,6 +77,56 @@ namespace Yi.Framework.Bbs.Application.Services.Analyses return output; } + /// + /// 作者主题,返回当前作者最新的主题 + /// + /// + [HttpGet("analyse/bbs-discuss/author/{userId}")] + public async Task> GetAuthorDiscussAsync( + [FromRoute] Guid userId, + [FromQuery] PagedResultRequestDto input) + { + var output = await _forumManager._discussRepository._DbQueryable.Where(discuss=>discuss.CreatorId==userId) + .Where(discuss=>discuss.PermissionType== DiscussPermissionTypeEnum.Public) + .LeftJoin((discuss, user) => discuss.CreatorId == user.Id) + .LeftJoin((discuss, user, info) => user.Id == info.UserId) + .OrderByDescending(discuss => discuss.CreationTime) + .Select((discuss, user, info) => new DiscussGetListOutputDto + { + Id = discuss.Id, + 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); + var discussId = output.Select(x => x.Id); + //点赞字典,key为主题id,y为用户ids + var agreeDic = + (await _agreeRepository._DbQueryable.Where(x => discussId.Contains(x.DiscussId)).ToListAsync()) + .GroupBy(x => x.DiscussId) + .ToDictionary(x => x.Key, y => y.Select(y => y.CreatorId).ToList()); + + //等级、是否点赞赋值 + output?.ForEach(x => + { + if (CurrentUser.Id is not null) + { + //默认fasle + if (agreeDic.TryGetValue(x.Id,out var userIds)) + { + x.IsAgree = userIds.Contains(CurrentUser.Id); + } + } + }); + + return output; + } } } diff --git a/Yi.Bbs.Vue3/src/apis/analyseApi.js b/Yi.Bbs.Vue3/src/apis/analyseApi.js index 2e582156..97d39490 100644 --- a/Yi.Bbs.Vue3/src/apis/analyseApi.js +++ b/Yi.Bbs.Vue3/src/apis/analyseApi.js @@ -1,5 +1,20 @@ import request from "@/config/axios/service"; +/** + * 获取作者主题 + * @param userId + * @param {*} data + * @returns + */ +export function getAuthorTopic(userId,data) { + return request({ + url: `/analyse/bbs-discuss/author/${userId}`, + method: "get", + data, + }); +} + + /** * 获取推荐主题 * @param {*} data diff --git a/Yi.Bbs.Vue3/src/components/DisscussCard.vue b/Yi.Bbs.Vue3/src/components/DisscussCard.vue index 7b30d5dd..cfb6d5ff 100644 --- a/Yi.Bbs.Vue3/src/components/DisscussCard.vue +++ b/Yi.Bbs.Vue3/src/components/DisscussCard.vue @@ -1,6 +1,7 @@