UserService.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. using Long.Core.Query;
  2. using Long.DAO.Basedata;
  3. using Long.Common.Basedata;
  4. using Long.Utils.Encryptor;
  5. using Microsoft.Extensions.Configuration;
  6. using Long.DAO.System;
  7. using Long.Core.Extensions;
  8. namespace Long.Service.UserService.Basedata
  9. {
  10. /// <summary>
  11. /// 系统用户·服务
  12. /// </summary>
  13. public class UserService : IUserService
  14. {
  15. private readonly IConfiguration configuration;
  16. private readonly IUserDatabase _userDatabase = new UserDatabase();
  17. private readonly INextValueDatabase _nextValueDatabase = new NextValueDatabase();
  18. public UserService(IConfiguration configuration)
  19. {
  20. this.configuration = configuration;
  21. }
  22. /// <summary>
  23. /// 获取全部实体列表
  24. /// </summary>
  25. /// <returns></returns>
  26. public async Task<IEnumerable<User>> Get()
  27. {
  28. return await _userDatabase.GetAsync();
  29. }
  30. /// <summary>
  31. /// 通过条件获取实体列表
  32. /// </summary>
  33. /// <param name="queryParamenter"></param>
  34. /// <returns></returns>
  35. public async Task<IEnumerable<User>> Get(QueryParamenter queryParamenter)
  36. {
  37. return await _userDatabase.GetAsync(queryParamenter);
  38. }
  39. /// <summary>
  40. /// 通过 Id 获取系统用户实体
  41. /// </summary>
  42. /// <param name="id"></param>
  43. /// <returns></returns>
  44. public async Task<User> GetById(long id)
  45. {
  46. return await _userDatabase.GetFirstAsync(id);
  47. }
  48. /// <summary>
  49. /// 获取用户信息
  50. /// </summary>
  51. /// <param name="userName">用户名</param>
  52. /// <returns></returns>
  53. public async Task<User> GetByUserName(string userName)
  54. {
  55. return await _userDatabase.GetByUserNameAsync(userName);
  56. }
  57. /// <summary>
  58. /// 注册用户
  59. /// </summary>
  60. /// <param name="input"></param>
  61. /// <returns></returns>
  62. public async Task<long> Regist(RegistInput input)
  63. {
  64. string key = configuration.GetSection("EncryptorKey").Value ?? "";
  65. var user = await _userDatabase.GetUserAsync(input.UserName);
  66. if (user != null)
  67. {
  68. throw new ApplicationException("该用户已注册。");
  69. }
  70. user = new User();
  71. if (input.UserName.IsEmail())
  72. {
  73. user.Email = input.UserName;
  74. }
  75. else if (input.UserName.IsPhone())
  76. {
  77. user.Phone = input.UserName;
  78. }
  79. else
  80. {
  81. throw new ApplicationException("请输入正确的账号。");
  82. }
  83. user.Password = DESEncryptor.Encrypt(input.Password, key);
  84. user.Opened = true;
  85. user.Activited = true;
  86. user.ActivationCode = new Random(999999).Next().ToString().PadLeft('0');
  87. user.ActivationCodeOn = DateTime.Now;
  88. long id = await _userDatabase.InsertAsync(user);
  89. // 发送激活邮件
  90. var url = CreateActivetionUrl(user.PromotionCode);
  91. return id;
  92. }
  93. /// <summary>
  94. /// 更新密码
  95. /// </summary>
  96. /// <param name="id">内码</param>
  97. /// <param name="password">新密码</param>
  98. /// <returns>记录更新数</returns>
  99. public async Task<int> UpdatePassword(long id, string password)
  100. {
  101. string key = this.configuration.GetSection("EncryptorKey").Value ?? "";
  102. return await _userDatabase.UpdatePassword(id, DESEncryptor.Encrypt(password, key));
  103. }
  104. /// <summary>
  105. /// 创建激活链接
  106. /// </summary>
  107. /// <param name="code"></param>
  108. /// <returns></returns>
  109. public string CreateActivetionUrl(string code)
  110. {
  111. var str = Environment.UserDomainName;
  112. return $"https://";
  113. }
  114. }
  115. }