コード例 #1
0
 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;
     }
 }
コード例 #2
0
 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 }));
     }
 }
コード例 #3
0
ファイル: RoleService.cs プロジェクト: devide023/MESWebApi
        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;
            }
        }
コード例 #4
0
 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);
 }