AlumUserRepository.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. using System;
  2. using System.Configuration;
  3. using CommonTool;
  4. using YZXYH.Repository.Models;
  5. namespace YZXYH.Repository
  6. {
  7. public partial class AlumUserRepository
  8. {
  9. /// <summary>
  10. /// 用户登录
  11. /// </summary>
  12. /// <param name="pcUserNo">用户账号</param>
  13. /// <param name="pcPassword">密码</param>
  14. /// <param name="pcErrorMsg">错误信息</param>
  15. /// <param name="pcUserType">用户类型</param>
  16. /// <param name="isCookie">是否自动登录</param>
  17. /// <returns></returns>
  18. public bool Login(string pcUserNo, string pcPassword, ref string pcErrorMsg,UserType pcUserType,bool isCookie)
  19. {
  20. if (pcErrorMsg == null) throw new ArgumentNullException(nameof(pcErrorMsg));
  21. pcErrorMsg = "";
  22. bool lbRetval = false;
  23. string lcMsg = "失败";
  24. string loPassword;
  25. string loName;
  26. string loGraduationYear = "";
  27. string lcSessionName;
  28. string lcUserNo;
  29. if (pcUserType==UserType.GeneralUser)
  30. {
  31. if (!IsExist(u => u.Mobile == pcUserNo && u.IsLocked == "N"))
  32. {
  33. pcErrorMsg = "用户手机号码不存在!";
  34. return false;
  35. }
  36. AlumUser loAlumUser = GetSingle(u => u.Mobile == pcUserNo);
  37. lcUserNo = loAlumUser.Id;
  38. pcUserType = loAlumUser.GraduationYear == "0000" ? UserType.TeacherUser : pcUserType;
  39. loName = loAlumUser.Name;
  40. loPassword = loAlumUser.Password;
  41. loGraduationYear = loAlumUser.GraduationYear;
  42. lcSessionName = ConfigurationManager.AppSettings["UserInfoSession"];
  43. }
  44. else
  45. {
  46. if (!UnitOfWork.SysUserRepository.IsExist(u => u.SysNo == pcUserNo && u.IsLocked == "N"&&u.TimeExpiration.CompareTo(DateTime.Now)>0))
  47. {
  48. pcErrorMsg = "用户账号不存在或已被锁定(过期)!";
  49. return false;
  50. }
  51. SysUser loSysUser = UnitOfWork.SysUserRepository.GetSingle(u => u.SysNo == pcUserNo);
  52. lcUserNo = loSysUser.Id;
  53. loName = loSysUser.SysName;
  54. loPassword = loSysUser.SysPassword;
  55. lcSessionName = ConfigurationManager.AppSettings["SysUserInfoSession"];
  56. }
  57. pcPassword = SysSecurity.Encrypt4CPlus(pcPassword.Trim());
  58. if (loPassword == pcPassword.Trim())
  59. {
  60. lbRetval = true;
  61. lcMsg = "成功";
  62. string lcGuid = UtilRandom.GetGuid();
  63. SysUserInfo loUserInfo = new SysUserInfo(lcUserNo, pcPassword, loName, pcUserType)
  64. {
  65. UserGuid = lcGuid
  66. };
  67. UserListSession.Instance.Add(lcGuid, loUserInfo);
  68. SessionHelper.Instance.AddSession(lcSessionName, lcGuid, 30);
  69. if (isCookie)
  70. {
  71. string lcCookieName = ConfigurationManager.AppSettings["SysUserInfoCookie"];
  72. CookieHelper.Instance.WriteCookie(lcCookieName,
  73. CookieHelper.Instance.BuildCookueValue(SysSecurity.Encrypt(JsonHelper.Instance.Serialize(loUserInfo)), 3000));
  74. }
  75. }
  76. else
  77. {
  78. pcErrorMsg = "登录密码错误";
  79. }
  80. UnitOfWork.UserLastLoginRepository.InsertNoId(new UserLastLogin()
  81. {
  82. UserNo = lcUserNo,
  83. TimeLastLogin = DateTime.Now,
  84. IpAddress = IpHelper.Instance.GetClientIp()
  85. });
  86. UnitOfWork.SysLogRepository.AddLog(pcUserType + " | Login", " 登录 " + lcMsg,
  87. loName + "|" + pcUserNo, pcErrorMsg, loGraduationYear);
  88. return lbRetval;
  89. }
  90. /// <summary>
  91. /// 检查用户的登录是否有效
  92. /// </summary>
  93. /// <returns></returns>
  94. public bool CheckLogin()
  95. {
  96. bool lbRetval = false;
  97. string lcSessionName = ConfigurationManager.AppSettings["UserInfoSession"];
  98. string lcToken = SessionHelper.Instance.GetSession(lcSessionName);
  99. SessionHelper.Instance.DelSession(lcSessionName);
  100. if (string.IsNullOrEmpty(lcToken))
  101. return false;
  102. if (CheckLogin(lcToken))
  103. {
  104. SessionHelper.Instance.AddSession(lcSessionName, lcToken, 30);
  105. lbRetval = true;
  106. }
  107. return lbRetval;
  108. }
  109. /// <summary>
  110. /// 根据Token检查用户登录
  111. /// </summary>
  112. /// <param name="pcToken">Token</param>
  113. /// <param name="pcValidate">需验证Token密码</param>
  114. /// <returns></returns>
  115. public bool CheckLogin(string pcToken, bool pcValidate = false)
  116. {
  117. bool lbRetval = UserListSession.Instance.IsContainsKey(pcToken);
  118. if (pcValidate && lbRetval)
  119. {
  120. SysUserInfo loUserInfo = UserListSession.Instance.GetUserInfoByGuid(pcToken);
  121. string lcMobile = loUserInfo.UserNo;
  122. string lcPassword = loUserInfo.Password;
  123. AlumUser loAlumUser = GetSingle(u => u.Mobile == lcMobile && u.IsLocked == "N");
  124. lbRetval = lcPassword == loAlumUser.Password;
  125. }
  126. return lbRetval;
  127. }
  128. /// <summary>
  129. /// 修改密码
  130. /// </summary>
  131. /// <param name="pcMobile">手机号</param>
  132. /// <param name="pcOldPassword">原密码</param>
  133. /// <param name="pcNewPassword">新密码</param>
  134. /// <param name="pcMsg">操作信息</param>
  135. /// <param name="sysUserInfo"></param>
  136. /// <returns></returns>
  137. public bool ModifyPassword(string pcMobile, string pcOldPassword, string pcNewPassword, ref string pcMsg, SysUserInfo sysUserInfo)
  138. {
  139. if (pcMsg == null) throw new ArgumentNullException(nameof(pcMsg));
  140. bool lbRetval = false;
  141. string lcErrorMsg="";
  142. AlumUser alum = GetSingle(a => a.Mobile == pcMobile && a.IsLocked == "N");
  143. if (alum != null)
  144. {
  145. if (SysSecurity.Encrypt4CPlus(pcOldPassword.Trim()) == alum.Password)
  146. {
  147. Update(a => a.Mobile == pcMobile, a => new AlumUser {Password = SysSecurity.Encrypt4CPlus(pcNewPassword.Trim())});
  148. if (Save())
  149. {
  150. pcMsg = "修改密码成功";
  151. lbRetval = true;
  152. }
  153. else
  154. {
  155. pcMsg = "修改密码失败";
  156. lcErrorMsg = "保存修改失败";
  157. }
  158. }
  159. else
  160. {
  161. pcMsg = "修改密码失败,原密码错误!";
  162. lcErrorMsg = "原密码错误";
  163. }
  164. UnitOfWork.SysLogRepository.AddLog(sysUserInfo.UserType+" | Modify", pcMsg,
  165. alum.Name + "|" + alum.Mobile, lcErrorMsg, alum.GraduationYear);
  166. }
  167. else
  168. {
  169. pcMsg = "用户不存在或已被锁定!";
  170. }
  171. return lbRetval;
  172. }
  173. }
  174. }