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 1db012d9..c282dede 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 @@