/// <summary>
        /// 查询不在role中的menu
        /// </summary>
        /// <param name="roleId"></param>
        /// <param name="dirLevel"></param>
        /// <returns></returns>
        public List <RoleProp> searchRoleMenusNotInRoleId(string roleId, DirLevel level)
        {
            List <RoleMenu> containsMenu = searchRoleMenusAsync(roleId);
            List <RoleProp> result       = new List <RoleProp>();

            switch (level)
            {
            case DirLevel.FirstLevel:
                FirstLevelDirDAO  daoF     = new FirstLevelDirDAO();
                List <FirstLevel> firstAll = daoF.getFirstLevelDirList();
                result = (from x in firstAll
                          where !(containsMenu.Where(y => y.menuLevel == 1).Select(y => y.menuId).Contains(x.id))
                          select new RoleProp
                {
                    menuId = x.id,
                    menuName = x.midContent
                }).ToList();
                break;

            case DirLevel.SecondLevel:
                SecondLevelDirDAO  daoS      = new SecondLevelDirDAO();
                List <SecondLevel> secondAll = daoS.getSecondLevelDirList();
                result = (from x in secondAll
                          where !(containsMenu.Where(y => y.menuLevel == 2).Select(y => y.menuId).Contains(x.id))
                          select new RoleProp
                {
                    menuId = x.id,
                    menuName = x.title
                }).ToList();
                break;

            //case DirLevel.ThirdLLevel:
            //    ThirdLevelDirDAO daoT = new ThirdLevelDirDAO();
            //    List<ThirdLevel> thirdAll = daoT.getThirdLevelDirList();
            //    result = (from x in thirdAll
            //              where !(containsMenu.Where(y => y.menuLevel ==3 ).Select(y => y.menuId).Contains(x.id))
            //              select new RoleProp
            //              {
            //                  menuId = x.id,
            //                  menuName = x.title
            //              }).ToList();
            //    break;
            default:
                break;
            }
            return(result);
        }
        /// <summary>
        /// add roleMenu  range
        /// </summary>
        /// <param name="roleId"></param>
        /// <param name="level"></param>
        /// <param name="menuIds"></param>
        /// <returns></returns>
        public async Task <Result <RoleMenu> > addRoleMenuRangeAsync(string roleId, DirLevel level, int[] menuIds)
        {
            Result <RoleMenu> result = new Result <RoleMenu>();
            List <RoleMenu>   list   = new List <RoleMenu>();

            foreach (var item in menuIds)
            {
                list.Add(new RoleMenu
                {
                    menuId    = item,
                    menuLevel = Convert.ToInt32(level),
                    roleId    = roleId
                });
            }
            result = await roleMenuDAO.addRoleMenuRangeAsync(list);

            return(result);
        }