123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- using Hei.Captcha;
- using HiTeachCE.Context;
- using HiTeachCE.Extension;
- using HiTeachCE.Helpers;
- using HiTeachCE.Models;
- using HiTeachCE.Services;
- using IdentityModel;
- using Microsoft.AspNetCore.Authorization;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.Extensions.Configuration;
- using Org.BouncyCastle.Ocsp;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Linq.Expressions;
- using System.Security.Claims;
- using System.Text.Json;
- using System.Threading.Tasks;
- using TEAMModelOS.SDK.Context.Configuration;
- using TEAMModelOS.SDK.Context.Exception;
- using TEAMModelOS.SDK.Extension.DataResult.JsonRpcRequest;
- using TEAMModelOS.SDK.Extension.DataResult.JsonRpcResponse;
- using TEAMModelOS.SDK.Extension.JwtAuth.Models;
- using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
- using TEAMModelOS.SDK.Helper.Common.JsonHelper;
- using TEAMModelOS.SDK.Helper.Security.ShaHash;
- namespace HiTeachCE.Controllers
- {
- [Route("api/[controller]")]
- [ApiController]
- public class LecturerController : BaseController
- {
- private readonly LecturerService lecturerService;
- public LecturerController(LecturerService lecturer)
- {
- lecturerService = lecturer;
- }
- /// <summary>
- /// 获取讲师列表
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("list")]
- [Authorize(Roles = "root")]
- public BaseJosnRPCResponse List(PaginationJosnRPCRequest<Dictionary<string, string>> request)
- {
- // request.@params.TryAdd("PartitionKey", request.lang);
- JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
- List<Lecturer> lecturers = new List<Lecturer>();
- Expression<Func<Lecturer, bool>> linq = null;
- if (request.@params.data.TryGetValue("cellphone", out string cellphone) && !string.IsNullOrEmpty(cellphone))
- {
- linq = m => m.cellphone == cellphone;
- }
- if (request.@params.data.TryGetValue("account", out string account) && !string.IsNullOrEmpty(account))
- {
- linq = m => m.account == account;
- }
- if (request.@params.data.TryGetValue("username", out string username) && !string.IsNullOrEmpty(username))
- {
- linq = m => m.username.Contains(username);
- }
- if (request.@params.data.TryGetValue("id", out string id) && !string.IsNullOrEmpty(id))
- {
- linq = m => m.id==id;
- }
- if (linq != null)
- {
- lecturers = lecturerService.GetPageList(linq,request.@params.page);
- }
- lecturers.ForEach(x => { x.password = null; });
- return builder.Data(lecturers).Page(request.@params.page).build();
- }
- /// <summary>
- /// 更新自己的资料
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("updateSelf")]
- [Authorize(Roles = "all")]
- public BaseJosnRPCResponse UpdateSelf(JosnRPCRequest<Lecturer> request)
- {
- JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
- string unionid = GetLoginUser(JwtClaimTypes.Id);
- Lecturer lecturer = lecturerService.GetById(request.@params.id);
- bool b = false;
- //确保更新的是自己
- if (unionid.Equals(request.@params.unionid ) && unionid.Equals(lecturer.unionid))
- {
- b = UpdateLecture(request, lecturer);
- }
- return builder.Data(b).build();
- }
- /// <summary>
- /// 更新
- /// </summary>
- /// <param name="request">修改后的</param>
- /// <param name="lecturer">修改前的</param>
- /// <returns></returns>
- private bool UpdateLecture(JosnRPCRequest<Lecturer> request ,Lecturer lecturer)
- {
- bool b = false;
- if (lecturer != null)
- {
- if (!string.IsNullOrEmpty(request.@params.password))
- {
- request.@params.password = BCrypt.Net.BCrypt.HashPassword(request.@params.password);
- }
- else
- {
- request.@params.password = lecturer.password;
- }
- request.@params.unionid = lecturer.unionid;
- if (lecturer.setaccount != 0)
- {
- request.@params.account = lecturer.account;
- }
- request.@params.registerTime = lecturer.registerTime;
- request.@params.cellphone = lecturer.cellphone;
- request.@params.areaCode = lecturer.areaCode;
- b = lecturerService.Update(request.@params);
- }
- return b;
- }
- /// <summary>
- /// 更新讲师
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("update")]
- [Authorize(Roles = "root")]
- public BaseJosnRPCResponse Update(JosnRPCRequest<Lecturer> request)
- {
- JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
- Lecturer lecturer = lecturerService.GetById(request.@params.id);
- bool b = UpdateLecture(request, lecturer);
- return builder.Data(b).build();
- }
- /// <summary>
- /// 注册用户
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("register")]
- public BaseJosnRPCResponse Register(JosnRPCRequest<RegisterDto> request)
- {
- JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
- if (RedisHelper.Exists("ticket:" + request.@params.ticket))
- {
- if (request.@params.user != null)
- {
- string[] phone = RedisHelper.HVals("ticket:" + request.@params.ticket);
- if (phone.IsNotEmpty())
- {
- if (!request.@params.user.cellphone.Equals(phone[0]))
- {
- throw new BizException("手机号与凭证不匹配!", 2);
- }
- }
- else
- {
- throw new BizException("凭证无效!", 2);
- }
- Expression<Func<Lecturer, bool>> linq = null;
- linq = m => m.cellphone == request.@params.user.cellphone || m.account == request.@params.user.account;
- List<Lecturer> lecturers = lecturerService.GetList(linq);
- if (lecturers.IsNotEmpty())
- {
- throw new BizException("手机号或账号已经存在!", 2);
- }
- else
- {
- request.@params.user.id = Guid.NewGuid().ToString();
- request.@params.user.unionid = Guid.NewGuid().ToString("N");
- request.@params.user.areaCode = "86";
- request.@params.user.status = 1;
- request.@params.user.registerTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
- if (request.@params.user.password == null)
- {
- request.@params.user.password = "";
- }
- else
- {
- request.@params.user.password = BCrypt.Net.BCrypt.HashPassword(request.@params.user.password);
- }
- bool ib = lecturerService.Insert(request.@params.user);
- if (ib)
- {
- return builder.Data(ib).build();
- }
- else
- {
- throw new BizException("注册失败!", 2);
- }
- }
- }
- else
- {
- throw new BizException("参数错误!", 2);
- }
- }
- else
- {
- throw new BizException("短信验证过期!", 2);
- }
- }
- }
- }
|