Beispiel #1
0
        public static List <NodeModel> GetAccessByRole(int?roleId)
        {
            List <NodeModel> nodeList = NodeModel.Fetch("where Title like  '%后台%' and Pid = '0'  order by Id asc ");
            List <NodeModel> allList  = new List <NodeModel>();

            foreach (var rootNode in nodeList)
            {
                List <NodeModel> list   = new List <NodeModel>();
                string           strSql = string.Format(@"select distinct Node.id as Id,
                                    Node.Pid as Pid,
                                    Node.Name as Name,
                                    Node.Title as Title,
                                    Node.SortNo as SortNO,
                                    Node.NodeLevel as NodeLevel,
                                    Node.GroupId as GroupID,
                                    case(select count(*) from Access where Access.roleid = {0} and Node.id = Access.nodeid) 
								                    when 0 then 'false' else 'true' end as 'IsChecked'
                      from Node
                      left join Access
                        on Node.id = Access.nodeid
                      where Node.Area = {1} 
                      order by Node.SortNo asc", roleId, rootNode.ID);
                list = NodeModel.Fetch(strSql);

                List <GroupModel> groupList = GroupModel.Fetch("where DelFlag = 0  order by SortNo asc");
                foreach (var node in list)
                {
                    if (node.Pid.ToInt() == rootNode.ID.ToInt())
                    {
                        var group = groupList.FirstOrDefault(s => s.ID.ToInt() == node.GroupID);
                        if (group == null)
                        {
                            continue;
                        }
                        group.HasUsed = true;
                        node.Pid      = "g_" + group.ID;
                    }
                }
                foreach (var groupModel in groupList)
                {
                    if (!groupModel.HasUsed)
                    {
                        continue;
                    }
                    NodeModel node = new NodeModel();
                    node.ID      = "g_" + groupModel.ID;
                    node.Name    = groupModel.Name;
                    node.Title   = groupModel.Title;
                    node.Pid     = rootNode.ID;
                    node.nocheck = "false";
                    list.Add(node);
                }

                allList.AddRange(list);
            }

            return(allList);
        }