/// <summary> /// 批量保存 /// </summary> /// <param name="list"></param> /// <param name="menuId"></param> /// <returns></returns> public async Task BatchInsertMenuAppAuthorizeAsync(List <MenuAppAuthorize> list, long menuId) { var keyArray = new List <long>(); using (var unitOfWork = _unitOfWorkManager.Begin()) //启用工作单元 { var first = list.FirstOrDefault(); foreach (var item in list) { Expression <Func <MenuAppAuthorize, bool> > where = w => w.MenuId == item.MenuId && w.MenuCode == item.MenuCode && w.AppCode == item.AppCode && w.OperationCode == item.OperationCode; var predicate = new PredicateGroup <MenuAppAuthorize>(); predicate.AddPredicate(true, where); var entity = await _repository.QueryEntityAsync(predicate.Predicates); if (entity != null) { keyArray.Add(entity.Id); } else { var key = await _repository.InsertAndGetIdAsync(item); keyArray.Add(key); } } if (first != null) { await _repository.DeleteAsync(x => !(keyArray.Contains(x.Id)) && x.MenuId == first.MenuId); } else { await _repository.DeleteAsync(x => x.MenuId == menuId); } await unitOfWork.CompleteAsync(); } }
/// <summary> /// 删除角色 /// </summary> /// <param name="id">角色编号</param> /// <returns></returns> public async Task Delete(long id) { var incloudNames = new List <string> { "Menus", "UserBases" }; var info = await GetRoleByIdAsync(id, incloudNames); if (info.IsSystem) { throw new UserFriendlyException("该角色为系统角色,不允许删除"); } if (info.UserBases.Any()) { throw new UserFriendlyException("该角色已关联用户,不允许删除"); } if (info.Menus.Any()) { throw new UserFriendlyException("该角色已关联菜单,不允许删除"); } await _roleRepository.DeleteAsync(id); }
/// <summary> /// 删除 /// </summary> /// <param name="managerId"></param> /// <returns></returns> public async Task DeleteManagerAsync(long managerId) { //获取管理员表数据删除 var entity = await GetManagerByIdAsync(managerId, new List <string>()); await _managerRepository.DeleteAsync(entity); //获取用户基础表数据删除 var user = await _userBaseRepository.GetAll() .Where(x => x.Id == entity.UserId) .Include("Roles") .Include("UserClaims") .FirstOrDefaultAsync(); //删除用户的申明表集合 if (user.UserClaims != null && user.UserClaims.Any()) { var deleteIds = user.UserClaims.Select(x => x.Id); await _userClaimRepository.DeleteAsync(x => deleteIds.Contains(x.Id)); } await _userBaseRepository.DeleteAsync(user); }