OrganizationUnitRoleRemover.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using Abp.Dependency;
  2. using Abp.Domain.Repositories;
  3. using Abp.Domain.Uow;
  4. using Abp.Events.Bus.Entities;
  5. using Abp.Events.Bus.Handlers;
  6. using VberZero.BaseSystem.Organizations;
  7. using VberZero.BaseSystem.Roles;
  8. namespace VberZero.Organizations;
  9. /// <summary>
  10. /// 删除角色时从所有组织单位中删除角色。
  11. /// </summary>
  12. public class OrganizationUnitRoleRemover :
  13. IEventHandler<EntityDeletedEventData<Role>>,
  14. ITransientDependency
  15. {
  16. private readonly IRepository<OrganizationUnitRole, long> _organizationUniRoleRepository;
  17. private readonly IUnitOfWorkManager _unitOfWorkManager;
  18. public OrganizationUnitRoleRemover(
  19. IRepository<OrganizationUnitRole, long> organizationUniRoleRepository,
  20. IUnitOfWorkManager unitOfWorkManager)
  21. {
  22. _organizationUniRoleRepository = organizationUniRoleRepository;
  23. _unitOfWorkManager = unitOfWorkManager;
  24. }
  25. public virtual void HandleEvent(EntityDeletedEventData<Role> eventData)
  26. {
  27. _unitOfWorkManager.WithUnitOfWork(() =>
  28. {
  29. using (_unitOfWorkManager.Current.SetTenantId(eventData.Entity.TenantId))
  30. {
  31. _organizationUniRoleRepository.Delete(
  32. uou => uou.RoleId == eventData.Entity.Id
  33. );
  34. }
  35. });
  36. }
  37. }