using System; using System.Configuration; using CommonTool; using YZXYH.Repository.Models; namespace YZXYH.Repository { public partial class AlumUserRepository { /// /// 用户登录 /// /// 用户账号 /// 密码 /// 错误信息 /// 用户类型 /// 是否自动登录 /// public bool Login(string pcUserNo, string pcPassword, ref string pcErrorMsg,UserType pcUserType,bool isCookie) { if (pcErrorMsg == null) throw new ArgumentNullException(nameof(pcErrorMsg)); pcErrorMsg = ""; bool lbRetval = false; string lcMsg = "失败"; string loPassword; string loName; string loGraduationYear = ""; string lcSessionName; string lcUserNo; if (pcUserType==UserType.GeneralUser) { if (!IsExist(u => u.Mobile == pcUserNo && u.IsLocked == "N")) { pcErrorMsg = "用户手机号码不存在!"; return false; } AlumUser loAlumUser = GetSingle(u => u.Mobile == pcUserNo); lcUserNo = loAlumUser.Id; pcUserType = loAlumUser.GraduationYear == "0000" ? UserType.TeacherUser : pcUserType; loName = loAlumUser.Name; loPassword = loAlumUser.Password; loGraduationYear = loAlumUser.GraduationYear; lcSessionName = ConfigurationManager.AppSettings["UserInfoSession"]; } else { if (!UnitOfWork.SysUserRepository.IsExist(u => u.SysNo == pcUserNo && u.IsLocked == "N"&&u.TimeExpiration.CompareTo(DateTime.Now)>0)) { pcErrorMsg = "用户账号不存在或已被锁定(过期)!"; return false; } SysUser loSysUser = UnitOfWork.SysUserRepository.GetSingle(u => u.SysNo == pcUserNo); lcUserNo = loSysUser.Id; loName = loSysUser.SysName; loPassword = loSysUser.SysPassword; lcSessionName = ConfigurationManager.AppSettings["SysUserInfoSession"]; } pcPassword = SysSecurity.Encrypt4CPlus(pcPassword.Trim()); if (loPassword == pcPassword.Trim()) { lbRetval = true; lcMsg = "成功"; string lcGuid = UtilRandom.GetGuid(); SysUserInfo loUserInfo = new SysUserInfo(lcUserNo, pcPassword, loName, pcUserType) { UserGuid = lcGuid }; UserListSession.Instance.Add(lcGuid, loUserInfo); SessionHelper.Instance.AddSession(lcSessionName, lcGuid, 30); if (isCookie) { string lcCookieName = ConfigurationManager.AppSettings["SysUserInfoCookie"]; CookieHelper.Instance.WriteCookie(lcCookieName, CookieHelper.Instance.BuildCookueValue(SysSecurity.Encrypt(JsonHelper.Instance.Serialize(loUserInfo)), 3000)); } } else { pcErrorMsg = "登录密码错误"; } UnitOfWork.UserLastLoginRepository.InsertNoId(new UserLastLogin() { UserNo = lcUserNo, TimeLastLogin = DateTime.Now, IpAddress = IpHelper.Instance.GetClientIp() }); UnitOfWork.SysLogRepository.AddLog(pcUserType + " | Login", " 登录 " + lcMsg, loName + "|" + pcUserNo, pcErrorMsg, loGraduationYear); return lbRetval; } /// /// 检查用户的登录是否有效 /// /// public bool CheckLogin() { bool lbRetval = false; string lcSessionName = ConfigurationManager.AppSettings["UserInfoSession"]; string lcToken = SessionHelper.Instance.GetSession(lcSessionName); SessionHelper.Instance.DelSession(lcSessionName); if (string.IsNullOrEmpty(lcToken)) return false; if (CheckLogin(lcToken)) { SessionHelper.Instance.AddSession(lcSessionName, lcToken, 30); lbRetval = true; } return lbRetval; } /// /// 根据Token检查用户登录 /// /// Token /// 需验证Token密码 /// public bool CheckLogin(string pcToken, bool pcValidate = false) { bool lbRetval = UserListSession.Instance.IsContainsKey(pcToken); if (pcValidate && lbRetval) { SysUserInfo loUserInfo = UserListSession.Instance.GetUserInfoByGuid(pcToken); string lcMobile = loUserInfo.UserNo; string lcPassword = loUserInfo.Password; AlumUser loAlumUser = GetSingle(u => u.Mobile == lcMobile && u.IsLocked == "N"); lbRetval = lcPassword == loAlumUser.Password; } return lbRetval; } /// /// 修改密码 /// /// 手机号 /// 原密码 /// 新密码 /// 操作信息 /// /// public bool ModifyPassword(string pcMobile, string pcOldPassword, string pcNewPassword, ref string pcMsg, SysUserInfo sysUserInfo) { if (pcMsg == null) throw new ArgumentNullException(nameof(pcMsg)); bool lbRetval = false; string lcErrorMsg=""; AlumUser alum = GetSingle(a => a.Mobile == pcMobile && a.IsLocked == "N"); if (alum != null) { if (SysSecurity.Encrypt4CPlus(pcOldPassword.Trim()) == alum.Password) { Update(a => a.Mobile == pcMobile, a => new AlumUser {Password = SysSecurity.Encrypt4CPlus(pcNewPassword.Trim())}); if (Save()) { pcMsg = "修改密码成功"; lbRetval = true; } else { pcMsg = "修改密码失败"; lcErrorMsg = "保存修改失败"; } } else { pcMsg = "修改密码失败,原密码错误!"; lcErrorMsg = "原密码错误"; } UnitOfWork.SysLogRepository.AddLog(sysUserInfo.UserType+" | Modify", pcMsg, alum.Name + "|" + alum.Mobile, lcErrorMsg, alum.GraduationYear); } else { pcMsg = "用户不存在或已被锁定!"; } return lbRetval; } } }