Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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));
        }