/// <summary> /// 获取某个角色的权限 数据不要乱改啊!! /// </summary> /// <param name="Id">角色的Id</param> /// <returns></returns> public string GetManeOP(string Id) { rms_role Rmodel = RMS_RoleService.Instance.SingleM(Id);//当前角色 string menus = " [\n"; var sqlManu = " 1=1 "; sqlManu += " and companyid=" + UserData.companyid + " "; //只显示 自己公司的 sqlManu += " and projectid=" + Rmodel.projectid + " "; //只显示同一个项目 if (!IsSysRole) //不是系统管理员的角色,只能返回自己的菜单 { sqlManu += " and id in( select manuid from rms_rolemanus where roleid='" + UserData.RoleId + "')"; } List <rms_menus> list = RMS_MenusService.Instance.FetchW(sqlManu); //菜单集 List <rms_buttons> listControlButtons = RMS_ButtonsService.Instance.FetchW(" 1=1 "); //所有的按钮 List <rms_rolemanus> listRoleColumns = RMS_RoleManusService.Instance.FetchW(" roleid='" + Id + "'"); //这个角色已经添加的菜单 List <v_rolemanubuttons> listRoleMenuButtons = V_RoleManuButtonsService.Instance.FetchW(" roleid='" + Id + "'"); //这个角色已经添加的角色按钮 for (int i = 0; i < list.Count; i++) { if (list.Find(p => p.id == list[i].parentmanuid) == null)//此项没有父级 { menus += "{ \"MenuId\":\"" + list[i].id + "\","; menus += string.Format(" \"Name\":\"{0}\",", list[i].manuname); menus += string.Format(" \"iconCls\":\"{0}\",", list[i].icon); string ControlId_Browse = "0"; rms_rolemanus rcItem = listRoleColumns.Find(p => p.manuid.Equals(list[i].id)); if (rcItem != null) { ControlId_Browse = "1";//如果存在 } menus += string.Format(" \"ControlId_Browse\":\"{0}\",", ControlId_Browse); foreach (rms_buttons dd in listControlButtons)//添加列的数据 { string Ishave = "0"; v_rolemanubuttons rmbItem = listRoleMenuButtons.Find(p => p.id.Equals(dd.id) && p.manuid.Equals(list[i].id)); if (rmbItem != null) { Ishave = "1";//如果角色有此按钮存在 } menus += string.Format("\"ControlId_{0}\":\"{1}\",", dd.id, Ishave); } menus += GetSonTreeManu(list, list[i], listControlButtons, listRoleColumns, listRoleMenuButtons);//添加children menus += "},"; } } menus = menus.Substring(0, menus.Length - 1); menus = menus + "]"; return(menus); }
private string GetSonTreeManu(List <rms_menus> listAll, rms_menus SonItem, List <rms_buttons> listControlButtons, List <rms_rolemanus> listRoleColumns, List <v_rolemanubuttons> listRoleMenuButtons) { string menus = "\"children\":["; List <rms_menus> list = listAll.FindAll(p => p.parentmanuid.Equals(SonItem.id)); if (list != null && list.Count > 0) { for (int i = 0; i < list.Count; i++) { menus += "{ \"MenuId\":\"" + list[i].id + "\","; menus += string.Format(" \"Name\":\"{0}\",", list[i].manuname); menus += string.Format(" \"iconCls\":\"{0}\",", list[i].icon); string ControlId_Browse = "0"; rms_rolemanus rcItem = listRoleColumns.Find(p => p.manuid.Equals(list[i].id)); if (rcItem != null) { ControlId_Browse = "1";//如果存在 } menus += string.Format(" \"ControlId_Browse\":\"{0}\",", ControlId_Browse); foreach (rms_buttons dd in listControlButtons)//添加列的数据 { string Ishave = "0"; v_rolemanubuttons rmbItem = listRoleMenuButtons.Find(p => p.id.Equals(dd.id) && p.manuid.Equals(list[i].id)); if (rmbItem != null) { Ishave = "1";//如果角色有此按钮存在 } menus += string.Format("\"ControlId_{0}\":\"{1}\",", dd.id, Ishave); } menus += GetSonTreeManu(listAll, list[i], listControlButtons, listRoleColumns, listRoleMenuButtons);//添加children menus += "},"; } menus = menus.Substring(0, menus.Length - 1); } menus = menus + "]"; return(menus); }