using Abp.Dependency; using Abp.Domain.Repositories; using Abp.Domain.Uow; using Abp.Events.Bus.Entities; using Abp.Events.Bus.Handlers; using VberZero.BaseSystem.Organizations; using VberZero.BaseSystem.Roles; namespace VberZero.Organizations; /// /// 删除角色时从所有组织单位中删除角色。 /// public class OrganizationUnitRoleRemover : IEventHandler>, ITransientDependency { private readonly IRepository _organizationUniRoleRepository; private readonly IUnitOfWorkManager _unitOfWorkManager; public OrganizationUnitRoleRemover( IRepository organizationUniRoleRepository, IUnitOfWorkManager unitOfWorkManager) { _organizationUniRoleRepository = organizationUniRoleRepository; _unitOfWorkManager = unitOfWorkManager; } public virtual void HandleEvent(EntityDeletedEventData eventData) { _unitOfWorkManager.WithUnitOfWork(() => { using (_unitOfWorkManager.Current.SetTenantId(eventData.Entity.TenantId)) { _organizationUniRoleRepository.Delete( uou => uou.RoleId == eventData.Entity.Id ); } }); } }