public sys_permission Get_UniMenu_Permission(IEnumerable <sys_role_menu> permislist, int menuid) { try { var menupermis_list = permislist.Where(t => t.menuid == menuid); sys_permission unitpermis = new sys_permission(); //过滤菜单下的所有权限合并到unitpermis对象 foreach (var permisitem in menupermis_list) { sys_permission permission = new sys_permission(); if (permisitem.permis != null) { permission = JsonConvert.DeserializeObject <sys_permission>(permisitem.permis); unitpermis.funs.AddRange(permission.funs); unitpermis.editfields.AddRange(permission.editfields); unitpermis.hidefields.AddRange(permission.hidefields); } } unitpermis.funs = unitpermis.funs.Distinct().ToList(); unitpermis.editfields = unitpermis.editfields.Distinct().ToList(); unitpermis.hidefields = unitpermis.hidefields.Distinct().ToList(); return(unitpermis); } catch (Exception e) { log.Error(e.Message); throw; } }
public IHttpActionResult Add(dynamic objs) { try { List <int> menuids = new List <int>(); List <sys_menu_permission> permis = new List <sys_menu_permission>(); List <sys_menu> list = objs.menu_nodes.ToObject <List <sys_menu> >(); var pages = list.Where(t => new string[] { "01", "02" }.Contains(t.menutype)); menuids = pages.Select(t => t.id).ToList(); foreach (var item in pages) { sys_menu_permission mp = new sys_menu_permission(); sys_permission p = new sys_permission(); //功能列表 var funfloder = list.Where(t => t.pid == item.id && t.title == "页面功能").FirstOrDefault(); if (funfloder != null) { p.funs = list.Where(t => t.pid == funfloder.id).Select(t => t.code).ToList(); } //编辑字段 var editfloder = list.Where(t => t.pid == item.id && t.title == "编辑字段").FirstOrDefault(); if (editfloder != null) { p.editfields = list.Where(t => t.pid == editfloder.id).Select(t => t.code).ToList(); } //隐藏字段 var hidefloder = list.Where(t => t.pid == item.id && t.title == "隐藏字段").FirstOrDefault(); if (hidefloder != null) { p.hidefields = list.Where(t => t.pid == hidefloder.id).Select(t => t.code).ToList(); } mp.menuid = item.id; mp.permission = p; permis.Add(mp); } RoleService rs = new RoleService(); int adduserid = 0, status; int.TryParse(objs.adduser != null ? objs.adduser.ToString() : "0", out adduserid); int.TryParse(objs.status != null ? objs.status.ToString() : "1", out status); sys_role entity = new sys_role() { title = objs.title.ToString(), code = objs.code.ToString(), addtime = DateTime.Now, adduser = adduserid, status = status }; entity = rs.Add(entity); if (entity.id > 0) { permis.ForEach(t => t.roleid = entity.id); int ret = rs.Save_RoleMenus(permis); return(Json(new { code = 1, msg = "角色添加成功" })); } else { return(Json(new { code = 0, msg = "角色添加失败" })); } } catch (Exception e) { return(Json(new { code = 0, msg = e.Message })); } }
public IEnumerable <sys_menu> Get_Role_Menus(int roleid) { try { StringBuilder sql = new StringBuilder(); sql.Append("select tb.id,"); sql.Append(" tb.pid,"); sql.Append(" tb.title,"); sql.Append(" tb.menutype,"); sql.Append(" tb.code,"); sql.Append(" tb.seq,"); sql.Append(" ta.permis"); sql.Append(" from sys_role_menu ta, sys_menu tb"); sql.Append(" where ta.roleid = :id"); sql.Append(" and tb.status = 1"); sql.Append(" and tb.id = ta.menuid"); StringBuilder sql1 = new StringBuilder(); sql1.Append(" select ta.id, ta.pid, ta.title, ta.menutype, ta.code "); sql1.Append(" from SYS_MENU ta, sys_role_menu tb "); sql1.Append(" where ta.pid = tb.menuid "); sql1.Append(" and ta.menutype in ('03', '04') "); sql1.Append(" and tb.roleid = :id "); using (var conn = new OraDBHelper().Conn) { var list = conn.Query(sql.ToString(), new { id = roleid }); var list_fun = conn.Query <sys_menu>(sql1.ToString(), new { id = roleid }); int maxid = int.MaxValue; List <sys_menu> menulist = new List <sys_menu>(); foreach (var item in list) { sys_menu mitem = new sys_menu() { id = Convert.ToInt32(item.ID), pid = Convert.ToInt32(item.PID), title = item.TITLE, menutype = item.MENUTYPE, code = item.CODE, seq = Convert.ToInt32(item.SEQ) }; int funpageid = maxid - mitem.id * 123; int eidtpageid = maxid - mitem.id * 234; int hidepageid = maxid - mitem.id * 345; if (item.PERMIS != null) { sys_permission jsonobj = JsonConvert.DeserializeObject <sys_permission>(item.PERMIS.ToString()); mitem.menu_permission = jsonobj; if (jsonobj.funs.Count > 0) { menulist.Add(new sys_menu() { id = funpageid, pid = mitem.id, title = "页面功能", menutype = "03", }); foreach (var obj in jsonobj.funs) { var fun_temp = list_fun.Where(t => t.pid == mitem.id && t.code == obj).FirstOrDefault(); if (fun_temp == null) { continue; } sys_menu funitem = new sys_menu(); funitem.menutype = "03"; funitem.code = fun_temp.code; funitem.title = fun_temp.title; funitem.pid = funpageid; funitem.id = fun_temp.id; menulist.Add(funitem); } } if (jsonobj.editfields.Count > 0) { menulist.Add(new sys_menu() { id = eidtpageid, pid = mitem.id, title = "编辑字段", menutype = "04", }); foreach (var obj in jsonobj.editfields) { var edit_temp = list_fun.Where(t => t.pid == mitem.id && t.code == obj).FirstOrDefault(); if (edit_temp == null) { continue; } sys_menu editf = new sys_menu(); editf.menutype = "04"; editf.code = edit_temp.code; editf.title = edit_temp.title; editf.pid = eidtpageid; editf.id = edit_temp.id; menulist.Add(editf); } } if (jsonobj.hidefields.Count > 0) { menulist.Add(new sys_menu() { id = hidepageid, pid = mitem.id, title = "隐藏字段", menutype = "04", }); foreach (var obj in jsonobj.hidefields) { var hide_temp = list_fun.Where(t => t.pid == mitem.id && t.code == obj).FirstOrDefault(); if (hide_temp == null) { continue; } sys_menu hidef = new sys_menu(); hidef.menutype = "04"; hidef.code = hide_temp.code; hidef.title = hide_temp.title; hidef.pid = hidepageid; hidef.id = hide_temp.id * 10; menulist.Add(hidef); } } } else { mitem.menu_permission = new sys_permission(); } menulist.Add(mitem); } //foreach (var item in menulist) //{ // System.Console.WriteLine($"{item.id}---{item.pid}----{item.title}"); //} return(menulist); } } catch (Exception e) { log.Error(e.Message); throw; } }
public void MenuTree() { string json = "{\"funs\":[\"add\",\"edit\",\"del\",\"query\"],\"editfields\":[\"name\"],\"readfields\":[\"code\"],\"hidefields\":[\"pwd\"],\"showfield\":[\"code\",\"name\"]}"; sys_permission obj = JsonConvert.DeserializeObject <sys_permission>(json); }