/// <summary> /// 获取待切换用户信息 /// </summary> public static OperationResult GetUserForSwitch(int id, out UserSessionModel userSession) { string sql = @"SELECT u.ID,RoleID,r.RoleName,r.RoleLevel,u.UserName,u.NickName,u.StrucID,u.VehicleViewMode FROM dbo.Users u INNER JOIN dbo.Roles r ON u.RoleID=r.ID INNER JOIN dbo.Structures s ON u.StrucID=s.ID WHERE u.ID=@ID"; List <SqlParameter> paras = new List <SqlParameter>() { new SqlParameter("@ID", SqlDbType.Int), }; paras[0].Value = id; DataTable dt = MSSQLHelper.ExecuteDataTable(CommandType.Text, sql, paras.ToArray()); OperationResult result = new OperationResult(); userSession = null; if (dt == null) { result.Message = PromptInformation.DBError; return(result); } if (dt.Rows.Count == 0) { result.Message = PromptInformation.NotExists; return(result); } //获取到用户信息,组装session内容 int userID = Convert.ToInt32(dt.Rows[0][0].ToString()); int roleID = Convert.ToInt32(dt.Rows[0][1]); string roleName = dt.Rows[0][2].ToString(); int roleLevel = Convert.ToInt32(dt.Rows[0][3]); userSession = new UserSessionModel(); userSession.UserName = dt.Rows[0][4].ToString(); userSession.NickName = dt.Rows[0][5].ToString(); userSession.StrucID = Convert.ToInt32(dt.Rows[0][6]); userSession.VehicleViewMode = string.IsNullOrEmpty(dt.Rows[0][7].ToString()) ? true : Convert.ToBoolean(dt.Rows[0][7]); userSession.UserId = Convert.ToInt32(userID); userSession.RoleInfo = new RoleInfoModel() { RoleID = roleID, RoleLevel = (RoleLevelEnum)roleLevel, RoleName = roleName }; //获取用户功能信息 List <FunctionsInfoModel> funcList = null; if (userSession.RoleInfo.RoleLevel == RoleLevelEnum.SuperAdmin) { funcList = FunctionBLL.GetAllFunctions(); } else { funcList = FunctionBLL.GetFunctionsByUserID(userID); } if (funcList == null) { result.Message = Asiatek.Resource.PromptInformation.GetFunctionsError; return(result); } if (funcList.Count == 0) { result.Message = Asiatek.Resource.PromptInformation.NoFunctions; return(result); } userSession.Functions = funcList; result.Success = true; return(result); }
/// <summary> /// 用户登录 /// </summary> /// <param name="user">用户登录数据</param> /// <param name="userSession">登录后返回的用户相关信息</param> /// <returns></returns> public static OperationResult Login(UserLoginModel user, out UserSessionModel userSession) { string sql = @"SELECT u.ID,RoleID,r.RoleName,r.RoleLevel,u.NickName,u.StrucID,u.VehicleViewMode FROM dbo.Users u INNER JOIN dbo.Roles r ON u.RoleID=r.ID INNER JOIN dbo.Structures s ON u.StrucID=s.ID WHERE u.UserName=@UserName AND u.UserPassword=@UserPassword AND s.StrucAccount=@StrucAccount"; List <SqlParameter> paras = new List <SqlParameter>() { new SqlParameter("@UserName", SqlDbType.VarChar, 20), new SqlParameter("@UserPassword", SqlDbType.Char, 32), new SqlParameter("@StrucAccount", SqlDbType.VarChar, 50), }; paras[0].Value = user.UserName.Trim(); paras[1].Value = MD5Helper.GetMD5Str(user.Password.Trim()); paras[2].Value = user.StrucAccount.Trim(); DataTable dt = MSSQLHelper.ExecuteDataTable(CommandType.Text, sql, paras.ToArray()); OperationResult result = new OperationResult(); userSession = null; if (dt == null) { result.Message = Asiatek.Resource.PromptInformation.LoginDBError; return(result); } if (dt.Rows.Count == 0) { result.Message = Asiatek.Resource.PromptInformation.LoginError; return(result); } //获取到用户信息,组装session内容 int userID = Convert.ToInt32(dt.Rows[0][0].ToString()); int roleID = Convert.ToInt32(dt.Rows[0][1]); string roleName = dt.Rows[0][2].ToString(); int roleLevel = Convert.ToInt32(dt.Rows[0][3]); userSession = new UserSessionModel(); userSession.UserName = user.UserName.Trim(); userSession.NickName = dt.Rows[0][4].ToString(); userSession.StrucID = Convert.ToInt32(dt.Rows[0][5]); userSession.UserId = Convert.ToInt32(userID); userSession.RoleInfo = new RoleInfoModel() { RoleID = roleID, RoleLevel = (RoleLevelEnum)roleLevel, RoleName = roleName }; userSession.VehicleViewMode = string.IsNullOrEmpty(dt.Rows[0][6].ToString()) ? true : Convert.ToBoolean(dt.Rows[0][6]); //获取用户功能信息 List <FunctionsInfoModel> funcList = null; if (userSession.RoleInfo.RoleLevel == RoleLevelEnum.SuperAdmin) { funcList = FunctionBLL.GetAllFunctions(); } else { funcList = FunctionBLL.GetFunctionsByUserID(userID); } if (funcList == null) { result.Message = Asiatek.Resource.PromptInformation.GetFunctionsError; return(result); } if (funcList.Count == 0) { result.Message = Asiatek.Resource.PromptInformation.NoFunctions; return(result); } userSession.Functions = funcList; result.Success = true; return(result); }