|
@@ -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);
|