/// <summary> /// 获取用户与学校相关的信息 /// </summary> /// <param name="userId">目标用户编号</param> /// <returns>用户与学校相关的信息</returns> public static UserWithSchool GetUserWithSchool(int userId) { using (DbCommander cmd = new DbCommander(DbConn.ReadDb, "SP_Users_GetUserWithSchool", CommandType.StoredProcedure)) { cmd.AddInputParameters("UserId", userId); UserWithSchool resultData = null; using (IDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { resultData = new UserWithSchool { UserId = (int)reader["UserId"], SchoolId = (int)reader["UserId"], IsTrial = (bool)reader["IsTrial"], TrialedSource = (string)reader["TrialedSource"], IsActivated = (bool)reader["IsActivated"], ActivatedDate = (DateTime)reader["ActivatedDate"], IsExpired = (bool)reader["IsExpired"], ExpiredDate = (DateTime)reader["ExpiredDate"], StudNo = (string)reader["StudNo"], ClassInfo = (string)reader["ClassInfo"], Comment = (string)reader["Comment"], SyncForBbs = (bool)reader["SyncForBbs"], Status = (int)reader["Status"] }; } reader.Close(); } return(resultData); } }
/// <summary> /// 更改学校试用用户账号状态信息 /// </summary> /// <param name="userWithSchool">用户相关信息</param> /// <param name="action">更改状态:0-激活,1-过期</param> public static void SchoolTrialUserStatusChanged(UserWithSchool userWithSchool, int action = 0) { using (DbCommander cmd = new DbCommander(DbConn.WriteDb, "SP_Users_SchoolTrialUserStatusChanged", CommandType.StoredProcedure)) { cmd.AddInputParameters("UserId, IsActivated, ActivatedDate, IsExpired, ExpiredDate, Action", userWithSchool.UserId, userWithSchool.IsActivated, userWithSchool.ActivatedDate, userWithSchool.IsExpired, userWithSchool.ExpiredDate, action); cmd.ExecuteNonQuery(); } }
/// <summary> /// 注册用户账号 /// </summary> /// <param name="uAccount">用户账户信息</param> /// <param name="uInfo">用户个人信息</param> /// <param name="extInfo">用户扩展信息</param> public static void CreateUser(UserAccount uAccount, UserInfo uInfo, UserExtInfo extInfo) { UserConfig userConfig = UserConfigs.GetUserConfigCache(); DateTime dtNow = DateTime.Now; #region UserAccount uAccount.UserId = 0; uAccount.PasswordSalt = EncryptHelper.CreateSalt(16); uAccount.Password = CreatePassword(uAccount.Password, uAccount.PasswordSalt); uAccount.LastPasswordChangedDate = dtNow; uAccount.IsApproved = true; uAccount.ApprovedDate = dtNow; uAccount.IsLocked = false; uAccount.LastLockedoutDate = dtNow; uAccount.CreateDate = dtNow; uAccount.LoginCount = 0; uAccount.LastLoginDate = dtNow; #endregion #region UserInfo uInfo.RealName = string.Empty; uInfo.BackIcon = userConfig == null ? string.Empty : (userConfig.DefaultBackIcon ?? string.Empty); uInfo.HeadIcon = userConfig == null ? string.Empty : (userConfig.DefaultHeadIcon ?? string.Empty); uInfo.Signature = string.Empty; uInfo.Comment = string.Empty; uInfo.Gender = 0; uInfo.Birthday = dtNow.AddYears(-18); //uInfo.UserAge = 0; uInfo.IDCardNo = string.Empty; uInfo.Area = string.Empty; uInfo.Address = string.Empty; uInfo.PostCode = string.Empty; uInfo.Industry = string.Empty; uInfo.Company = string.Empty; uInfo.JobPosition = string.Empty; uInfo.Interests = string.Empty; uInfo.WebSite = string.Empty; uInfo.Email = string.Empty; uInfo.Mobile = string.Empty; uInfo.Telphone = string.Empty; uInfo.QQ = string.Empty; uInfo.MSN = string.Empty; uInfo.OtherInfo = string.Empty; uInfo.LastChangeDate = dtNow; #endregion #region UserExtInfo extInfo.UserSite = 0; extInfo.UserRole = 0; extInfo.UserAccess = UserAccess.App | UserAccess.Web; extInfo.CreateDeviceId = extInfo.CreateDeviceId; extInfo.CreateAPPChannel = extInfo.CreateAPPChannel; extInfo.CreateAccountChannel = extInfo.CreateAccountChannel; extInfo.LastLoginDeviceId = extInfo.CreateDeviceId; extInfo.LastLoginAPPChannel = extInfo.CreateAPPChannel; extInfo.LastLoginAccountChannel = extInfo.CreateAccountChannel; extInfo.ExpScore = 0; extInfo.ExpLevel = 0; extInfo.GradeName = string.Empty; extInfo.GradeIcon = string.Empty; extInfo.VirtualCoinCount = 0; extInfo.FansCount = 0; extInfo.FollowedCount = 0; extInfo.TopicCount = 0; extInfo.ReplyCount = 0; #endregion #region UserCoords UserCoords userCoords = new UserCoords { Longitude = 0, Latitudes = 0, LastChangeTime = dtNow }; #endregion #region UserOptions UserOptions userOptions = new UserOptions { RemindPrivateMessage = true, RemindGroupMessage = true, RemindBeFollowed = false, RemindTopicBeReply = false, LastChangeDate = dtNow }; #endregion #region UserWithSchool UserWithSchool userInSchool = new UserWithSchool { SchoolId = 0, IsTrial = false, TrialedSource = string.Empty, IsActivated = false, ActivatedDate = dtNow, IsExpired = false, ExpiredDate = dtNow, StudNo = string.Empty, ClassInfo = string.Empty, Status = 0, Comment = string.Empty, SyncForBbs = false }; #endregion UserData.CreateUser(uAccount, uInfo, extInfo, userCoords, userOptions, userInSchool); if (uAccount.UserId > 0) { //初始经验值 if (userConfig.InitExp != 0) { UpdateUserExp(uAccount.UserId, userConfig.InitExp, "注册"); } //初始虚拟币 if (userConfig.InitCoin != 0) { UpdateUserCoin(uAccount.UserId, userConfig.InitCoin, "注册"); } } }
/// <summary> /// 获取用户验证信息 /// </summary> /// <param name="uAccount">用户账户信息(用户名和密码)</param> /// <param name="userAccess">用户对应的登录权限</param> /// <returns>用户验证信息</returns> public static UserVaildInfo GetUserVaildInfo(UserAccount uAccount, UserAccess userAccess = UserAccess.App) { UserVaildInfo uVaildInfo = UserData.GetUserVaildInfo(uAccount.UserName, userAccess); #region 密码 uAccount.Password = string.Format("MIAP_{0}_{1}_GW", uAccount.Password, uVaildInfo.PasswordSalt).CreateMD5Encrypt(); if (!uAccount.Password.Equals(uVaildInfo.Password)) { uVaildInfo.UserId = 0; return(uVaildInfo); } #endregion #region 账户是否通过验证 if (!uVaildInfo.IsApproved) { uVaildInfo.UserId = -1; return(uVaildInfo); } #endregion #region 是否被锁定 if (uVaildInfo.IsLocked) { if (DateTime.Now < uVaildInfo.LastLockedoutDate) { uVaildInfo.UserId = -2; return(uVaildInfo); } //锁定时间到期,解锁 UserData.SetUsesUnLocked(uVaildInfo.UserId); //记录状态变更日志 UserStatusChangedLog log = new UserStatusChangedLog { UserId = uVaildInfo.UserId, Action = 1, Comment = "锁定时间到期,自动解锁!", CreateDate = DateTime.Now }; LogsBiz.CreateLogs <UserStatusChangedLog>(log); } #endregion #region 是否为试用账号,如果是,试用账号状态 if (uVaildInfo.UserSite > 0) { UserWithSchool uWithSchool = UserData.GetUserWithSchool(uVaildInfo.UserId); UserWithSchool tempUserWithSchoolInfo; //试用账号 if (uWithSchool.IsTrial) { if (!uWithSchool.IsActivated) { //激活试用账号 UserConfig userConfig = UserConfigs.GetUserConfigCache(); tempUserWithSchoolInfo = new UserWithSchool { UserId = uWithSchool.UserId, IsActivated = true, ActivatedDate = DateTime.Now, IsExpired = false, ExpiredDate = userConfig.TrialAccountExpiredDay > 0 ? DateTime.Now.AddDays(userConfig.TrialAccountExpiredDay) : DateTime.MaxValue }; UserData.SchoolTrialUserStatusChanged(tempUserWithSchoolInfo); } else { //超时时间已过,将试用账号设为过期 if (!uWithSchool.IsExpired && DateTime.Now >= uWithSchool.ExpiredDate) { tempUserWithSchoolInfo = new UserWithSchool { UserId = uWithSchool.UserId, IsActivated = uWithSchool.IsActivated, ActivatedDate = uWithSchool.ActivatedDate, IsExpired = true, ExpiredDate = uWithSchool.ExpiredDate }; UserData.SchoolTrialUserStatusChanged(tempUserWithSchoolInfo, 1); uWithSchool.IsExpired = true; } //试用账号已过期 if (uWithSchool.IsExpired) { uVaildInfo.UserId = -3; return(uVaildInfo); } } } } #endregion return(uVaildInfo); }
/// <summary> /// 创建用户记录 /// </summary> /// <param name="uAccount">用户账号信息</param> /// <param name="uInfo">用户个人信息</param> /// <param name="extInfo">用户扩展信息</param> /// <param name="userCoords">用户当前位置坐标信息</param> /// <param name="userOptions">用户个人应用设置信息</param> /// <param name="userInSchool">学校用户信息</param> public static void CreateUser(UserAccount uAccount, UserInfo uInfo, UserExtInfo extInfo, UserCoords userCoords, UserOptions userOptions, UserWithSchool userInSchool) { using (DbCommander cmd = new DbCommander(DbConn.WriteDb, "SP_Users_UserAccountCreate", CommandType.StoredProcedure)) { cmd.AddInputParameters( @"UserId, UserName, Password, PasswordFormat, PasswordSalt, LoginCount, CreateDate, NickName, RealName, BackIcon, HeadIcon, Signature, Comment, Gender, Birthday, IDCardNo, Area, Address, PostCode, Industry, Company, JobPosition, Interests, WebSite, Email, Mobile, Telphone, QQ, MSN, OtherInfo, UserSite, UserRole, UserAccess, CreateDeviceId, CreateAPPChannel, CreateAccountChannel, Longitude, Latitudes, RemindPrivateMessage, RemindGroupMessage, RemindBeFollowed, RemindTopicBeReply, SchoolId, IsTrial, TrialedSource, IsActivated, IsExpired, StudNo, ClassInfo, SchoolComment, SyncForBbs, Status", uAccount.UserId, uAccount.UserName, uAccount.Password, uAccount.PasswordFormat, uAccount.PasswordSalt, uAccount.LoginCount, uAccount.CreateDate, uInfo.NickName, uInfo.RealName, uInfo.BackIcon, uInfo.HeadIcon, uInfo.Signature, uInfo.Comment, uInfo.Gender, uInfo.Birthday, uInfo.IDCardNo, uInfo.Area, uInfo.Address, uInfo.PostCode, uInfo.Industry, uInfo.Company, uInfo.JobPosition, uInfo.Interests, uInfo.WebSite, uInfo.Email, uInfo.Mobile, uInfo.Telphone, uInfo.QQ, uInfo.MSN, uInfo.OtherInfo, extInfo.UserSite, extInfo.UserRole, extInfo.UserAccess, extInfo.CreateDeviceId, extInfo.CreateAPPChannel, extInfo.CreateAccountChannel, userCoords.Longitude, userCoords.Latitudes, userOptions.RemindPrivateMessage, userOptions.RemindGroupMessage, userOptions.RemindBeFollowed, userOptions.RemindTopicBeReply, userInSchool.SchoolId, userInSchool.IsTrial, userInSchool.TrialedSource, userInSchool.IsActivated, userInSchool.IsExpired, userInSchool.StudNo, userInSchool.ClassInfo, userInSchool.Comment, userInSchool.SyncForBbs, userInSchool.Status ); uAccount.UserId = Convert.ToInt32(cmd.ExecuteScalar()); } }