public bool GetNodeList(TreeZNode root, List <TreeZNode> nodeList, ref string message) { try { using (ZooKeeper zk = new ZooKeeper(AppSettingsHelper.ZKServer, TimeSpan.FromSeconds(AppSettingsHelper.ZKSessionTimeOut), null)) { ZooKeeper.WaitUntilConnected(zk); GetNodeListLoop(zk, root, nodeList); } } catch (Exception ex) { message = string.Format("JinRi.Fx.Manage:{0}GetNodeList()方法抛异常:{0}[{1}]{2}。", Environment.NewLine, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), ex.ToString()); log.Error(message); message = string.Format("GetNodeList()方法抛异常:{0}[{1}]{2}。", Environment.NewLine, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), ex.ToString()); return(false); } return(true); }
void GetNodeListLoop(ZooKeeper zk, TreeZNode root, List <TreeZNode> nodeList) { int i = 0; try { foreach (string child in zk.GetChildren(root.NodePath, true)) { ++i; int id = int.Parse(string.Format("{0}{1}", root.id, i)); TreeZNode childnode = new TreeZNode(id, true, string.Concat(root.joinNodePath, "/", child), child, root.id); root.ChildNodeList.Add(childnode); nodeList.Add(childnode); GetNodeListLoop(zk, childnode, nodeList); } } catch (Exception ex) { string message = string.Format("JinRi.Fx.Manage:{0}GetNodeListLoop()方法抛异常:{0}[{1}]{2}。", Environment.NewLine, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), ex.ToString()); log.Error(message); } }
public string LoadTree(int?id) { LoadTreeResponseDTO result = new LoadTreeResponseDTO(); JavaScriptSerializer serialize = new JavaScriptSerializer(); result.ZNodeList = new List <TreeZNode>(); TreeZNode root = new TreeZNode(1, true, "/", "/", 0); result.ZNodeList.Add(root); me = new JZooKeeperClient(); result.IsSuccess = me.GetNodeList(root, result.ZNodeList, ref result.Message); if (!result.IsSuccess) { return(serialize.Serialize(result)); } /* * List<TreeZNode> treeNodeList = result.ZNodeList.Where(i => i.NodePath.IndexOf("/ConfigService") > -1 && i.pId == (id ?? 0)).OrderBy(x => x.name).ToList<TreeZNode>(); */ ///* List <TreeZNode> treeNodeList = result.ZNodeList.Where(i => i.NodePath.IndexOf("/ConfigService") > -1).OrderBy(x => x.name).ToList <TreeZNode>(); //*/ if (treeNodeList == null || treeNodeList.Count < 1) { result.ZNodeList = treeNodeList; result.IsSuccess = false; result.Message = "目前没有配置项数据;请联系运维或系统管理员加【ConfigService】配置项。"; return(serialize.Serialize(result)); } //根据配置中心权限的设置显示节点: LoginUserInfo loginUserInfo = this.WorkContext.CurrentUser; int loginRoleId = loginUserInfo.RoleId; int loginUserId = loginUserInfo.UserId; switch (loginRoleId) { case 2: //2表示系统管理员角色 case 4: //4表示运维角色 break; case 7: //7表示国内开发主管角色 case 8: //8表示国际开发主管角色 SysRoleRightLogic logic = new SysRoleRightLogic(); SysRoleRight sysRoleRight = logic.GetRoleRight(true, loginRoleId, 0, 0, AppSettingsHelper.ConfigCenterMenuName, 0); if (sysRoleRight == null) { result.IsSuccess = false; result.Message = "很抱歉,您没有权限进行配置;请联系运维或系统管理员开通下设置页面的访问权限!"; break; } List <SysRoleRight> roleRightList = logic.GetRoleRightList(loginRoleId, true, loginUserId).ToList <SysRoleRight>(); if (roleRightList == null || roleRightList.Count < 1) { treeNodeList = treeNodeList.Where(node => node.NodePath.Equals("/ConfigService")).ToList <TreeZNode>(); break; } List <string> appIdStringList = roleRightList.Select(r => r.AppIdString).ToList <string>(); List <TreeZNode> tempList = treeNodeList.Where(n => n.NodePath.Equals("/ConfigService")).ToList <TreeZNode>(); foreach (string appId in appIdStringList) { List <TreeZNode> list = treeNodeList.Where(n => n.NodePath.IndexOf("/ConfigService/" + appId) > -1).ToList(); if (list != null && list.Count > 0) { tempList.InsertRange(tempList.Count - 1, list); } } treeNodeList = tempList; break; default: //只有具有系统管理员、运维、国内/国际开发主管角色的登入用户才有权限进行配置 result.IsSuccess = false; result.Message = "很抱歉,您没有权限进行配置!"; break; } result.ZNodeList = treeNodeList.OrderBy(x => x.name).ToList <TreeZNode>(); return(serialize.Serialize(result)); }