diff --git a/Yi.Abp.Net8/framework/Yi.Framework.SqlSugarCore/SqlSugarDbContext.cs b/Yi.Abp.Net8/framework/Yi.Framework.SqlSugarCore/SqlSugarDbContext.cs index 7eadd9b8..085db784 100644 --- a/Yi.Abp.Net8/framework/Yi.Framework.SqlSugarCore/SqlSugarDbContext.cs +++ b/Yi.Abp.Net8/framework/Yi.Framework.SqlSugarCore/SqlSugarDbContext.cs @@ -160,7 +160,19 @@ namespace Yi.Framework.SqlSugarCore case DataFilterType.UpdateByObject: if (entityInfo.PropertyName == nameof(IEntity.Id)) { - EntityChangeEventHelper.PublishEntityUpdatedEvent(entityInfo.EntityValue); + //软删除,发布的是删除事件 + if (entityInfo.EntityValue is ISoftDelete softDelete) + { + if (softDelete.IsDeleted == true) + { + EntityChangeEventHelper.PublishEntityDeletedEvent(entityInfo.EntityValue); + } + } + else + { + EntityChangeEventHelper.PublishEntityUpdatedEvent(entityInfo.EntityValue); + } + } break; case DataFilterType.DeleteByObject: diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Entities/BbsUserExtraInfoEntity.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Entities/BbsUserExtraInfoEntity.cs index 4e614403..aacb5855 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Entities/BbsUserExtraInfoEntity.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Entities/BbsUserExtraInfoEntity.cs @@ -49,6 +49,22 @@ namespace Yi.Framework.Bbs.Domain.Entities /// 经验 /// public long Experience { get; set; } = 0; + + /// + /// 发表主题数 + /// + public int DiscussNumber { get; set; } + + /// + /// 发表主题数 + /// + public int CommentNumber { get; set; } + + + /// + /// 被点赞数 + /// + public int AgreeNumber { get; set; } } } diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/AgreeChangedEventHandler.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/AgreeChangedEventHandler.cs new file mode 100644 index 00000000..1e7784b7 --- /dev/null +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/AgreeChangedEventHandler.cs @@ -0,0 +1,63 @@ +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Entities.Events; +using Volo.Abp.EventBus; +using Yi.Framework.Bbs.Domain.Entities; +using Yi.Framework.Bbs.Domain.Entities.Forum; +using Yi.Framework.SqlSugarCore.Abstractions; + +namespace Yi.Framework.Bbs.Domain.EventHandlers +{ + /// + /// 被点赞 + /// + public class AgreeCreatedEventHandler : ILocalEventHandler>, + ITransientDependency + { + private ISqlSugarRepository _userRepository; + private ISqlSugarRepository _agreeRepository; + public AgreeCreatedEventHandler(ISqlSugarRepository userRepository, ISqlSugarRepository agreeRepository) + { + _userRepository = userRepository; + _agreeRepository = agreeRepository; + } + public async Task HandleEventAsync(EntityCreatedEventData eventData) + { + var agreeEntity = eventData.Entity; + var userId = await _agreeRepository._DbQueryable.LeftJoin((agree, discuss) => agree.DiscussId == discuss.Id) + .Select((agree, discuss) => discuss.CreatorId).FirstAsync(); + + //给创建者发布数量+1 + await _userRepository._Db.Updateable() + .SetColumns(it => it.DiscussNumber == it.DiscussNumber + 1) + .Where(it => it.Id == userId) + .ExecuteCommandAsync(); + } + } + + /// + /// 取消点赞 + /// + public class AgreeDeletedEventHandler : ILocalEventHandler>, + ITransientDependency + { + private ISqlSugarRepository _userRepository; + private ISqlSugarRepository _agreeRepository; + public AgreeDeletedEventHandler(ISqlSugarRepository userRepository, ISqlSugarRepository agreeRepository) + { + _userRepository = userRepository; + _agreeRepository = agreeRepository; + } + public async Task HandleEventAsync(EntityCreatedEventData eventData) + { + var agreeEntity = eventData.Entity; + var userId = await _agreeRepository._DbQueryable.LeftJoin((agree, discuss) => agree.DiscussId == discuss.Id) + .Select((agree, discuss) => discuss.CreatorId).FirstAsync(); + + //给创建者发布数量-1 + await _userRepository._Db.Updateable() + .SetColumns(it => it.DiscussNumber == it.DiscussNumber - 1) + .Where(it => it.Id == userId) + .ExecuteCommandAsync(); + } + } +} diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/CommentCreatedEventHandler.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/CommentCreatedEventHandler.cs new file mode 100644 index 00000000..c668be3e --- /dev/null +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/CommentCreatedEventHandler.cs @@ -0,0 +1,32 @@ +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Entities.Events; +using Volo.Abp.EventBus; +using Yi.Framework.Bbs.Domain.Entities; +using Yi.Framework.Bbs.Domain.Entities.Forum; +using Yi.Framework.SqlSugarCore.Abstractions; + +namespace Yi.Framework.Bbs.Domain.EventHandlers +{ + /// + /// 评论创建的领域事件 + /// + public class CommentCreatedEventHandler : ILocalEventHandler>, + ITransientDependency + { + private ISqlSugarRepository _userRepository; + public CommentCreatedEventHandler(ISqlSugarRepository userRepository) + { + _userRepository = userRepository; + } + public async Task HandleEventAsync(EntityCreatedEventData eventData) + { + var commentEntity = eventData.Entity; + + //给创建者发布数量+1 + await _userRepository._Db.Updateable() + .SetColumns(it => it.CommentNumber == it.CommentNumber + 1) + .Where(it => it.Id == commentEntity.CreatorId) + .ExecuteCommandAsync(); + } + } +} diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/DiscussCreatedEventHandler.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/DiscussCreatedEventHandler.cs new file mode 100644 index 00000000..e26fb3d6 --- /dev/null +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/DiscussCreatedEventHandler.cs @@ -0,0 +1,32 @@ +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Entities.Events; +using Volo.Abp.EventBus; +using Yi.Framework.Bbs.Domain.Entities; +using Yi.Framework.Bbs.Domain.Entities.Forum; +using Yi.Framework.SqlSugarCore.Abstractions; + +namespace Yi.Framework.Bbs.Domain.EventHandlers +{ + /// + /// 主题创建的领域事件 + /// + public class DiscussCreatedEventHandler : ILocalEventHandler>, + ITransientDependency + { + private ISqlSugarRepository _userRepository; + public DiscussCreatedEventHandler(ISqlSugarRepository userRepository) + { + _userRepository = userRepository; + } + public async Task HandleEventAsync(EntityCreatedEventData eventData) + { + var disucussEntity = eventData.Entity; + + //给创建者发布数量+1 + await _userRepository._Db.Updateable() + .SetColumns(it => it.DiscussNumber == it.DiscussNumber + 1) + .Where(it => it.Id == disucussEntity.CreatorId) + .ExecuteCommandAsync(); + } + } +} diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/EventHandlers/MoneyChangeEventHandler.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/MoneyChangeEventHandler.cs similarity index 94% rename from Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/EventHandlers/MoneyChangeEventHandler.cs rename to Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/MoneyChangeEventHandler.cs index 59ff5286..1d2fa2b2 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/EventHandlers/MoneyChangeEventHandler.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/MoneyChangeEventHandler.cs @@ -4,7 +4,7 @@ using Yi.Framework.Bbs.Domain.Entities; using Yi.Framework.Bbs.Domain.Shared.Etos; using Yi.Framework.SqlSugarCore.Abstractions; -namespace Yi.Framework.Bbs.Application.EventHandlers +namespace Yi.Framework.Bbs.Domain.EventHandlers { public class MoneyChangeEventHandler : ILocalEventHandler, ITransientDependency { diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/EventHandlers/SeeDiscussEventHandler.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/SeeDiscussEventHandler.cs similarity index 94% rename from Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/EventHandlers/SeeDiscussEventHandler.cs rename to Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/SeeDiscussEventHandler.cs index 73f4f786..b81529f4 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/EventHandlers/SeeDiscussEventHandler.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/SeeDiscussEventHandler.cs @@ -9,7 +9,7 @@ using Volo.Abp.EventBus; using Yi.Framework.Bbs.Domain.Entities.Forum; using Yi.Framework.Bbs.Domain.Shared.Etos; -namespace Yi.Framework.Bbs.Application.EventHandlers +namespace Yi.Framework.Bbs.Domain.EventHandlers { public class SeeDiscussEventHandler : ILocalEventHandler, ITransientDependency { diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/EventHandlers/UserCreateEventHandler.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/UserCreateEventHandler.cs similarity index 94% rename from Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/EventHandlers/UserCreateEventHandler.cs rename to Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/UserCreateEventHandler.cs index ee86c053..c2684072 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/EventHandlers/UserCreateEventHandler.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/UserCreateEventHandler.cs @@ -5,7 +5,7 @@ using Yi.Framework.Bbs.Domain.Entities; using Yi.Framework.Bbs.Domain.Shared.Enums; using Yi.Framework.Rbac.Domain.Shared.Etos; -namespace Yi.Framework.Bbs.Application.EventHandlers +namespace Yi.Framework.Bbs.Domain.EventHandlers { public class UserCreateEventHandler : ILocalEventHandler, ITransientDependency { diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BbsUserManager.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BbsUserManager.cs index 31916865..6d0bd937 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BbsUserManager.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BbsUserManager.cs @@ -31,7 +31,10 @@ namespace Yi.Framework.Bbs.Domain.Managers Level=info.Level, UserLimit=info.UserLimit, Money = info.Money, - Experience = info.Experience + Experience = info.Experience, + AgreeNumber=info.AgreeNumber, + CommentNumber=info.CommentNumber, + DiscussNumber=info.DiscussNumber }, true) .FirstAsync(user => user.Id==userId); } @@ -43,7 +46,10 @@ namespace Yi.Framework.Bbs.Domain.Managers .LeftJoin((user, info) => user.Id == info.UserId) .Select((user, info) => new BbsUserInfoDto { Id = user.Id , Icon = user.Icon , Level = info.Level, UserLimit = info.UserLimit, Money = info.Money, - Experience = info.Experience + Experience = info.Experience, + AgreeNumber = info.AgreeNumber, + CommentNumber = info.CommentNumber, + DiscussNumber = info.DiscussNumber },true) .ToListAsync(); @@ -90,5 +96,18 @@ namespace Yi.Framework.Bbs.Domain.Managers /// public long Experience { get; set; } + public int DiscussNumber { get; set; } + + /// + /// 发表主题数 + /// + public int CommentNumber { get; set; } + + + /// + /// 被点赞数 + /// + public int AgreeNumber { get; set; } + } } diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/EventHandlers/LoginEventHandler.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/EventHandlers/LoginEventHandler.cs similarity index 96% rename from Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/EventHandlers/LoginEventHandler.cs rename to Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/EventHandlers/LoginEventHandler.cs index 6bb5a407..17d2dd86 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/EventHandlers/LoginEventHandler.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/EventHandlers/LoginEventHandler.cs @@ -11,7 +11,7 @@ using Volo.Abp.EventBus; using Yi.Framework.Rbac.Domain.Entities; using Yi.Framework.Rbac.Domain.Shared.Etos; -namespace Yi.Framework.Rbac.Application.EventHandlers +namespace Yi.Framework.Rbac.Domain.EventHandlers { public class LoginEventHandler : ILocalEventHandler, ITransientDependency diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/EventHandlers/StudentEventHandler.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/EventHandlers/StudentEventHandler.cs similarity index 90% rename from Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/EventHandlers/StudentEventHandler.cs rename to Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/EventHandlers/StudentEventHandler.cs index 776eea4a..4ded4f5d 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/EventHandlers/StudentEventHandler.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/EventHandlers/StudentEventHandler.cs @@ -3,7 +3,7 @@ using Volo.Abp.Domain.Entities.Events; using Volo.Abp.EventBus; using Yi.Framework.Rbac.Domain.Entities; -namespace Yi.Framework.Rbac.Application.EventHandlers +namespace Yi.Framework.Rbac.Domain.EventHandlers { public class StudentEventHandler : ILocalEventHandler>, ITransientDependency { diff --git a/Yi.Abp.Net8/sample/Acme.BookStore.Application/Acme.BookStore.Application.csproj b/Yi.Abp.Net8/sample/Acme.BookStore.Application/Acme.BookStore.Application.csproj index 22d147c8..505b2fe7 100644 --- a/Yi.Abp.Net8/sample/Acme.BookStore.Application/Acme.BookStore.Application.csproj +++ b/Yi.Abp.Net8/sample/Acme.BookStore.Application/Acme.BookStore.Application.csproj @@ -15,7 +15,7 @@ - + diff --git a/Yi.Abp.Net8/sample/Acme.BookStore.Domain/Acme.BookStore.Domain.csproj b/Yi.Abp.Net8/sample/Acme.BookStore.Domain/Acme.BookStore.Domain.csproj index 74053ef1..2054a637 100644 --- a/Yi.Abp.Net8/sample/Acme.BookStore.Domain/Acme.BookStore.Domain.csproj +++ b/Yi.Abp.Net8/sample/Acme.BookStore.Domain/Acme.BookStore.Domain.csproj @@ -17,6 +17,7 @@ + diff --git a/Yi.Abp.Net8/src/Yi.Abp.Application/Yi.Abp.Application.csproj b/Yi.Abp.Net8/src/Yi.Abp.Application/Yi.Abp.Application.csproj index e4cdbd88..2371f0ed 100644 --- a/Yi.Abp.Net8/src/Yi.Abp.Application/Yi.Abp.Application.csproj +++ b/Yi.Abp.Net8/src/Yi.Abp.Application/Yi.Abp.Application.csproj @@ -13,8 +13,5 @@ - - - diff --git a/Yi.Abp.Net8/src/Yi.Abp.Domain/Yi.Abp.Domain.csproj b/Yi.Abp.Net8/src/Yi.Abp.Domain/Yi.Abp.Domain.csproj index 40a50937..7a593f0c 100644 --- a/Yi.Abp.Net8/src/Yi.Abp.Domain/Yi.Abp.Domain.csproj +++ b/Yi.Abp.Net8/src/Yi.Abp.Domain/Yi.Abp.Domain.csproj @@ -17,6 +17,7 @@ +