经改造后的三层:D层,B层 方法经过改造。特别是在B层接受D层方法时,对方法的类型做了变更;使得Web层在调用的时候更加的灵活,精确。更符合面向对象的模式。 using System; using System.Data; using System.Text; using System.Data.SqlClient; namespace DAL { /// <summary> /// 数据访问类SYS_USER。 /// </summary> public class D_Sys_User { public D_Sys_User() {} #region 成员方法 //增删改均为 int 类型的方法 /// <summary> /// 验证用户名是否存在 /// </summary> /// <returns></returns> public int IsExist(string username) { StringBuilder strSql = new StringBuilder(); strSql.Append("select count(username) from sys_user where "); strSql.Append(" upper(username)=upper(@username)"); SqlParameter[] parameters ={ new SqlParameter("@username",SqlDbType.VarChar,32) }; parameters[0].Value = username; return Convert.ToInt32(DbHelperSQL.Query(strSql.ToString(),parameters).Tables[0].Rows[0][0]); } /// <summary> /// 验证用户名登陆密码是否正确 /// </summary> /// <returns></returns> public int IsExistPass(string userpass,Int32 userid) { StringBuilder strSql = new StringBuilder(); strSql.Append("select count(username) from sys_user where "); strSql.Append(" userpass=@userpass and userid=@userid"); SqlParameter[] parameters ={ new SqlParameter("@userpass",SqlDbType.VarChar,64), new SqlParameter("@userid",SqlDbType.Int) }; parameters[0].Value = userpass; parameters[1].Value = userid; return Convert.ToInt32(DbHelperSQL.GetSingle(strSql.ToString(), parameters)); } /// <summary> /// 根据用户Id删除用户 /// </summary> /// <returns>所影响行数数</returns> public int DelUserByUserId(Int32 userId) { StringBuilder strSql = new StringBuilder(); strSql.Append("delete from sys_user where "); strSql.Append(" userid=@userid "); SqlParameter[] parameters ={ new SqlParameter("@userid",SqlDbType.Int) }; parameters[0].Value = userId; return DbHelperSQL.ExecuteSql(strSql.ToString(), parameters); } /// <summary> /// 增加一条数据 /// </summary> public int AddSysUser(MD_Sys_User model) { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into SYS_USER("); strSql.Append("USERNAME,USERPASS,TRUENAME,ISDEL,USERDEPART)"); strSql.Append(" values ("); strSql.Append("@USERNAME,@USERPASS,@TRUENAME,@ISDEL,@USERDEPART)"); SqlParameter[] parameters = { new SqlParameter("@USERNAME", SqlDbType.VarChar,32), new SqlParameter("@USERPASS", SqlDbType.VarChar,64), new SqlParameter("@TRUENAME", SqlDbType.VarChar,16), new SqlParameter("@ISDEL", SqlDbType.Int), new SqlParameter("@USERDEPART", SqlDbType.Int)}; parameters[0].Value = model.UserName; parameters[1].Value = model.UserPass; parameters[2].Value = model.TrueName; parameters[3].Value = model.IsDel; parameters[4].Value = model.UserDepart; return DbHelperSQL.ExecuteSql(strSql.ToString(),parameters); } /// <summary> /// 更新真实名称和密码 /// </summary> public int SetNamePass(MD_Sys_User model) { StringBuilder strSql = new StringBuilder(); strSql.Append("update SYS_USER set "); strSql.Append("USERPASS=@USERPASS,"); strSql.Append("TRUENAME=@TRUENAME"); strSql.Append(" where UserId=@UserId"); SqlParameter[] parameters = { new SqlParameter("@USERPASS", SqlDbType.VarChar,64), new SqlParameter("@TRUENAME", SqlDbType.VarChar,32), new SqlParameter("@USERID", SqlDbType.Int)}; parameters[0].Value = model.UserPass; parameters[1].Value = model.TrueName; parameters[2].Value = model.UserId; return DbHelperSQL.ExecuteSql(strSql.ToString(),parameters); } /// <summary> /// 更新真实名称 /// </summary> public int SetName(MD_Sys_User model) { StringBuilder strSql = new StringBuilder(); strSql.Append("update SYS_USER set "); strSql.Append("TRUENAME=@TRUENAME"); strSql.Append(" where UserId=@UserId"); SqlParameter[] parameters = { new SqlParameter("@TRUENAME", SqlDbType.VarChar,32), new SqlParameter("@USERID", SqlDbType.Int)}; parameters[0].Value = model.TrueName; parameters[1].Value = model.UserId; return DbHelperSQL.ExecuteSql(strSql.ToString(), parameters); } /// <summary> /// 更新用户登陆密码 /// </summary> public int SetUserPass (MD_Sys_User model) { StringBuilder strSql = new StringBuilder(); strSql.Append("update SYS_USER set "); strSql.Append("UserPass=@UserPass"); strSql.Append(" where UserId=@UserId"); SqlParameter[] parameters = { new SqlParameter("@Userpass", SqlDbType.VarChar,64), new SqlParameter("@USERID", SqlDbType.Int)}; parameters[0].Value = model.UserPass; parameters[1].Value = model.UserId; return DbHelperSQL.ExecuteSql(strSql.ToString(), parameters); } ///<summary> /// 回收用户 ///</summary> public int RecoverUser(int userId) { StringBuilder strSql = new StringBuilder(); strSql.Append("update sys_user set isdel=1 where userid=@userid"); SqlParameter[] parameters = { new SqlParameter("@userid",SqlDbType.Int) }; parameters[0].Value = userId; return DbHelperSQL.ExecuteSql(strSql.ToString(), parameters); } /// <summary> /// 启用用户 /// </summary> /// <param name="userId"></param> /// <returns></returns> public int UsingUser(int userId) { StringBuilder strSql = new StringBuilder(); strSql.Append("update sys_user set isdel=0 where userid=@userid"); SqlParameter[] parameters = { new SqlParameter("@userid",SqlDbType.Int) }; parameters[0].Value = userId; return DbHelperSQL.ExecuteSql(strSql.ToString(), parameters); } /// <summary> /// 得到一个对象实体 /// </summary> public MD_Sys_User GetModel(string userPass,string userName) { //该表无主键信息,请自定义主键/条件字段 StringBuilder strSql=new StringBuilder(); strSql.Append("select USERID,USERNAME,USERPASS,TRUENAME,ISDEL,USERDEPART from SYS_USER "); strSql.Append(" where Upper(UserName)=@UserName and Upper(UserPass)=@UserPass and isdel=0"); SqlParameter[] parameters = { new SqlParameter("@USERNAME", SqlDbType.VarChar,32), new SqlParameter("@USERPASS", SqlDbType.VarChar,64)}; parameters[0].Value = userName.ToUpper(); parameters[1].Value = userPass.ToUpper(); MD_Sys_User model = new MD_Sys_User(); DataSet ds=DbHelperSQL.Query(strSql.ToString(),parameters); if(ds.Tables[0].Rows.Count>0) { if(ds.Tables[0].Rows[0]["USERID"].ToString() != "") { model.UserId=int.Parse(ds.Tables[0].Rows[0]["USERID"].ToString()); } model.UserName = ds.Tables[0].Rows[0]["USERNAME"].ToString(); model.UserPass = ds.Tables[0].Rows[0]["USERPASS"].ToString(); model.TrueName = ds.Tables[0].Rows[0]["TRUENAME"].ToString(); if(ds.Tables[0].Rows[0]["ISDEL"].ToString()!="") { model.IsDel = int.Parse(ds.Tables[0].Rows[0]["ISDEL"].ToString()); } return model; } else { return null; } } /// <summary> /// 得到一个对象实体 /// </summary> public DataSet GetAdminModel(string userPass, string userName) { //该表无主键信息,请自定义主键/条件字段 StringBuilder strSql = new StringBuilder(); strSql.Append("select u.USERID,u.USERNAME,u.USERPASS,u.TRUENAME,u.ISDEL,u.USERDEPART,r.rolecode from SYS_USER u,sys_user_role r "); strSql.Append(" where Upper(UserName)=@UserName and Upper(UserPass)=@UserPass and r.userid=u.userid"); SqlParameter[] parameters = { new SqlParameter("@USERNAME", SqlDbType.VarChar,32), new SqlParameter("@USERPASS", SqlDbType.VarChar,64)}; parameters[0].Value = userName.ToUpper(); parameters[1].Value = userPass.ToUpper(); return DbHelperSQL.Query(strSql.ToString(), parameters); } /// <summary> /// 得到一个对象实体 /// </summary> public MD_Sys_User GetModel(Int64 userId) { //该表无主键信息,请自定义主键/条件字段 StringBuilder strSql = new StringBuilder(); strSql.Append("select USERID,USERNAME,USERPASS,TRUENAME,ISDEL,USERDEPART from SYS_USER "); strSql.Append(" where userId=@userId "); SqlParameter[] parameters = { new SqlParameter("@userId", SqlDbType.Int)}; parameters[0].Value = userId; MD_Sys_User model = new MD_Sys_User(); DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters); if (ds.Tables[0].Rows.Count > 0) { if (ds.Tables[0].Rows[0]["USERID"].ToString() != "") { model.UserId = int.Parse(ds.Tables[0].Rows[0]["USERID"].ToString()); } model.UserName = ds.Tables[0].Rows[0]["USERNAME"].ToString(); model.UserPass = ds.Tables[0].Rows[0]["USERPASS"].ToString(); model.TrueName = ds.Tables[0].Rows[0]["TRUENAME"].ToString(); if (ds.Tables[0].Rows[0]["ISDEL"].ToString() != "") { model.IsDel = int.Parse(ds.Tables[0].Rows[0]["ISDEL"].ToString()); } if (ds.Tables[0].Rows[0]["USERDEPART"].ToString() != "") { model.UserDepart = int.Parse(ds.Tables[0].Rows[0]["USERDEPART"].ToString()); } return model; } else { return null; } } ///<summary> /// 得到对象列表 ///</summary> public DataSet GetList() { StringBuilder strSql = new StringBuilder(); strSql.Append("select username,truename,userid,userdepart from sys_user where isdel=0 order by userid asc"); DataSet ds = DbHelperSQL.Query(strSql.ToString()); return ds; } /// <summary> /// 根据角色获取用户列表 /// </summary> /// <param name="role">角色编号</param> /// <returns>数据集</returns> public DataSet GetListByRole(string role) { StringBuilder strSql = new StringBuilder(); strSql.Append("select b.userid,username,truename,userdepart,isdel,rolecode"); strSql.Append(" from sys_user_role a,sys_user b where a.userid=b.userid and rolecode=@role"); SqlParameter[] parameter = new SqlParameter[]{ new SqlParameter("@role",SqlDbType.VarChar,8) }; parameter[0].Value = role; DataSet ds = DbHelperSQL.Query(strSql.ToString(),parameter); return ds; } ///<summary> /// 得到回收用户列表 ///</summary> public DataSet GetDelList() { StringBuilder strSql = new StringBuilder(); strSql.Append("select username,truename,userid,userdepart from sys_user where isdel=1 order by userid asc"); DataSet ds = DbHelperSQL.Query(strSql.ToString()); return ds; } #endregion 成员方法 } } using System; using System.Collections.Generic; using System.Text; using System.Data; namespace BLL { public class B_Sys_User { private readonly D_Sys_User DalUser = new D_Sys_User(); private readonly D_Sys_User_Role DalRole = new D_Sys_User_Role(); public B_Sys_User() { } //接收DAL层的(int类型)方法,在该层中为为 bool 类型方法,可极大的简化在Web层调用时的判断操作 #region 获取MD5加密后的字符串 /// <summary> /// 获取MD5加密后的字符串 /// </summary> /// <param name="sDataIn">需要加密的字符串</param> /// <returns>sDataIn加密后的字符串</returns> public static string GetMD5(string sDataIn) { System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); byte[] byt, bytHash; byt = System.Text.Encoding.UTF8.GetBytes(sDataIn); bytHash = md5.ComputeHash(byt); md5.Clear(); string sTemp = ""; for (int i = 0; i < bytHash.Length; i++) { sTemp += bytHash[i].ToString("x").PadLeft(2, '0'); } return sTemp; } #endregion #region Get操作 /// <summary> /// 获取角色列表 /// </summary> /// <param name="userId">用户Id</param> /// <returns>数据集</returns> private DataSet GetRoleList(Int32 userId) { return DalRole.GetList(userId); } /// <summary> /// 获取用户实体类 /// </summary> /// <param name="userPass">用户密码</param> /// <param name="userName">用户名称</param> /// <returns>实体类</returns> private MD_Sys_User GetUserModel(string userPass, string userName) { return DalUser.GetModel(userPass, userName); } /// <summary> /// 获取用户实体对象 /// </summary> /// <param name="userId">用户Id</param> /// <returns>实体类</returns> public MD_Sys_User GetModel(Int64 userId) { return DalUser.GetModel(userId); } /// <summary> /// 根据角色获取用户列表 /// </summary> /// <param name="role">角色编号</param> /// <returns>数据集</returns> public DataSet GetListByRole(string role) { return DalUser.GetListByRole(role); } ///<summary> /// 获取用户列表 ///</summary> /// <returns>数据集</returns> public DataSet GetUserList() { return DalUser.GetList(); } ///<summary> /// 获取回收用户列表 ///</summary> /// <returns>数据集</returns> public DataSet GetDelList() { return DalUser.GetDelList(); } /// <summary> /// 判断用户名称是否存在 /// </summary> /// <param name="username">用户名称</param> /// <returns>是否存在</returns> public bool IsExist(string username) { return DalUser.IsExist(username) == 0 ? false : true; } /// <summary> /// 判断用户密码是否正确 /// </summary> /// <param name="username">用户名称</param> /// <returns>是否存在</returns> public bool IsExistPass(string userpass,Int32 userid) { userpass = GetMD5(userpass); return DalUser.IsExistPass(userpass,userid) == 0 ? false : true; } /// <summary> /// 验证登陆信息 /// </summary> /// <param name="userPass">用户密码</param> /// <param name="userName">用户名称</param> /// <returns>实体类</returns> public MB_Bas_User CheckLogin(string userPass, string userName) { MD_Sys_User MDUser = new MD_Sys_User(); MB_Bas_User MbUser = new MB_Bas_User(); string permitCodes = ""; if (userPass != "" && userName != "") { MDUser = GetUserModel(GetMD5(userPass), userName); if (MDUser != null && MDUser.UserId > 0) { DataSet ds = GetRoleList(MDUser.UserId); if (ds != null) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { permitCodes += ds.Tables[0].Rows[i]["PermitCode"] + "|"; } MbUser.UserPermit = permitCodes; MbUser.UserPass = MDUser.UserPass; MbUser.UserName = MDUser.UserName; MbUser.TrueName = MDUser.TrueName; MbUser.UserId = MDUser.UserId; } else { MbUser.LoginErrInfo = "提示信息:用户没有权限!"; } } else { MbUser.LoginErrInfo = "提示信息:用户名密码错误!"; } } else { MbUser.LoginErrInfo = "提示信息:请输入用户名密码!"; } return MbUser; } /// <summary> /// 验证登陆信息 /// </summary> /// <param name="userPass">用户密码</param> /// <param name="userName">用户名称</param> /// <returns>实体类</returns> public MB_Bas_User CheckAdminLogin(string userPass, string userName) { MD_Sys_User MDUser = new MD_Sys_User(); MB_Bas_User MbUser = new MB_Bas_User(); string permitCodes = ""; if (userPass != "" && userName != "") { MDUser = GetUserModel(GetMD5(userPass), userName); DataSet dsAdmin = DalUser.GetAdminModel(GetMD5(userPass), userName); if (MDUser != null) { if (dsAdmin.Tables[0].Rows.Count > 0) { DataSet ds = GetRoleList(Convert.ToInt32(dsAdmin.Tables[0].Rows[0]["userid"].ToString())); if (ds != null) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { permitCodes += ds.Tables[0].Rows[i]["PermitCode"] + "|"; } MbUser.UserPermit = permitCodes; MbUser.UserPass = dsAdmin.Tables[0].Rows[0]["USERPASS"].ToString(); MbUser.UserName = dsAdmin.Tables[0].Rows[0]["USERNAME"].ToString(); MbUser.TrueName = dsAdmin.Tables[0].Rows[0]["TRUENAME"].ToString(); MbUser.RoleCode = dsAdmin.Tables[0].Rows[0]["rolecode"].ToString(); if (dsAdmin.Tables[0].Rows[0]["USERID"].ToString() != "") { MbUser.UserId = Convert.ToInt64(dsAdmin.Tables[0].Rows[0]["userid"].ToString()); } } else { MbUser.LoginErrInfo = "提示信息:用户没有权限!"; } return MbUser; } else { MbUser.LoginErrInfo = "提示信息:用户名密码错误!"; } } else { MbUser.LoginErrInfo = "提示信息:用户不存在或已经离职!"; } } else { MbUser.LoginErrInfo = "提示信息:请输入用户名密码!"; } return MbUser; } #endregion #region 编辑操作 ///<summary> /// 回收用户 ///</summary> /// <returns>是否成功</returns> public bool RecoverUser(int userId) { return DalUser.RecoverUser(userId) == 0 ? false : true; } /// <summary> /// 启用用户 /// </summary> /// <param name="userId">用户Id</param> /// <returns>是否成功</returns> public bool UsingUser(int userId) { return DalUser.UsingUser(userId) == 0 ? false : true; } /// <summary> /// 修改用户登陆密码 /// </summary> /// <param name="userId">用户Id</param> /// <returns>是否成功</returns> public bool SetUserPass(MD_Sys_User md) { return DalUser.SetUserPass(md) == 0 ? false : true; } /// <summary> /// 更新用户细信息 /// </summary> /// <param name="md">用户实体类</param> /// <returns>是否成功</returns> public bool SetUser(MD_Sys_User md) { if (md != null) { if (md.UserPass == "") return DalUser.SetName(md) == 0 ? false : true; else return DalUser.SetNamePass(md) == 0 ? false : true; } else { return false; } } #endregion #region 添加操作 ///<summary> /// 增加用户 /// </summary> /// <param name="sysUser">实体类</param> /// <returns>是否成功</returns> public bool AddSysUser(MD_Sys_User sysUser) { return DalUser.AddSysUser(sysUser) == 0 ? false : true; } #endregion #region 删除操作 /// <summary> /// 根据用户Id删除用户 /// </summary> /// <param name="userId">用户Id</param> /// <returns></returns> public bool DelUserByUserId(Int32 userId) { return DalUser.DelUserByUserId(userId) == 0 ? false : true; } #endregion } } using System.Text; namespace Admin { public partial class User_Add : Components.PageBase { MD_Sys_User sysuser = new MD_Sys_User(); protected void Page_Load(object sender, EventArgs e) { } #region 重载保存方法 /// <summary> ///添加用户方法 /// </summary> public override StringBuilder PageSave() { B_Sys_User bll = new B_Sys_User(); if (bll.IsExist(sysuser.UserName)) { return base.GetErrHtml("此用户账号已被使用!", "User_Add.aspx"); } else { if (bll.AddSysUser(sysuser)) { return base.GetOkHtml("添加用户["+ sysuser.UserName +"]","User.aspx"); } else { return base.GetErrHtml("添加失败!", "User_Add.aspx"); } } } #endregion #region 重载其他方法 /// <summary> /// 验证表单是否完整。 /// </summary> /// <returns>返回验证信息,""为验证通过。</returns> public override string ValidatorInput() { if (!Components.PagePub.CheckParame(new String[] { Request.Form["username"], Request.Form["userpass"], Request.Form["truename"] })) { return "表单填写不完整!"; } else { sysuser.TrueName = Request.Form["truename"].ToString(); sysuser.UserPass = B_Sys_User.GetMD5(Request.Form["userpass"].ToString()); sysuser.UserName = Request.Form["username"].ToString().ToLower(); sysuser.IsDel = 0; sysuser.UserDepart = Convert.ToInt32(Request.Form["userdepart"]); return ""; } } #endregion } }