LecturerController.cs 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. using Hei.Captcha;
  2. using HiTeachCE.Context;
  3. using HiTeachCE.Extension;
  4. using HiTeachCE.Helpers;
  5. using HiTeachCE.Models;
  6. using HiTeachCE.Services;
  7. using IdentityModel;
  8. using Microsoft.AspNetCore.Authorization;
  9. using Microsoft.AspNetCore.Mvc;
  10. using Microsoft.Extensions.Configuration;
  11. using Org.BouncyCastle.Ocsp;
  12. using System;
  13. using System.Collections.Generic;
  14. using System.Linq;
  15. using System.Linq.Expressions;
  16. using System.Security.Claims;
  17. using System.Text.Json;
  18. using System.Threading.Tasks;
  19. using TEAMModelOS.SDK.Context.Configuration;
  20. using TEAMModelOS.SDK.Context.Exception;
  21. using TEAMModelOS.SDK.Extension.DataResult.JsonRpcRequest;
  22. using TEAMModelOS.SDK.Extension.DataResult.JsonRpcResponse;
  23. using TEAMModelOS.SDK.Extension.JwtAuth.Models;
  24. using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
  25. using TEAMModelOS.SDK.Helper.Common.JsonHelper;
  26. using TEAMModelOS.SDK.Helper.Security.ShaHash;
  27. namespace HiTeachCE.Controllers
  28. {
  29. [Route("api/[controller]")]
  30. [ApiController]
  31. public class LecturerController : BaseController
  32. {
  33. private readonly LecturerService lecturerService;
  34. public LecturerController(LecturerService lecturer)
  35. {
  36. lecturerService = lecturer;
  37. }
  38. /// <summary>
  39. /// 获取讲师列表
  40. /// </summary>
  41. /// <param name="request"></param>
  42. /// <returns></returns>
  43. [HttpPost("list")]
  44. [Authorize(Roles = "root")]
  45. public BaseJosnRPCResponse List(PaginationJosnRPCRequest<Dictionary<string, string>> request)
  46. {
  47. // request.@params.TryAdd("PartitionKey", request.lang);
  48. JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
  49. List<Lecturer> lecturers = new List<Lecturer>();
  50. Expression<Func<Lecturer, bool>> linq = null;
  51. if (request.@params.data.TryGetValue("cellphone", out string cellphone) && !string.IsNullOrEmpty(cellphone))
  52. {
  53. linq = m => m.cellphone == cellphone;
  54. }
  55. if (request.@params.data.TryGetValue("account", out string account) && !string.IsNullOrEmpty(account))
  56. {
  57. linq = m => m.account == account;
  58. }
  59. if (request.@params.data.TryGetValue("username", out string username) && !string.IsNullOrEmpty(username))
  60. {
  61. linq = m => m.username.Contains(username);
  62. }
  63. if (request.@params.data.TryGetValue("id", out string id) && !string.IsNullOrEmpty(id))
  64. {
  65. linq = m => m.id==id;
  66. }
  67. if (linq != null)
  68. {
  69. lecturers = lecturerService.GetPageList(linq,request.@params.page);
  70. }
  71. lecturers.ForEach(x => { x.password = null; });
  72. return builder.Data(lecturers).Page(request.@params.page).build();
  73. }
  74. /// <summary>
  75. /// 更新自己的资料
  76. /// </summary>
  77. /// <param name="request"></param>
  78. /// <returns></returns>
  79. [HttpPost("updateSelf")]
  80. [Authorize(Roles = "all")]
  81. public BaseJosnRPCResponse UpdateSelf(JosnRPCRequest<Lecturer> request)
  82. {
  83. JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
  84. string unionid = GetLoginUser(JwtClaimTypes.Id);
  85. Lecturer lecturer = lecturerService.GetById(request.@params.id);
  86. bool b = false;
  87. //确保更新的是自己
  88. if (unionid.Equals(request.@params.unionid ) && unionid.Equals(lecturer.unionid))
  89. {
  90. b = UpdateLecture(request, lecturer);
  91. }
  92. return builder.Data(b).build();
  93. }
  94. /// <summary>
  95. /// 更新
  96. /// </summary>
  97. /// <param name="request">修改后的</param>
  98. /// <param name="lecturer">修改前的</param>
  99. /// <returns></returns>
  100. private bool UpdateLecture(JosnRPCRequest<Lecturer> request ,Lecturer lecturer)
  101. {
  102. bool b = false;
  103. if (lecturer != null)
  104. {
  105. if (!string.IsNullOrEmpty(request.@params.password))
  106. {
  107. request.@params.password = BCrypt.Net.BCrypt.HashPassword(request.@params.password);
  108. }
  109. else
  110. {
  111. request.@params.password = lecturer.password;
  112. }
  113. request.@params.unionid = lecturer.unionid;
  114. if (lecturer.setaccount != 0)
  115. {
  116. request.@params.account = lecturer.account;
  117. }
  118. request.@params.registerTime = lecturer.registerTime;
  119. request.@params.cellphone = lecturer.cellphone;
  120. request.@params.areaCode = lecturer.areaCode;
  121. b = lecturerService.Update(request.@params);
  122. }
  123. return b;
  124. }
  125. /// <summary>
  126. /// 更新讲师
  127. /// </summary>
  128. /// <param name="request"></param>
  129. /// <returns></returns>
  130. [HttpPost("update")]
  131. [Authorize(Roles = "root")]
  132. public BaseJosnRPCResponse Update(JosnRPCRequest<Lecturer> request)
  133. {
  134. JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
  135. Lecturer lecturer = lecturerService.GetById(request.@params.id);
  136. bool b = UpdateLecture(request, lecturer);
  137. return builder.Data(b).build();
  138. }
  139. /// <summary>
  140. /// 注册用户
  141. /// </summary>
  142. /// <param name="request"></param>
  143. /// <returns></returns>
  144. [HttpPost("register")]
  145. public BaseJosnRPCResponse Register(JosnRPCRequest<RegisterDto> request)
  146. {
  147. JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
  148. if (RedisHelper.Exists("ticket:" + request.@params.ticket))
  149. {
  150. if (request.@params.user != null)
  151. {
  152. string[] phone = RedisHelper.HVals("ticket:" + request.@params.ticket);
  153. if (phone.IsNotEmpty())
  154. {
  155. if (!request.@params.user.cellphone.Equals(phone[0]))
  156. {
  157. throw new BizException("手机号与凭证不匹配!", 2);
  158. }
  159. }
  160. else
  161. {
  162. throw new BizException("凭证无效!", 2);
  163. }
  164. Expression<Func<Lecturer, bool>> linq = null;
  165. linq = m => m.cellphone == request.@params.user.cellphone || m.account == request.@params.user.account;
  166. List<Lecturer> lecturers = lecturerService.GetList(linq);
  167. if (lecturers.IsNotEmpty())
  168. {
  169. throw new BizException("手机号或账号已经存在!", 2);
  170. }
  171. else
  172. {
  173. request.@params.user.id = Guid.NewGuid().ToString();
  174. request.@params.user.unionid = Guid.NewGuid().ToString("N");
  175. request.@params.user.areaCode = "86";
  176. request.@params.user.status = 1;
  177. request.@params.user.registerTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
  178. if (request.@params.user.password == null)
  179. {
  180. request.@params.user.password = "";
  181. }
  182. else
  183. {
  184. request.@params.user.password = BCrypt.Net.BCrypt.HashPassword(request.@params.user.password);
  185. }
  186. bool ib = lecturerService.Insert(request.@params.user);
  187. if (ib)
  188. {
  189. return builder.Data(ib).build();
  190. }
  191. else
  192. {
  193. throw new BizException("注册失败!", 2);
  194. }
  195. }
  196. }
  197. else
  198. {
  199. throw new BizException("参数错误!", 2);
  200. }
  201. }
  202. else
  203. {
  204. throw new BizException("短信验证过期!", 2);
  205. }
  206. }
  207. }
  208. }