From 0d19ec6bb6ffdaf719ee9b766c570f5902921ea5 Mon Sep 17 00:00:00 2001 From: SpecialX <47072643+wangxiner55@users.noreply.github.com> Date: Fri, 12 Sep 2025 11:31:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=8F=AD=E7=BA=A7=E5=92=8C?= =?UTF-8?q?=E5=AD=A6=E7=94=9F=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Pages/Teacher/StudentCard.razor | 7 +++ TechHelper.Client/Services/ClasssServices.cs | 31 ++++++++- .../Controllers/AccountController.cs | 63 +++++++++++++++++++ .../Controllers/ClassController.cs | 38 +++++++++++ TechHelper.Server/Program.cs | 5 +- TechHelper.Server/Services/ClassService.cs | 15 +++++ TechHelper.Server/Services/IClassService.cs | 2 +- TechHelper.Server/Services/UserServices.cs | 51 +++++++++++++++ 8 files changed, 208 insertions(+), 4 deletions(-) diff --git a/TechHelper.Client/Pages/Teacher/StudentCard.razor b/TechHelper.Client/Pages/Teacher/StudentCard.razor index fed0cd1..159f068 100644 --- a/TechHelper.Client/Pages/Teacher/StudentCard.razor +++ b/TechHelper.Client/Pages/Teacher/StudentCard.razor @@ -4,4 +4,11 @@ @code { [Parameter] public StudentDto StudentDto{ get; set; } + + + + + + + } diff --git a/TechHelper.Client/Services/ClasssServices.cs b/TechHelper.Client/Services/ClasssServices.cs index c8043c3..44c459e 100644 --- a/TechHelper.Client/Services/ClasssServices.cs +++ b/TechHelper.Client/Services/ClasssServices.cs @@ -20,7 +20,16 @@ namespace TechHelper.Client.Services public Task CreateClass(UserRegistrationToClassDto userClass) { - throw new NotImplementedException(); + try + { + return Task.FromResult(new ResponseDto { IsSuccessfulRegistration = true }); + } + catch (Exception ex) + { + // 实际应用中,这里应该加入日志记录 + Console.WriteLine($"Error in CreateClass: {ex.Message}"); + return Task.FromResult(new ResponseDto { IsSuccessfulRegistration = false, Errors = new string[] { ex.Message } }); + } } public async Task GetClassStudents() @@ -56,7 +65,25 @@ namespace TechHelper.Client.Services public StudentDto GetStudents(byte Class) { - throw new NotImplementedException(); + try + { + var result = _client.PostAsJsonAsync("class/getClassStudents", Class); + var content = result.Result.Content.ReadAsStringAsync(); + if (content.Result != null) + { + var users = JsonConvert.DeserializeObject(content.Result); + return users; + } + else + { + return new StudentDto(); + } + } + catch (Exception ex) + { + Console.WriteLine($"获取失败,{ex.Message}, InnerException: {ex.InnerException}"); + return new StudentDto(); + } } public async Task UserRegister(UserRegistrationToClassDto userRegistrationToClassDto) diff --git a/TechHelper.Server/Controllers/AccountController.cs b/TechHelper.Server/Controllers/AccountController.cs index 8f1cbf7..3750f23 100644 --- a/TechHelper.Server/Controllers/AccountController.cs +++ b/TechHelper.Server/Controllers/AccountController.cs @@ -10,6 +10,10 @@ using Entities.Contracts; namespace TechHelper.Controllers { + /// + /// 账户管理控制器 + /// 处理用户注册、登录、密码重置等认证相关操作 + /// [Route("api/account")] [ApiController] public class AccountController : ControllerBase @@ -19,6 +23,13 @@ namespace TechHelper.Controllers private IAuthenticationService _authenticationService; private readonly IEmailSender _emailSender; + /// + /// 初始化账户控制器 + /// + /// 用户管理服务 + /// 用户注册服务 + /// 邮件发送服务 + /// 认证服务 public AccountController(UserManager userManager, IUserRegistrationService userRegistrationService, IEmailSender emailSender, @@ -30,6 +41,13 @@ namespace TechHelper.Controllers _authenticationService = authenticationService; } + /// + /// 注册新用户 + /// + /// 用户注册信息数据传输对象 + /// 注册结果响应 + /// 用户注册成功 + /// 注册请求无效或验证失败 [HttpPost("register")] public async Task RegisterUsesr( [FromBody] UserForRegistrationDto userForRegistrationDto) @@ -93,6 +111,14 @@ namespace TechHelper.Controllers #endregion } + /// + /// 用户登录认证 + /// + /// 用户认证信息数据传输对象 + /// 认证结果响应 + /// 登录成功,返回认证令牌 + /// 认证失败,用户名或密码错误 + /// 请求无效或验证失败 [HttpPost("login")] public async Task Logion( [FromBody] UserForAuthenticationDto userForAuthentication) @@ -158,6 +184,11 @@ namespace TechHelper.Controllers }); } + /// + /// 生成两步验证的OTP令牌 + /// + /// 用户对象 + /// 两步验证响应 private async Task GenerateOTPFor2StepVerification(User user) { var providers = await _userManager.GetValidTwoFactorProvidersAsync(user); @@ -180,6 +211,14 @@ namespace TechHelper.Controllers }); } + /// + /// 忘记密码请求 + /// 发送密码重置令牌到用户邮箱 + /// + /// 忘记密码请求数据传输对象 + /// 操作结果 + /// 密码重置邮件发送成功 + /// 请求无效或用户不存在 [HttpPost("forgotPassword")] public async Task ForgotPassword( [FromBody] ForgotPasswordDto forgotPasswordDto) @@ -203,6 +242,13 @@ namespace TechHelper.Controllers } + /// + /// 重置用户密码 + /// + /// 密码重置数据传输对象 + /// 重置结果响应 + /// 密码重置成功 + /// 密码重置失败 [HttpPost("resetPassword")] public async Task ResetPassword( [FromBody] ResetPasswordDto resetPasswordDto) @@ -231,6 +277,15 @@ namespace TechHelper.Controllers return Ok(new ResetPasswordResponseDto { IsResetPasswordSuccessful = true}); } + /// + /// 邮箱确认验证 + /// 验证用户邮箱确认令牌 + /// + /// 用户邮箱地址 + /// 邮箱确认令牌 + /// 验证结果 + /// 邮箱确认成功 + /// 邮箱确认失败 [HttpGet("emailconfirmation")] public async Task EmailConfirmaation([FromQuery] string email, [FromQuery] string token) @@ -245,6 +300,14 @@ namespace TechHelper.Controllers } + /// + /// 两步验证确认 + /// 验证用户提供的两步验证令牌 + /// + /// 两步验证数据传输对象 + /// 验证结果响应 + /// 验证成功,返回认证令牌 + /// 验证失败 [HttpPost("TwoStepVerification")] public async Task TwoStepVerification( [FromBody] TwoFactorVerificationDto twoFactorVerificationDto) diff --git a/TechHelper.Server/Controllers/ClassController.cs b/TechHelper.Server/Controllers/ClassController.cs index 3df0e59..be9ec2d 100644 --- a/TechHelper.Server/Controllers/ClassController.cs +++ b/TechHelper.Server/Controllers/ClassController.cs @@ -9,18 +9,35 @@ using TechHelper.Services; namespace TechHelper.Server.Controllers { + /// + /// 班级管理控制器 + /// 处理班级相关的操作,如用户注册到班级、获取班级学生等 + /// [Route("api/class")] [ApiController] public class ClassController : ControllerBase { private IClassService _classService; private UserManager _userManager; + + /// + /// 初始化班级控制器 + /// + /// 班级服务 + /// 用户管理服务 public ClassController(IClassService classService, UserManager userManager) { _classService = classService; _userManager = userManager; } + /// + /// 用户注册到班级 + /// + /// 用户注册到班级的数据传输对象 + /// 操作结果 + /// 注册成功 + /// 注册失败 [HttpPost("userRegiste")] public async Task UserRegisterToClass( [FromBody] UserRegistrationToClassDto toClass) @@ -36,6 +53,13 @@ namespace TechHelper.Server.Controllers + /// + /// 获取班级学生列表 + /// 仅限教师角色访问,根据教师所在班级信息获取学生列表 + /// + /// 班级学生列表 + /// 成功获取学生列表 + /// 权限不足或班级信息缺失 [HttpPost("getClassStudents")] public async Task GetClassStudents() { @@ -84,6 +108,13 @@ namespace TechHelper.Server.Controllers } } + /// + /// 创建新班级 + /// + /// 班级数据传输对象 + /// 操作结果 + /// 班级创建成功 + /// 班级创建失败 [HttpPost("Create")] public async Task Create( [FromBody] ClassDto classDto) @@ -94,6 +125,13 @@ namespace TechHelper.Server.Controllers return Ok(); } + /// + /// 获取指定年级的所有班级列表 + /// + /// 年级编号 + /// 班级列表 + /// 成功获取班级列表 + /// 获取失败 [HttpPost("GetGradeClasses")] public async Task GetGradeClasses( [FromBody] byte classDto) diff --git a/TechHelper.Server/Program.cs b/TechHelper.Server/Program.cs index b2e64df..a31c3df 100644 --- a/TechHelper.Server/Program.cs +++ b/TechHelper.Server/Program.cs @@ -14,7 +14,10 @@ using TechHelper.Server.Services; using TechHelper.Server.Repositories; using Microsoft.OpenApi.Models; - +/// +/// TechHelper 服务器应用程序的主入口点 +/// 配置和启动 ASP.NET Core Web API 应用程序 +/// var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); // 添加 MVC 控制器服务 (用于 API) diff --git a/TechHelper.Server/Services/ClassService.cs b/TechHelper.Server/Services/ClassService.cs index 48c1f25..1b1f89c 100644 --- a/TechHelper.Server/Services/ClassService.cs +++ b/TechHelper.Server/Services/ClassService.cs @@ -143,6 +143,21 @@ namespace TechHelper.Services } } + public Task GetClassStudents(byte Grade, byte Class) + { + try + { + var result = _work.GetRepository().GetFirstOrDefault(predicate: + c => c.Grade == Grade && c.Number == Class, + include: i => i + .Include(c => c.ClassStudents) + .ThenInclude(cs => cs.Student)); + + } + catch (Exception ex) + { } + } + public async Task GetGradeClasses(byte Grade) { try diff --git a/TechHelper.Server/Services/IClassService.cs b/TechHelper.Server/Services/IClassService.cs index 533ed6f..c96309f 100644 --- a/TechHelper.Server/Services/IClassService.cs +++ b/TechHelper.Server/Services/IClassService.cs @@ -11,6 +11,6 @@ namespace TechHelper.Services public Task GetUserClassRole(Guid user); // List public Task GetClassStudents(ClassDto classDto); // Class public Task GetGradeClasses(byte Grade); // Class - + Task GetClassStudents(byte grade, byte id); } } diff --git a/TechHelper.Server/Services/UserServices.cs b/TechHelper.Server/Services/UserServices.cs index 9e8891e..4ef5e5a 100644 --- a/TechHelper.Server/Services/UserServices.cs +++ b/TechHelper.Server/Services/UserServices.cs @@ -6,6 +6,10 @@ using TechHelper.Services; namespace TechHelper.Server.Services { + /// + /// 用户服务实现类 + /// 处理用户相关的业务逻辑操作 + /// public class UserServices : IUserSerivces { @@ -13,6 +17,12 @@ namespace TechHelper.Server.Services private readonly IClassService _classService; private readonly UserManager _userManager; + /// + /// 初始化用户服务 + /// + /// 工作单元实例 + /// 班级服务实例 + /// 用户管理实例 public UserServices(IUnitOfWork unitOfWork, IClassService classService, UserManager userManager) { _unitOfWork = unitOfWork; @@ -20,31 +30,62 @@ namespace TechHelper.Server.Services _userManager = userManager; } + /// + /// 添加新用户 + /// + /// 用户实体对象 + /// 操作结果响应 public Task AddAsync(User model) { throw new NotImplementedException(); } + /// + /// 删除指定用户 + /// + /// 用户唯一标识符 + /// 操作结果响应 public Task DeleteAsync(Guid id) { throw new NotImplementedException(); } + /// + /// 获取所有用户列表 + /// + /// 查询参数对象 + /// 用户列表响应 public Task GetAllAsync(QueryParameter query) { throw new NotImplementedException(); } + /// + /// 获取指定用户信息 + /// + /// 用户唯一标识符 + /// 用户信息响应 public Task GetAsync(Guid id) { throw new NotImplementedException(); } + /// + /// 获取学生详细信息 + /// + /// 用户唯一标识符 + /// 学生详细信息响应 public Task GetStudentDetailInfo(Guid userId) { throw new NotImplementedException(); } + /// + /// 恢复用户角色信息 + /// 根据用户所在班级信息恢复用户的角色权限 + /// + /// 用户实体对象 + /// 操作结果响应 public async Task RestoreUserRoleInformation(User user) { var result = await _classService.GetUserClassRole(user.Id); @@ -64,11 +105,21 @@ namespace TechHelper.Server.Services return ApiResponse.Error(); } + /// + /// 更新用户信息 + /// + /// 用户实体对象 + /// 操作结果响应 public Task UpdateAsync(User model) { throw new NotImplementedException(); } + /// + /// 验证用户信息 + /// + /// 用户唯一标识符 + /// 验证结果响应 public Task VerifyUserInformation(Guid userId) { throw new NotImplementedException();