yjanb11

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
        public String GetAllPermissions()
        {
            var permissions = PermissionManager.GetAllPermissions();Newtonsoft.Json.JsonConvert.SerializeObject(permissions.ToList());
            var st =  GenerateMenu(permissions);
            return st ;
        }
        /// <summary>
        /// 生成菜单拼接字符串
        /// </summary>
        /// <returns></returns>
        private string GenerateMenu(IReadOnlyList<Permission> lstAll)
        {
            StringBuilder sb = new StringBuilder();
            //var lstAll = GetData();
            var lstParent = lstAll.ToList().FindAll(x => x.Parent == null).ToList();
            var lstChilds = lstAll.ToList().FindAll(x => x.Parent != null).ToList();

            if (lstParent.Any())
            {
                sb.Append("[");
                foreach (var top in lstParent)
                {
                    var lstOnes = lstChilds.FindAll(x => x.Parent.Name == top.Name).OrderBy(x => x.Name).ToList();
                    if (lstOnes.Any())
                    {
                        if (sb.ToString().Substring(sb.ToString().Length - 1, 1) == "[" || sb.ToString().Substring(sb.ToString().Length - 1, 1) == ",")
                        {
                            sb.Append("{");
                        }
                        else
                        {
                            sb.Append(",{");
                        }
                        sb.AppendFormat("\"id\":\"{0}\",\"label\":\"{1}\"", top.Name, top.DisplayName)
                            .Append(",\"children\": [");
                        GetChild(sb, lstChilds, lstOnes);
                        sb.Append("]}");
                    }
                    else
                    {
                        if (sb.ToString().Substring(sb.ToString().Length - 1, 1) != "[" && sb.ToString().Substring(sb.ToString().Length - 1, 1) != ","&& sb.ToString()!="")
                        {
                            sb.Append(",");
                        }
                        sb.Append("{\"id\":\"" + top.Name + "\",\"label\":\""+ top.DisplayName + "\",\"children\":[]}");
                    }
                }
                sb.Append("]");
            }

            return sb.ToString();
        }
        /// <summary>
        /// 得到子菜单项
        /// </summary>
        /// <param name="sb">StrignBuilder对象</param>
        /// <param name="lstChilds">所有子节点集合</param>
        /// <param name="lstOnes">“父”节点集合</param>
        private static void GetChild(StringBuilder sb, List<Permission> lstChilds, List<Permission> lstOnes)
        {
            foreach (var chld in lstOnes)
            {
                var lstTwos = lstChilds.FindAll(x => x.Parent.Name == chld.Name).OrderBy(x => x.Name).ToList();
                if (lstTwos.Any())
                {
                    if (sb.ToString().Substring(sb.ToString().Length - 1, 1) == "[" || sb.ToString().Substring(sb.ToString().Length - 1, 1) == ",")
                    {
                        sb.Append("{");
                    }
                    else
                    {
                        sb.Append(",{");
                    }
                    sb.AppendFormat("\"id\":\"{0}\",\"label\":\"{1}\"", chld.Name, chld.DisplayName)
                            .Append(",\"children\": [");
                    GetChild(sb, lstChilds, lstTwos);
                    sb.Append("]}");
                }
                else
                {
                    if (sb.ToString().Substring(sb.ToString().Length - 1, 1) != "[" && sb.ToString().Substring(sb.ToString().Length - 1, 1) != "," && sb.ToString() != "")
                    {
                        sb.Append(",");
                    }
                    sb.Append("{\"id\":\"" + chld.Name + "\",\"label\":\"" + chld.DisplayName + "\",\"children\":[]}");
                }
            }
        }

 

posted on 2019-11-22 13:49  yjanb11  阅读(95)  评论(0编辑  收藏  举报