using Abp.Dependency; using Abp.Domain.Repositories; using Abp.Domain.Uow; using Abp.Events.Bus.Entities; using Abp.Events.Bus.Handlers; using VberZero.BaseSystem.Users; namespace VberZero.Authorization.Users; /// /// 删除用户时从所有组织单位中删除该用户。 /// public class UserOrganizationUnitRemover : IEventHandler>, ITransientDependency { private readonly IRepository _userOrganizationUnitRepository; private readonly IUnitOfWorkManager _unitOfWorkManager; public UserOrganizationUnitRemover( IRepository userOrganizationUnitRepository, IUnitOfWorkManager unitOfWorkManager) { _userOrganizationUnitRepository = userOrganizationUnitRepository; _unitOfWorkManager = unitOfWorkManager; } public virtual void HandleEvent(EntityDeletedEventData eventData) { _unitOfWorkManager.WithUnitOfWork(() => { using (_unitOfWorkManager.Current.SetTenantId(eventData.Entity.TenantId)) { _userOrganizationUnitRepository.Delete( uou => uou.UserId == eventData.Entity.Id ); } }); } }