/// <summary> /// 根据模块生成XML /// </summary> /// <param name="list"></param> /// <param name="parentID"></param> /// <param name="parentNode"></param> /// <param name="xDoc"></param> /// <param name="ds"></param> public void CreateXmlByModule(List<ModulesContract> list, int parentID, XmlNode parentNode, XmlDocument xDoc, DataSet ds) { //查询所有父节点 List<ModulesContract> list_parentModules = list.Where(m => m.ModuleParentID == parentID).ToList(); foreach (ModulesContract item in list_parentModules) { //判断菜单是否可用 if (item.IsMenu == 0) { //获取当前菜单下所有操作动作 List<AuthorityContract> list_Authority = authorityServices.GetAuthorityByModuleID(item.ModuleID); //判断当前菜单是否拥有浏览权限 if (list_Authority.Where(a => a.AuthorityTag == "GN_BROWSE").SingleOrDefault() == null) { continue; } foreach (DataRow dr in ds.Tables[0].Rows) { if (int.Parse(dr["ModuleID"].ToString()) != item.ModuleID) { continue; } #region 生成菜单节点 XmlNode xNode = xDoc.CreateNode(XmlNodeType.Element, "tree", null); AttributeParameter[] parameter = new AttributeParameter[] { new AttributeParameter("id",item.ModuleID.ToString()), new AttributeParameter("name",item.ModuleName), new AttributeParameter("areas",item.ModuleAreas), new AttributeParameter("controller",item.ModuleController), new AttributeParameter("action",item.ModuleAction), new AttributeParameter("parentID",item.ModuleParentID.ToString()), new AttributeParameter("icon",item.ModuleIcon), new AttributeParameter("typeID",item.ModuleTypeID.ToString()), }; XMLHelper.AddAttribute(xDoc, xNode, null, parameter); parentNode.AppendChild(xNode); #endregion 生成菜单节点 #region 生成操作权限 foreach (AuthorityContract authority_Item in list_Authority) { //获取当前菜单下角色拥有的操作 string auhorityIDs = dr["AuhorityIDS"].ToString(); string[] arr_Auhority = auhorityIDs.Split(','); if (!arr_Auhority.Contains(authority_Item.AuthorityID.ToString()) || authority_Item.AuthorityState != 0 || authority_Item.AuthorityState == 1) { continue; } XmlNode actionNode = xDoc.CreateNode(XmlNodeType.Element, "action", null); AttributeParameter[] actionParameter = new AttributeParameter[] { new AttributeParameter("id",authority_Item.AuthorityID.ToString()), new AttributeParameter("name",authority_Item.AuthorityName), new AttributeParameter("tag",authority_Item.AuthorityTag) }; XMLHelper.AddAttribute(xDoc, actionNode, null, actionParameter); xNode.AppendChild(actionNode); } #endregion 生成操作权限 //调用方法 CreateXmlByModule(list, item.ModuleID, xNode, xDoc, ds); } } } }
/// <summary> /// 生成权限XML文件 /// </summary> /// <param name="userID">用户ID</param> private void CreateAuthorityXML() { //文件路径 string filePath = "/FileXML/" + (Session["user"] as UsersContract).UserName + "_xml"; //判断XML文件是否存在 存在的话删除文件 if (System.IO.File.Exists(Server.MapPath(filePath))) { System.IO.File.Delete(Server.MapPath(filePath)); }; //创建XML XmlDocument xmlDoc = new XmlDocument(); XmlNode xNode = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null); xmlDoc.AppendChild(xNode); XmlNode rootNode = xmlDoc.CreateNode(XmlNodeType.Element, "zuxia_OA", null); xmlDoc.AppendChild(rootNode); UsersContract user = Session["user"] as UsersContract; //获取当前登录人员的所有拥有权限的系统 DataSet ds = moduleTypeServices.GetModuleTyepIdByUser(user.UserID, user.RoleID); //获取全部的系统 //List<ModuleTypeContract> moduleTypeList = moduleTypeServices.GetAllModuleType(); //获取角色的全部权限 DataSet ds_roleAuthority = roleAuthorityListServices.GetRoleAuthority((Session["user"] as UsersContract).UserID); foreach (DataRow dr in ds.Tables[0].Rows) { //获取当前系统下所有的菜单 List<ModulesContract> list = modulesServices.GetModulesByTypeId(int.Parse(dr["ModuleTypeID"].ToString())); if (list.Count != 0) { //创建根节点 XmlNode root = xmlDoc.CreateNode(XmlNodeType.Element, "moduleType", null); //创建根节点描述 AttributeParameter[] parameter = new AttributeParameter[] { new AttributeParameter("id","moduleType_"+dr["ModuleTypeID"]), new AttributeParameter("name",dr["ModuleTypeName"].ToString()), new AttributeParameter("ename",dr["ModuletypeEName"].ToString()), new AttributeParameter("icon",dr["ModuletypeImg"].ToString()), new AttributeParameter("sysId",dr["ModuleTypeID"].ToString()) }; XMLHelper.AddAttribute(xmlDoc, root, null, parameter); //递归 CreateXmlByModule(list, 0, root, xmlDoc, ds_roleAuthority); //匹配用户的菜单信息 rootNode.AppendChild(root); } } xmlDoc.Save(Server.MapPath(filePath)); }