UserOrganizationUnitRemover.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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.Users;
  7. namespace VberZero.Authorization.Users;
  8. /// <summary>
  9. /// 删除用户时从所有组织单位中删除该用户。
  10. /// </summary>
  11. public class UserOrganizationUnitRemover :
  12. IEventHandler<EntityDeletedEventData<User>>,
  13. ITransientDependency
  14. {
  15. private readonly IRepository<UserOrganizationUnit, long> _userOrganizationUnitRepository;
  16. private readonly IUnitOfWorkManager _unitOfWorkManager;
  17. public UserOrganizationUnitRemover(
  18. IRepository<UserOrganizationUnit, long> userOrganizationUnitRepository,
  19. IUnitOfWorkManager unitOfWorkManager)
  20. {
  21. _userOrganizationUnitRepository = userOrganizationUnitRepository;
  22. _unitOfWorkManager = unitOfWorkManager;
  23. }
  24. public virtual void HandleEvent(EntityDeletedEventData<User> eventData)
  25. {
  26. _unitOfWorkManager.WithUnitOfWork(() =>
  27. {
  28. using (_unitOfWorkManager.Current.SetTenantId(eventData.Entity.TenantId))
  29. {
  30. _userOrganizationUnitRepository.Delete(
  31. uou => uou.UserId == eventData.Entity.Id
  32. );
  33. }
  34. });
  35. }
  36. }