private void BindRoleFunction(List <sys_menu> menu_list, List <sys_rolemenufunction> trmf_list, List <sys_function> tf_list, List <sys_menufunction> tmf_list, MenuRoleList model, string roleid)
        {
            var list = new List <MenuRoleList>();

            //找出该菜单下的功能和选中的功能
            tf_list.ForEach(a =>
            {
                if (tmf_list.FindAll(val => val.MenuFunction_FunctionID.Equals(a.Function_ID) &&
                                     val.MenuFunction_MenuID.Equals(model.id)).Count > 0)
                {
                    var dic           = new MenuRoleList();
                    dic.id            = a.Function_ID;
                    dic.title         = a.Function_Name;
                    dic.parentId      = model.id;
                    dic.disabled      = "true";
                    dic.basicData     = new { menuId = model.id, functionId = a.Function_ID };
                    CheckArr checkArr = new CheckArr();
                    checkArr.type     = "0";
                    //判断该功能是否选中
                    var ischecked = trmf_list.Find(x => x.RoleMenuFunction_FunctionID.Equals(a.Function_ID) && x.RoleMenuFunction_MenuID.Equals(model.id) && x.RoleMenuFunction_RoleID.Equals(roleid));
                    if (ischecked != null)
                    {
                        checkArr.isChecked = "1";
                    }
                    else
                    {
                        checkArr.isChecked = "0";
                    }
                    var clist = new List <CheckArr>();
                    clist.Add(checkArr);
                    dic.checkArr = clist;
                    list.Add(dic);
                }
            });
            model.children = list;
        }
        private void BindMenuRoleList(List <sys_menu> menu_list, List <sys_rolemenufunction> trmf_list, List <sys_function> tf_list, List <sys_menufunction> tmf_list, MenuRoleList model, string roleid)
        {
            var dic = new MenuRoleList();

            var _paret_menu_list = menu_list.FindAll(item => item.Menu_ParentID != null && item.Menu_ParentID.Equals(model.id));

            var list = new List <MenuRoleList>();

            foreach (var item in _paret_menu_list)
            {
                var _child_menu_list = menu_list.FindAll(x => x.Menu_ParentID != null && x.Menu_ParentID.Equals(item.Menu_ID));
                //判断是否有子集
                if (_child_menu_list.Count > 0)
                {
                    dic           = new MenuRoleList();
                    dic.id        = item.Menu_ID;
                    dic.title     = item.Menu_Name + "(" + item.Menu_Num + ")";
                    dic.parentId  = item.Menu_ParentID;
                    dic.basicData = new { menuId = item.Menu_ID, functionId = HaveID };
                    CheckArr checkArr = new CheckArr();
                    checkArr.type = "0";
                    //判断该功能是否选中
                    var ischecked = trmf_list.Find(p => p.RoleMenuFunction_FunctionID.Equals(HaveID) && p.RoleMenuFunction_MenuID == item.Menu_ID && p.RoleMenuFunction_RoleID.Equals(roleid));
                    if (ischecked != null)
                    {
                        checkArr.isChecked = "1";
                    }
                    else
                    {
                        checkArr.isChecked = "0";
                    }
                    var clist = new List <CheckArr>();
                    clist.Add(checkArr);
                    dic.checkArr = clist;
                    BindMenuRoleList(menu_list, trmf_list, tf_list, tmf_list, dic, roleid);
                    list.Add(dic);
                }
                else
                {
                    dic           = new MenuRoleList();
                    dic.id        = item.Menu_ID;
                    dic.title     = item.Menu_Name + "(" + item.Menu_Num + ")";
                    dic.parentId  = item.Menu_ParentID;
                    dic.basicData = new { menuId = item.Menu_ID, functionId = HaveID };
                    CheckArr checkArr = new CheckArr();
                    checkArr.type = "0";
                    //判断该功能是否选中
                    var ischecked = trmf_list.Find(p => p.RoleMenuFunction_FunctionID.Equals(HaveID) && p.RoleMenuFunction_MenuID == item.Menu_ID && p.RoleMenuFunction_RoleID.Equals(roleid));
                    if (ischecked != null)
                    {
                        checkArr.isChecked = "1";
                    }
                    else
                    {
                        checkArr.isChecked = "0";
                    }
                    var clist = new List <CheckArr>();
                    clist.Add(checkArr);
                    dic.checkArr = clist;
                    BindRoleFunction(menu_list, trmf_list, tf_list, tmf_list, dic, roleid);
                    list.Add(dic);
                }
                model.children = list;
            }
        }
        ///// <summary>
        ///// 获取角色对应的功能树
        ///// </summary>
        ///// <returns></returns>
        //public List<Dictionary<string, object>> GetRoleMenuFunctionTree(string roleid)
        //{
        //    var dic = new Dictionary<string, object>();
        //    var menu_list = (List<sys_menu>)_Sys_MenuRepositoryS.FindListByClause(null, "Menu_Num desc");
        //    var trmf_list = (List<sys_rolemenufunction>)_Sys_RoleMenuFunctionRepository.FindListByClause(p => p.RoleMenuFunction_RoleID == roleid, "RoleMenuFunction_CreateTime asc");//角色菜单功能
        //    var tf_list = (List<sys_function>)_Sys_FunctionRepositoryS.FindListByClause(null, "Function_Num asc");//功能
        //    var tmf_list = (List<sys_menufunction>)_Sys_MenuFunctionRepositoryS.FindAll();//菜单功能

        //    var list = new List<Dictionary<string, object>>();
        //    var _paret_menu_list = menu_list.FindAll(item => item.Menu_ParentID == null || item.Menu_ParentID == "");
        //    for (int i = _paret_menu_list.Count - 1; i >= 0; i--)
        //    {
        //        var _child_menu_list = menu_list.FindAll(x => x.Menu_ParentID != null && x.Menu_ParentID.Equals(_paret_menu_list[i].Menu_ID));
        //        //判断是否有子集
        //        if (_child_menu_list.Count > 0)
        //        {
        //            dic = new Dictionary<string, object>();
        //            dic.Add("name", _paret_menu_list[i].Menu_Name + "(" + _paret_menu_list[i].Menu_Num + ")");
        //            dic.Add("id", _paret_menu_list[i].Menu_ID);
        //            dic.Add("pId", _paret_menu_list[i].Menu_ParentID);
        //            dic.Add("num", _paret_menu_list[i].Menu_Num);
        //            dic.Add("ur", _paret_menu_list[i].Menu_Url);
        //            dic.Add("tag", null);
        //            dic.Add("checkeds", false);
        //            list.Add(dic);
        //            this.FindChildMenu(menu_list, trmf_list, tf_list, tmf_list, _paret_menu_list[i], roleid, list);
        //        }
        //        else
        //        {
        //            if (tmf_list.FindAll(val => val.MenuFunction_MenuID.Equals(_paret_menu_list[i].Menu_ID)).Count == 0)//判断该菜单是否有 勾选了功能 如果没有则删除
        //            {
        //                _paret_menu_list.RemoveAt(i);
        //                continue;
        //            }

        //            dic = new Dictionary<string, object>();
        //            dic.Add("name", _paret_menu_list[i].Menu_Name + "(" + _paret_menu_list[i].Menu_Num + ")");
        //            dic.Add("id", _paret_menu_list[i].Menu_ID);
        //            dic.Add("pId", _paret_menu_list[i].Menu_ParentID);
        //            dic.Add("num", _paret_menu_list[i].Menu_Num);
        //            dic.Add("ur", _paret_menu_list[i].Menu_Url);
        //            dic.Add("tag", null);
        //            dic.Add("checkeds", false);
        //            list.Add(dic);

        //            //找出该菜单下的功能和选中的功能
        //            foreach (var a in tf_list)
        //            {
        //                if (tmf_list.FindAll(val => val.MenuFunction_FunctionID.Equals(a.Function_ID)
        //                    && val.MenuFunction_MenuID.Equals(_paret_menu_list[i].Menu_ID)).Count > 0)
        //                {
        //                    dic = new Dictionary<string, object>();
        //                    dic.Add("name", a.Function_Name);
        //                    dic.Add("id", a.Function_ID);
        //                    dic.Add("pId", _paret_menu_list[i].Menu_ID);
        //                    dic.Add("num", a.Function_Num);
        //                    dic.Add("ur", null);
        //                    dic.Add("tag", "fun");
        //                    //判断该功能是否选中
        //                    var ischecked = trmf_list.Find(x => x.RoleMenuFunction_FunctionID.Equals(a.Function_ID) && x.RoleMenuFunction_MenuID.Equals(_paret_menu_list[i].Menu_ID) && x.RoleMenuFunction_RoleID.Equals(roleid));
        //                    if (ischecked == null)
        //                        dic.Add("checkeds", false);
        //                    else
        //                        dic.Add("checkeds", true);
        //                    list.Add(dic);
        //                }
        //            }
        //        }
        //    }
        //    return list;
        //}

        //private void FindChildMenu(List<sys_menu> menu_list, List<sys_rolemenufunction> trmf_list, List<sys_function> tf_list, List<sys_menufunction> tmf_list, sys_menu menu, string roleid, List<Dictionary<string, object>> list)
        //{
        //    var dic = new Dictionary<string, object>();

        //    var _paret_menu_list = menu_list.FindAll(item => item.Menu_ParentID != null && item.Menu_ParentID.Equals(menu.Menu_ID));

        //    for (int i = _paret_menu_list.Count - 1; i >= 0; i--)
        //    {
        //        var _child_menu_list = menu_list.FindAll(x => x.Menu_ParentID != null && x.Menu_ParentID.Equals(_paret_menu_list[i].Menu_ID));
        //        //判断是否有子集
        //        if (_child_menu_list.Count > 0)
        //        {
        //            dic = new Dictionary<string, object>();
        //            dic.Add("name", _paret_menu_list[i].Menu_Name + "(" + _paret_menu_list[i].Menu_Num + ")");
        //            dic.Add("id", _paret_menu_list[i].Menu_ID);
        //            dic.Add("pId", _paret_menu_list[i].Menu_ParentID);
        //            dic.Add("num", _paret_menu_list[i].Menu_Num);
        //            dic.Add("ur", _paret_menu_list[i].Menu_Url);
        //            dic.Add("tag", null);
        //            dic.Add("checkeds", false);
        //            list.Add(dic);
        //            this.FindChildMenu(menu_list, trmf_list, tf_list, tmf_list, _paret_menu_list[i], roleid, list);
        //        }
        //        else
        //        {
        //            if (tmf_list.FindAll(val => val.MenuFunction_MenuID.Equals(_paret_menu_list[i].Menu_ID)).Count == 0)//判断该菜单是否有 勾选了功能 如果没有则删除
        //            {
        //                _paret_menu_list.RemoveAt(i);
        //                continue;
        //            }

        //            dic = new Dictionary<string, object>();
        //            dic.Add("name", _paret_menu_list[i].Menu_Name + "(" + _paret_menu_list[i].Menu_Num + ")");
        //            dic.Add("id", _paret_menu_list[i].Menu_ID);
        //            dic.Add("pId", _paret_menu_list[i].Menu_ParentID);
        //            dic.Add("num", _paret_menu_list[i].Menu_Num);
        //            dic.Add("ur", _paret_menu_list[i].Menu_Url);
        //            dic.Add("tag", null);
        //            dic.Add("checkeds", false);
        //            list.Add(dic);


        //            //找出该菜单下的功能和选中的功能
        //            tf_list.ForEach(a =>
        //            {
        //                if (tmf_list.FindAll(val => val.MenuFunction_FunctionID.Equals(a.Function_ID)
        //                    && val.MenuFunction_MenuID.Equals(_paret_menu_list[i].Menu_ID)).Count > 0)
        //                {
        //                    dic = new Dictionary<string, object>();
        //                    dic.Add("name", a.Function_Name);
        //                    dic.Add("id", a.Function_ID);
        //                    dic.Add("pId", _paret_menu_list[i].Menu_ID);
        //                    dic.Add("num", a.Function_Num);
        //                    dic.Add("ur", null);
        //                    dic.Add("tag", "fun");
        //                    //判断该功能是否选中
        //                    var ischecked = trmf_list.Find(x => x.RoleMenuFunction_FunctionID.Equals(a.Function_ID) && x.RoleMenuFunction_MenuID.Equals(_paret_menu_list[i].Menu_ID) && x.RoleMenuFunction_RoleID.Equals(roleid));
        //                    if (ischecked == null)
        //                        dic.Add("checkeds", false);
        //                    else
        //                        dic.Add("checkeds", true);
        //                    list.Add(dic);
        //                }
        //            });
        //        }
        //    }
        //}



        /// <summary>
        /// 获取角色对应的功能树
        /// </summary>
        /// <returns></returns>
        public List <MenuRoleList> GetRoleMenuFunctionTree(string roleid)
        {
            var dic       = new MenuRoleList();
            var menu_list = (List <sys_menu>)_Sys_MenuRepositoryS.FindListByClause(null, "Menu_Num asc");
            var trmf_list = (List <sys_rolemenufunction>)_Sys_RoleMenuFunctionRepository.FindListByClause(p => p.RoleMenuFunction_RoleID == roleid, "RoleMenuFunction_CreateTime asc"); //角色菜单功能
            var tf_list   = (List <sys_function>)_Sys_FunctionRepositoryS.FindListByClause(null, "Function_Num asc");                                                                   //功能
            var tmf_list  = (List <sys_menufunction>)_Sys_MenuFunctionRepositoryS.FindAll();                                                                                            //菜单功能

            var list = new List <MenuRoleList>();

            foreach (var item in menu_list.FindAll(p => string.IsNullOrEmpty(p.Menu_ParentID)))
            {
                var _child_menu_list = menu_list.FindAll(x => x.Menu_ParentID != null && x.Menu_ParentID.Equals(item.Menu_ID));
                if (_child_menu_list != null && _child_menu_list.Count > 0)
                {
                    dic           = new MenuRoleList();
                    dic.id        = item.Menu_ID;
                    dic.title     = item.Menu_Name + "(" + item.Menu_Num + ")";
                    dic.parentId  = item.Menu_ParentID;
                    dic.basicData = new { menuId = item.Menu_ID, functionId = HaveID };
                    CheckArr checkArr = new CheckArr();
                    checkArr.type = "0";
                    //判断该功能是否选中
                    var ischecked = trmf_list.Find(p => p.RoleMenuFunction_FunctionID.Equals(HaveID) && p.RoleMenuFunction_MenuID == item.Menu_ID && p.RoleMenuFunction_RoleID.Equals(roleid));
                    if (ischecked != null)
                    {
                        checkArr.isChecked = "1";
                    }
                    else
                    {
                        checkArr.isChecked = "0";
                    }
                    var clist = new List <CheckArr>();
                    clist.Add(checkArr);
                    dic.checkArr = clist;
                    BindMenuRoleList(menu_list, trmf_list, tf_list, tmf_list, dic, roleid);
                    list.Add(dic);
                }
                else
                {
                    dic           = new MenuRoleList();
                    dic.id        = item.Menu_ID;
                    dic.title     = item.Menu_Name + "(" + item.Menu_Num + ")";
                    dic.parentId  = item.Menu_ParentID;
                    dic.basicData = new { menuId = item.Menu_ID, functionId = HaveID };
                    CheckArr checkArr = new CheckArr();
                    checkArr.type = "0";
                    //判断该功能是否选中
                    var ischecked = trmf_list.Find(p => p.RoleMenuFunction_FunctionID.Equals(HaveID) && p.RoleMenuFunction_MenuID == item.Menu_ID && p.RoleMenuFunction_RoleID.Equals(roleid));
                    if (ischecked != null)
                    {
                        checkArr.isChecked = "1";
                    }
                    else
                    {
                        checkArr.isChecked = "0";
                    }
                    var clist = new List <CheckArr>();
                    clist.Add(checkArr);
                    dic.checkArr = clist;
                    BindRoleFunction(menu_list, trmf_list, tf_list, tmf_list, dic, roleid);
                    list.Add(dic);
                }
            }
            return(list);
        }