LoginRepository.cs 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. 
  2. using AutoMapper;
  3. using OASystem.Domain;
  4. using OASystem.Domain.AesEncryption;
  5. using OASystem.Domain.Dtos.QiYeWeChat;
  6. using OASystem.Domain.Dtos.System;
  7. using OASystem.Domain.Dtos.UserDto;
  8. using OASystem.Domain.Entities.System;
  9. using OASystem.Domain.ViewModels.System;
  10. using OASystem.Infrastructure.Repositories.System;
  11. using SqlSugar;
  12. namespace OASystem.Infrastructure.Repositories.Login
  13. {
  14. public class LoginRepository : BaseRepository<Sys_Users, LoginView>
  15. {
  16. public LoginRepository(SqlSugarClient sqlSugar, UsersRepository usersRep) :
  17. base(sqlSugar){}
  18. /// <summary>
  19. /// 用户登录
  20. /// 返回Token
  21. /// </summary>
  22. /// <param name="_loginRep"></param>
  23. /// <param name="loginDto"></param>
  24. /// <returns></returns>
  25. public async Task<Result> Login(LoginDto loginDto)
  26. {
  27. Result result = new Result() { Code = -2 };
  28. string SQLWhere = string.Format("Where Number='{0}' And Isdel = 0", loginDto.Number.Trim());
  29. string sql = string.Format("Select * From Sys_Users With(NoLock) {0}", SQLWhere);
  30. Sys_Users _entity = await GetSingleInfoBySqlWithNolockAsync(sql);
  31. if (_entity == null)
  32. {
  33. result.Msg = "暂无该账户信息!";
  34. return result;
  35. }
  36. if (!_entity.Password.Equals(loginDto.Password.Trim()))
  37. {
  38. result.Msg = "账户或密码错误!";
  39. return result;
  40. }
  41. //人事审核是否通过
  42. if (_entity.HrAudit != 1)
  43. {
  44. result.Msg = "该员工账号暂无登录权限,人事审核未通过!";
  45. return result;
  46. }
  47. //该用户是否已删除
  48. if (_entity.HrAudit != 1)
  49. {
  50. result.Msg = "已离职员工没有登录权限!";
  51. return result;
  52. }
  53. //portType 处理端口
  54. dynamic longinData = null;
  55. //员工数据
  56. string sqlWhere = string.Format(" Where su.Id={0}", _entity.Id);
  57. string userSqlWhere = string.Format(@"Select sc.CompanyName,sd.DepName,sjp.JobName,su.Id UserId,su.CnName,su.Sex,su.Email
  58. From Sys_Users su
  59. Inner Join Sys_Company sc On su.CompanyId = sc.Id
  60. Inner Join Sys_Department sd On su.DepId = sd.Id
  61. Inner Join Sys_JobPost sjp On su.JobPostId = sjp.Id {0}", sqlWhere);
  62. if (loginDto.PortType == 1) //web
  63. {
  64. var _userBasicInfo = await _sqlSugar.SqlQueryable<UserLoginInfoView>(userSqlWhere).FirstAsync();
  65. longinData = _userBasicInfo;
  66. }
  67. else if (loginDto.PortType == 2) // Android
  68. {
  69. var _userBasicInfo = await _sqlSugar.SqlQueryable<UserLoginInfoView>(userSqlWhere).FirstAsync();
  70. longinData = _userBasicInfo;
  71. }
  72. result.Code = 0;
  73. result.Msg = "登录成功!";
  74. result.Data = longinData;
  75. return result;
  76. }
  77. /// <summary>
  78. /// 用户注册
  79. /// </summary>
  80. /// <param name="_loginRep"></param>
  81. /// <param name="registerDto"></param>
  82. /// <returns></returns>
  83. public async Task<Result> Register( RegisterDto registerDto)
  84. {
  85. Result result = new Result();
  86. string IdCrad = registerDto.IdCrad;
  87. string birthDay = IdCrad.Substring(6, 4) + "-" + IdCrad.Substring(10, 2) + "-" + IdCrad.Substring(12, 2);
  88. string number = await CreateNumber(registerDto.DepId);
  89. //string number = "10001";
  90. if (string.IsNullOrEmpty(number))
  91. {
  92. result.Code = -2;
  93. result.Msg = "Number 设置失败,请前往对应部门 备注;里 设置Number前缀!";
  94. return result;
  95. }
  96. var _userInfo = new Sys_Users()
  97. {
  98. CnName = registerDto.CnName,
  99. EnName = registerDto.EnName,
  100. Sex = registerDto.Sex,
  101. Number = number, //员工编号 人事审核通过了 由信息部经理分配
  102. Password = registerDto.Password, //密码由用户自己设置
  103. CompanyId = registerDto.CompanyId,
  104. DepId = registerDto.DepId,
  105. JobPostId = registerDto.JobPostId,
  106. Ext = "", //由部门主管/信息部经理 分配
  107. Phone = registerDto.Phone,
  108. UrgentPhone = registerDto.UrgencyPhone,
  109. Email = registerDto.Email,
  110. Address = registerDto.Address,
  111. Edate = Convert.ToDateTime(registerDto.Edate), //入职时间默认当前数据提交时间
  112. Rdate = new DateTime(1990, 1, 1), //离职时间默认最原始时间
  113. Seniority = 0, //工龄默认 0
  114. Birthday = Convert.ToDateTime(birthDay),
  115. IDCard = registerDto.IdCrad,
  116. StartWorkDate = "1900-01-01 00:00:00.000", //开始工作时间默认最原始时间
  117. GraduateInstitutions = registerDto.GraduationSchhol,
  118. Professional = registerDto.Major,
  119. Education = registerDto.Education, //学历类型
  120. TheOrAdultEducation = registerDto.EducationType, //教育类型
  121. MaritalStatus = registerDto.MaritalStatus, // 未婚/已婚
  122. WorkExperience = registerDto.WorkExperience, // 工作经历
  123. HomeAddress = registerDto.HomeAddress, //身份证上 家庭住址
  124. UsePeriod = "", //试用期 由该人员入职部门主管手动操作
  125. Certificate = "", //证件上传地址 多个证件由 | 隔开
  126. CreateUserId = registerDto.CreateUserId,
  127. CreateTime = DateTime.Now, //默认当前时间
  128. DeleteUserId = null, //删除用户时操作该字段
  129. DeleteTime = null, //删除用户时操作该字段
  130. Remark = "", //备注
  131. IsDel = 0
  132. };
  133. //指定字段加密
  134. EncryptionProcessor.EncryptProperties(_userInfo);
  135. var _AddId = await _sqlSugar.Insertable(_userInfo).ExecuteReturnIdentityAsync();
  136. if (_AddId < 0)
  137. {
  138. result.Code = -2;
  139. result.Msg = "用户添加失败!";
  140. return result;
  141. }
  142. _userInfo.CreateUserId = _AddId;
  143. var updateStatus = await _sqlSugar.Updateable(_userInfo).UpdateColumns(it => new { it.CreateUserId }).Where(it => it.Id == _AddId).ExecuteCommandAsync();
  144. //添加员工 默认页面权限
  145. result.Code = 0;
  146. //result.Msg = string.Format("账号:{0}\r\n密码:{1}\r\n申请成功!\r\n人事主管审核后,即可登录OA!", number, registerDto.Password);
  147. result.Msg = string.Format("账号:{0}\r\n申请成功!\r\n人事主管审核后,即可登录OA!", number);
  148. return result;
  149. }
  150. /// <summary>
  151. /// 生成 Number
  152. /// </summary>
  153. /// <param name="depId"></param>
  154. /// <returns></returns>
  155. public async Task<string> CreateNumber(int depId) {
  156. string number = string.Empty;
  157. string userSql = string.Format("Select * From Sys_Users Where Number != '' Order By Id Desc", depId);
  158. var userData = await _sqlSugar.SqlQueryable<Sys_Users>(userSql).ToListAsync();
  159. //if (userData.Count <= 0) return number;
  160. string depSql = string.Format("Select * From Sys_Department Where Id = {0} ", depId);
  161. var depData = await _sqlSugar.SqlQueryable<Sys_Department>(depSql).FirstAsync();
  162. if (depData == null) return number;
  163. string numPrefix = depData.DepCode;
  164. if (string.IsNullOrEmpty(numPrefix)) return number;
  165. int numSuffix = 1;
  166. while (true)
  167. {
  168. number = numPrefix + numSuffix.ToString();
  169. var userData1 = userData.Find(it => it.Number == number); //公司验证Number
  170. if (userData1 == null) break;
  171. numSuffix++;
  172. }
  173. return number;
  174. }
  175. public async Task<Result> ChangePassword(int userId,string password)
  176. {
  177. Result result = new Result() {Code = -1,Msg="操作失败!" };
  178. if (userId < 1) {
  179. result.Msg = "请输入有效的UserId参数";
  180. return result;
  181. }
  182. if (string.IsNullOrWhiteSpace(password))
  183. {
  184. result.Msg = "请输入有效的password参数";
  185. return result;
  186. }
  187. var change = await _sqlSugar.Updateable<Sys_Users>()
  188. .SetColumns(it => it.Password == password)
  189. .Where(it => it.Id == userId)
  190. .ExecuteCommandAsync();
  191. if (change > 0)
  192. {
  193. result.Code = 0;
  194. result.Msg = "操作成功!";
  195. }
  196. return result;
  197. }
  198. }
  199. }