/// <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();
            }
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }