using Volo.Abp.Domain.Services; using Yi.Framework.Rbac.Domain.Entities; using Yi.Framework.SqlSugarCore.Abstractions; namespace Yi.Framework.Rbac.Domain.Managers { public class RoleManager : DomainService { private ISqlSugarRepository _repository; private ISqlSugarRepository _roleMenuRepository; private ISqlSugarRepository _userRoleRepository; public RoleManager(ISqlSugarRepository repository, ISqlSugarRepository roleMenuRepository, ISqlSugarRepository userRoleRepository) { _repository = repository; _roleMenuRepository = roleMenuRepository; _userRoleRepository = userRoleRepository; } /// /// 给角色设置菜单 /// /// /// /// public async Task GiveRoleSetMenuAsync(List roleIds, List menuIds) { //这个是需要事务的,在service中进行工作单元 await _roleMenuRepository.DeleteAsync(u => roleIds.Contains(u.RoleId)); //添加新的关系 List roleMenuEntity = new(); //遍历用户 foreach (var roleId in roleIds) { foreach (var menu in menuIds) { roleMenuEntity.Add(new RoleMenuEntity() { RoleId = roleId, MenuId = menu }); } } //一次性批量添加 await _roleMenuRepository.InsertRangeAsync(roleMenuEntity); } /// /// 根据角色名称移除指定用户的角色 /// /// 用户ID列表 /// 角色名称 /// 移除的角色关系数量 public async Task RemoveUserRoleByRoleCodeAsync(List userIds, string roleName) { // 获取角色ID var role = await _repository._DbQueryable .Where(x => x.RoleCode == roleName) .FirstAsync(); if (role == null) { return 0; } // 移除用户角色关系 var removedCount = await _userRoleRepository._Db.Deleteable() .Where(x => userIds.Contains(x.UserId) && x.RoleId == role.Id) .ExecuteCommandAsync(); return removedCount; } } }