diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Forum/ArticleService.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Forum/ArticleService.cs index d168b814..b4ab322f 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Forum/ArticleService.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Forum/ArticleService.cs @@ -76,7 +76,6 @@ namespace Yi.Framework.Bbs.Application.Services.Forum var entities = await _articleRepository.GetTreeAsync(x => x.DiscussId == discussId); - //var result = entities.Tile(); var items = entities.Adapt>(); return items; } diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Forum/DiscussService.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Forum/DiscussService.cs index 6375cadc..ea76d282 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Forum/DiscussService.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Forum/DiscussService.cs @@ -72,8 +72,7 @@ namespace Yi.Framework.Bbs.Application.Services.Forum .Select((discuss, user, info, plate) => new DiscussGetOutputDto { Id = discuss.Id, - IsAgree = SqlFunc.Subqueryable().WhereIF(CurrentUser.Id != null, - x => x.CreatorId == CurrentUser.Id && x.DiscussId == discuss.Id).Any(), + IsAgree = false, User = new BbsUserGetListOutputDto() { UserName = user.UserName, @@ -94,15 +93,25 @@ namespace Yi.Framework.Bbs.Application.Services.Forum Logo = plate.Logo } }, true) - .SingleAsync(discuss => discuss.Id == id); + .FirstAsync(discuss => discuss.Id == id); - if (item is not null) + if (item is null) { - await VerifyDiscussPermissionAsync(item.Id); - await _localEventBus.PublishAsync(new SeeDiscussEventArgs - { DiscussId = item.Id, OldSeeNum = item.SeeNum }); + throw new UserFriendlyException("该主题不存在", "404"); } - + + //组装点赞 + var agreeCreatorList = + (await _agreeRepository._DbQueryable.Where(x => x.DiscussId == item.Id).Select(x=>x.CreatorId).ToListAsync()); + //已登录 + if (CurrentUser.Id is not null) + { + item.IsAgree = agreeCreatorList.Contains(CurrentUser.Id); + } + + await VerifyDiscussPermissionAsync(item.Id); + await _localEventBus.PublishAsync(new SeeDiscussEventArgs + { DiscussId = item.Id, OldSeeNum = item.SeeNum }); return item; } diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Entities/Forum/DiscussAggregateRoot.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Entities/Forum/DiscussAggregateRoot.cs index 87430d7f..c1e7b8a6 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Entities/Forum/DiscussAggregateRoot.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Entities/Forum/DiscussAggregateRoot.cs @@ -8,9 +8,12 @@ namespace Yi.Framework.Bbs.Domain.Entities.Forum { [SugarTable("Discuss")] [SugarIndex($"index_{nameof(Title)}", nameof(Title), OrderByType.Asc)] - [SugarIndex($"index_{nameof(PlateId)}", nameof(PlateId), OrderByType.Asc)] - [SugarIndex($"index_{nameof(CreatorId)}", nameof(CreatorId), OrderByType.Asc)] [SugarIndex($"index_{nameof(CreationTime)}", nameof(CreationTime), OrderByType.Desc)] + [SugarIndex($"index_{nameof(IsDeleted)}_{nameof(PlateId)}_{nameof(CreatorId)}", + nameof(IsDeleted), OrderByType.Asc, + nameof(PlateId), OrderByType.Asc, + nameof(CreatorId), OrderByType.Asc + )] public class DiscussAggregateRoot : AggregateRoot, ISoftDelete, IAuditedObject { public DiscussAggregateRoot()