⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usr.cs

📁 人力资源管理系统
💻 CS
字号:
using System;
using System.Data;
using System.Xml ;
using COAdmin.COMMON;
using COAdmin.DAL ;

namespace COAdmin.BLL
{
	/// <summary>
	/// User 的摘要说明。
	/// </summary>
	public class Usr
	{
		public Usr()
		{
			//实例化时,指定文件路径
//			_usrXmlDocPath = COAdminGlobals.ConfigFilePath + "SysUser.xml" ;
//			_roleXmlDocPath = COAdminGlobals.ConfigFilePath  + "SysRole.xml" ;

		}

		#region 私有变量
		private string _userID;
		private string _groupID ;
		private string _userName ;
		private string _password ;	
		private string _roles ;
		private string _groupName ;
		private string _usrXmlDocPath = COAdminGlobals.ConfigFilePath + "SysUser.xml" ;
		
		private XmlAccess xa = new XmlAccess() ; 
		
		#endregion

		#region 公共属性
		/// <summary>
		/// 用户ID
		/// </summary>
		public string UserID
		{
			get{ return _userID ;}
			set{ _userID = value ;}
		}

		/// <summary>
		/// 所属组ID
		/// </summary>
		public string GroupID
		{
			get{ return _groupID ; } 
			set{ _groupID = value ;}
		}

		/// <summary>
		/// 所属组名称
		/// </summary>
		public string GroupName
		{
			get{ return _groupName ; }
			set{ _groupName = value ;}
		}		

		/// <summary>
		/// 用户名
		/// </summary>
		public string UserName
		{
			get{ return _userName ; }
			set{ _userName = value ;}
		}

		/// <summary>
		/// 密码
		/// </summary>
		public string Password
		{
			get{ return _password ; }
			set{ _password = value ; }
		}

		public string Roles
		{
			get { return _roles ;}
			set { _roles = value ;}
		}
		#endregion

		#region 公共方法

		/// <summary>
		/// 添加新用户
		/// </summary>
		/// <returns>添加结果 0:成功,1:存在相同用户 -1:失败</returns>
		public int AddUser()
		{
			int ret = -1 ;

			//读取XML文
			xa.Load(this._usrXmlDocPath) ;
			
			if(xa.FindNode(".//User[@id='" + this._userID + "']"))
			{
				//存在相同的用户,返回1
				ret = 1 ;
				return ret ;
			}
			string[] attName = {"id","password","dsc"} ;	
			string[] attVal = {_userID,_password,_userName} ;
			
			//执行添加
			string path=".//Group[@id='" + _groupID + "']" ; 
			ret = xa.AddNode(path,"User",attName,attVal) ;

			//保存
			xa.SaveXml(this._usrXmlDocPath) ;

			return ret ;			
		}

		/// <summary>
		/// 修改用户信息
		/// </summary>
		/// <returns>修改结果 0:成功 1:失败</returns>
		public int ModifyUser()
		{
			int ret = -1 ;

			//读取XML文
			xa.Load(this._usrXmlDocPath) ;

			//路径
			string[] attName = {"id","dsc"} ;	
			string path = ".//User[@id='" + this._userID + "']"  ;

			string[] attVal = {_userID,_userName} ;

			//修改用户信息
			ret = xa.ModifyAttribute(path,attName,attVal) ;

			//保存
			xa.SaveXml(this._usrXmlDocPath) ;

			return ret ;
		}

		/// <summary>
		/// 修改用户登录密码
		/// </summary>
		/// <param name="oldPwd">原密码</param>
		/// <param name="pwd">新密码</param>
		/// <returns>执行结果 0:修改成功  1:原密码错误</returns>
		public int ModifyPwd(string oldPwd,string pwd)
		{
			int ret = -1 ;

			//读取XML文
			xa.Load(this._usrXmlDocPath) ;

			//路径
			string path = ".//User[@id='" + _userID + "']"  ;

			//先判断原密码正确与否
			XmlNode node = xa.GetSingleNode( ".//User[@id='" + this._userID + "' and @password='" + this._password + "']" );
			if(node == null)
			{
				ret = 1 ;
				return ret ;
			}

			//修改函数的参数
			string[] name = {"password"} ;
			string[] val = {pwd} ;

			//修改用户密码
			ret = xa.ModifyAttribute(path,name,val) ;

			//保存
			xa.SaveXml(this._usrXmlDocPath) ;

			return ret ;
		}

		/// <summary>
		/// 删除用户信息
		/// </summary>
		/// <param name="userID">待删除的用户ID</param>
		/// <returns>删除结果 0:成功 -1:失败</returns>
		public int DeleteUser(string userID)
		{
			int ret = -1 ;

			//读取XML文
			xa.Load(this._usrXmlDocPath) ;

			//路径
			string path = ".//User[@id='" + userID + "']"  ;

			//执行删除操作
			ret = xa.DeleteNode(path) ;

			//保存删除后的XML文
			xa.SaveXml(this._usrXmlDocPath) ;

			return ret ;
		}

		/// <summary>
		/// 通过组ID获取用户信息
		/// </summary>
		/// <param name="groupID">组ID</param>
		/// <param name="groupName">组名称</param>
		/// <returns>用户DataTable</returns>
		public DataTable GetUserByGroup(string groupID,string groupName)
		{
			DataTable ret = null ;

			//读取XML文
			xa.Load(this._usrXmlDocPath) ;

			//节点路径
//			string path = ".//Group[@id='" + groupID + "']"  ;
			string path = ".//Group[@id='" + groupID + "']/User"  ;

			//获取节点的所有子节点
//			XmlNodeList list = xa.GetChildNodes(path) ;
			XmlNodeList list = xa.GetNodes(path) ;
			ret = NodeListToTable(list,groupID,groupName) ;			

			return ret ;
		}

		/// <summary>
		/// 用户节点集合转化为DataTable
		/// </summary>
		/// <param name="list">节点集合</param>
		/// <param name="groupID">组ID</param>
		/// <param name="groupName">组名称</param>
		/// <returns>用户DataTable</returns>
		private DataTable NodeListToTable(XmlNodeList list,string groupID,string groupName)
		{
			DataTable dt = CreateDataTable() ;

			if(list==null)
			{
				return dt ;
			}

			for(int i=0;i<list.Count;i++)
			{
				XmlNode nd = list[i] ;
				//新建行
				DataRow dr = dt.NewRow() ;
				dr["UserID"] = nd.Attributes["id"].Value ;
				dr["UserName"] = nd.Attributes["dsc"].Value ;
				dr["GroupID"] = groupID ;
				dr["GroupName"] = groupName ;
				dt.Rows.Add(dr) ;
			}

			return dt ;
		}

		/// <summary>
		/// 创建用户表
		/// </summary>
		/// <returns>DataTable</returns>
		private DataTable CreateDataTable()
		{
			DataTable dt = new DataTable() ;
			dt.Columns.Add("UserID") ;
			dt.Columns.Add("UserName") ;
			dt.Columns.Add("GroupID") ;
			dt.Columns.Add("GroupName") ;

			return dt ;
		}
		

		/// <summary>
		/// 指定用户属性
		/// </summary>
		/// <param name="dr"></param>
		private void AssignAttribute(DataRow dr)
		{
			_userID = dr["UserID"].ToString() ;
			_groupID = dr["GroupID"].ToString() ;			
			_userName = dr["UserName"].ToString() ; 
			_groupName = dr["GroupName"].ToString() ;
		}

		/// <summary>
		/// 用户登录
		/// </summary>
		/// <param name="loginID">登录ID</param>
		/// <param name="pwd">密码</param>
		/// <returns>登录结果</returns>
		public int UserLogin(string loginID,string pwd)
		{
			int ret = -1 ;

			//读取XML文
			xa.Load(this._usrXmlDocPath) ;

			//验证用户名的路径
			string path = ".//User[@id='" + loginID + "']" ;
			if(!xa.FindNode(path))
			{
				// 用户名不正确
				ret = 2 ;
				return ret ;
			}
			
			//加密码的路径
			path = ".//User[@id='" + loginID + "' and @password='" + pwd + "']"  ;			
			if(!xa.FindNode(path))
			{
				//密码错误
				ret = 1 ;
				return ret ;
			}

			ret = 0 ;

			// 通过验证,指定用户对象属性
			this._userID = loginID ;
			this._password = pwd ;
			
			//通过验证,取权限列表
							
			//将权限列表整编为逗号分隔的字符串
			_roles = GetUsrRoles(loginID) ;

			return ret ;
		}
		
		/// <summary>
		/// 获取用户的权限
		/// </summary>
		/// <param name="usrID">用户ID</param>
		/// <returns></returns>
		public string GetUsrRoles(string usrID)
		{
			string roles = "" ;

			//读取XML文
			xa.Load(this._usrXmlDocPath) ;

			string path = ".//User[@id='" + usrID + "']/role" ;

			//取用户权限列表
			XmlNodeList list = xa.GetNodes(path) ;
			if(list == null)
			{
				return roles ;
			}
				
			//将权限列表整编为逗号分隔的字符串
			for(int i=0;i<list.Count;i++)
			{
				if(roles != "")
				{
					roles += "," ;
				}
				roles += list[i].Attributes["id"].Value ;
			}

			return roles ;
		}

		/// <summary>
		/// 软件解锁
		/// </summary>
		/// <param name="pwd">密码</param>
		/// <returns></returns>
		public bool UnLock(string pwd)
		{
			//节点路径
			string path = ".//User[@id='" + this._userID + "' and @password='" + pwd + "']"  ;	
			// 验证是否正确
			return xa.FindNode(path) ;
		}

		/// <summary>
		/// 判断用户是否具有某角色
		/// </summary>
		/// <param name="role">角色名</param>
		/// <returns>匹配结果</returns>
		public bool HasRole(string role)
		{
			//取用户权限
			string[] r = _roles.Split(new char[] {','}) ;

			//匹配
			for(int i=0;i<r.Length;i++)
			{
				if(r[i] == role)
				{
					return true ;
				}
			}

			// 不匹配
			return false ;
		}

		/// <summary>
		/// 保存用户角色信息
		/// </summary>
		/// <param name="usrID">用户ID</param>
		/// <param name="roles">角色</param>
		public void AddRoles(string usrID,string roles)
		{			
			string[] spRole = roles.Split(new char[] {','}) ;
			string path=".//User[@id='" + usrID + "']" ;

			//读取XML文
			xa.Load(this._usrXmlDocPath) ;
			//先清除用户的角色
			XmlNode node = xa.GetSingleNode(path) ;
			XmlNodeList list = xa.GetNodes(path+"/role") ;
			foreach(XmlNode nd in list)
			{
				node.RemoveChild(nd) ;
			}

			//逐个添加角色
			foreach(string role in spRole)
			{
			
				string[] attName = {"id"} ;	
				string[] attVal = {role} ;
			
				//执行添加				
				xa.AddNode(path,"role",attName,attVal) ;
			}

			//保存
			xa.SaveXml(this._usrXmlDocPath) ;	
		}

		#endregion

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -