|  | @@ -16,6 +16,7 @@ using ZhonTai.Admin.Domain;
 | 
	
		
			
				|  |  |  using ZhonTai.Admin.Domain.Org;
 | 
	
		
			
				|  |  |  using ZhonTai.Admin.Domain.RoleOrg;
 | 
	
		
			
				|  |  |  using System.Collections.Generic;
 | 
	
		
			
				|  |  | +using ZhonTai.Admin.Repositories;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  namespace ZhonTai.Admin.Services.Role;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -250,14 +251,15 @@ public class RoleService : BaseService, IRoleService, IDynamicApi
 | 
	
		
			
				|  |  |      [AdminTransaction]
 | 
	
		
			
				|  |  |      public virtual async Task DeleteAsync(long id)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  | -        var userIds = await _userRoleRepository.Select.Where(a => a.RoleId == id).ToListAsync(a => a.UserId);
 | 
	
		
			
				|  |  | +        var roleIdList = await _roleRepository.GetChildIdListAsync(id);
 | 
	
		
			
				|  |  | +        var userIds = await _userRoleRepository.Select.Where(a => roleIdList.Contains(a.RoleId)).ToListAsync(a => a.UserId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //删除用户角色
 | 
	
		
			
				|  |  |          await _userRoleRepository.DeleteAsync(a => a.UserId == id);
 | 
	
		
			
				|  |  |          //删除角色权限
 | 
	
		
			
				|  |  | -        await _rolePermissionRepository.DeleteAsync(a => a.RoleId == id);
 | 
	
		
			
				|  |  | +        await _rolePermissionRepository.DeleteAsync(a => roleIdList.Contains(a.RoleId));
 | 
	
		
			
				|  |  |          //删除角色
 | 
	
		
			
				|  |  | -        await _roleRepository.DeleteAsync(m => m.Id == id);
 | 
	
		
			
				|  |  | +        await _roleRepository.DeleteAsync(a => roleIdList.Contains(a.Id));
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  |          foreach (var userId in userIds)
 | 
	
		
			
				|  |  |          {
 | 
	
	
		
			
				|  | @@ -273,13 +275,15 @@ public class RoleService : BaseService, IRoleService, IDynamicApi
 | 
	
		
			
				|  |  |      [AdminTransaction]
 | 
	
		
			
				|  |  |      public virtual async Task BatchDeleteAsync(long[] ids)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  | -        var userIds = await _userRoleRepository.Select.Where(a => ids.Contains(a.RoleId)).ToListAsync(a => a.UserId);
 | 
	
		
			
				|  |  | +        var roleIdList = await _roleRepository.GetChildIdListAsync(ids);
 | 
	
		
			
				|  |  | +        var userIds = await _userRoleRepository.Select.Where(a => roleIdList.Contains(a.RoleId)).ToListAsync(a => a.UserId);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          //删除用户角色
 | 
	
		
			
				|  |  | -        await _userRoleRepository.DeleteAsync(a => ids.Contains(a.RoleId));
 | 
	
		
			
				|  |  | +        await _userRoleRepository.DeleteAsync(a => roleIdList.Contains(a.RoleId));
 | 
	
		
			
				|  |  |          //删除角色权限
 | 
	
		
			
				|  |  | -        await _rolePermissionRepository.DeleteAsync(a => ids.Contains(a.RoleId));
 | 
	
		
			
				|  |  | +        await _rolePermissionRepository.DeleteAsync(a => roleIdList.Contains(a.RoleId));
 | 
	
		
			
				|  |  |          //删除角色
 | 
	
		
			
				|  |  | -        await _roleRepository.DeleteAsync(a => ids.Contains(a.Id));
 | 
	
		
			
				|  |  | +        await _roleRepository.Where(a => roleIdList.Contains(a.Id)).AsTreeCte().ToDelete().ExecuteAffrowsAsync();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          foreach (var userId in userIds)
 | 
	
		
			
				|  |  |          {
 | 
	
	
		
			
				|  | @@ -295,10 +299,11 @@ public class RoleService : BaseService, IRoleService, IDynamicApi
 | 
	
		
			
				|  |  |      [AdminTransaction]
 | 
	
		
			
				|  |  |      public virtual async Task SoftDeleteAsync(long id)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  | -        var userIds = await _userRoleRepository.Select.Where(a => a.RoleId == id).ToListAsync(a => a.UserId);
 | 
	
		
			
				|  |  | -        await _userRoleRepository.DeleteAsync(a => a.RoleId == id);
 | 
	
		
			
				|  |  | -        await _rolePermissionRepository.DeleteAsync(a => a.RoleId == id);
 | 
	
		
			
				|  |  | -        await _roleRepository.SoftDeleteAsync(id);
 | 
	
		
			
				|  |  | +        var roleIdList = await _roleRepository.GetChildIdListAsync(id);
 | 
	
		
			
				|  |  | +        var userIds = await _userRoleRepository.Select.Where(a => roleIdList.Contains(a.RoleId)).ToListAsync(a => a.UserId);
 | 
	
		
			
				|  |  | +        await _userRoleRepository.DeleteAsync(a => roleIdList.Contains(a.RoleId));
 | 
	
		
			
				|  |  | +        await _rolePermissionRepository.DeleteAsync(a => roleIdList.Contains(a.RoleId));
 | 
	
		
			
				|  |  | +        await _roleRepository.SoftDeleteRecursiveAsync(a => roleIdList.Contains(a.Id));
 | 
	
		
			
				|  |  |          foreach (var userId in userIds)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              await Cache.DelAsync(CacheKeys.DataPermission + userId);
 | 
	
	
		
			
				|  | @@ -313,10 +318,11 @@ public class RoleService : BaseService, IRoleService, IDynamicApi
 | 
	
		
			
				|  |  |      [AdminTransaction]
 | 
	
		
			
				|  |  |      public virtual async Task BatchSoftDeleteAsync(long[] ids)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  | +        var roleIdList = await _roleRepository.GetChildIdListAsync(ids);
 | 
	
		
			
				|  |  |          var userIds = await _userRoleRepository.Select.Where(a => ids.Contains(a.RoleId)).ToListAsync(a => a.UserId);
 | 
	
		
			
				|  |  | -        await _userRoleRepository.DeleteAsync(a => ids.Contains(a.RoleId));
 | 
	
		
			
				|  |  | -        await _rolePermissionRepository.DeleteAsync(a => ids.Contains(a.RoleId));
 | 
	
		
			
				|  |  | -        await _roleRepository.SoftDeleteAsync(ids);
 | 
	
		
			
				|  |  | +        await _userRoleRepository.DeleteAsync(a => roleIdList.Contains(a.RoleId));
 | 
	
		
			
				|  |  | +        await _rolePermissionRepository.DeleteAsync(a => roleIdList.Contains(a.RoleId));
 | 
	
		
			
				|  |  | +        await _roleRepository.SoftDeleteRecursiveAsync(a => roleIdList.Contains(a.Id));
 | 
	
		
			
				|  |  |          foreach (var userId in userIds)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              await Cache.DelAsync(CacheKeys.DataPermission + userId);
 |