using Entities.Contracts; using Entities.DTO; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using TechHelper.Services; using TechHelper.Services.Beta; namespace TechHelper.Server.Controllers { [Route("api/user")] [ApiController] [Authorize] public class UserController : ControllerBase { private readonly IUserSerivces _userSerivces; private readonly IClassService _classService; private readonly UserManager _userManager; public UserController(IClassService classService, UserManager userManager, IUserSerivces userSerivces) { _classService = classService; _userManager = userManager; _userSerivces = userSerivces; } /// /// 获取指定用户信息 /// /// 用户ID /// 用户信息 [HttpGet("{id}")] public async Task GetUserById(Guid id) { var result = await _userSerivces.GetAsync(id); if (!result.Status) { return NotFound(result); } return Ok(result); } /// /// 获取所有用户列表 /// /// 查询参数 /// 用户列表 [HttpGet] public async Task GetAllUsers([FromQuery] QueryParameter query) { var result = await _userSerivces.GetAllAsync(query); if (!result.Status) { return BadRequest(result); } return Ok(result); } /// /// 添加新用户 /// /// 用户数据 /// 操作结果 [HttpPost] public async Task AddUser([FromBody] UserDto userDto) { if (!ModelState.IsValid) { return BadRequest(ModelState); } var result = await _userSerivces.AddAsync(userDto); if (!result.Status) { return BadRequest(result); } return CreatedAtAction(nameof(GetUserById), new { id = userDto.Id }, result); } /// /// 更新用户信息 /// /// 用户ID /// 用户数据 /// 操作结果 [HttpPut("{id}")] public async Task UpdateUser(Guid id, [FromBody] UserDto userDto) { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (id != userDto.Id) { return BadRequest("用户ID不匹配"); } var result = await _userSerivces.UpdateAsync(userDto); if (!result.Status) { return BadRequest(result); } return Ok(result); } /// /// 删除用户 /// /// 用户ID /// 操作结果 [HttpDelete("{id}")] public async Task DeleteUser(Guid id) { var result = await _userSerivces.DeleteAsync(id); if (!result.Status) { return BadRequest(result); } return Ok(result); } /// /// 获取学生详细信息 /// /// 用户ID /// 学生详细信息 [HttpGet("student/{userId}")] public async Task GetStudentDetailInfo(Guid userId) { var result = await _userSerivces.GetStudentDetailInfo(userId); if (!result.Status) { return NotFound(result); } return Ok(result); } /// /// 验证用户信息 /// /// 用户ID /// 验证结果 [HttpPost("verify/{userId}")] public async Task VerifyUserInformation(Guid userId) { var result = await _userSerivces.VerifyUserInformation(userId); if (!result.Status) { return BadRequest(result); } return Ok(result); } /// /// 恢复用户角色信息 /// /// 操作结果 [HttpGet("restoreUserRole")] public async Task RestoreUserRole() { var user = await _userManager.FindByEmailAsync(User.Identity.Name); if (user == null) return NotFound("用户不存在"); if (User.IsInRole("Teacher") || User.IsInRole("Student")) return Ok(new ApiResponse(true, "用户角色已正确设置")); var result = await _userSerivces.RestoreUserRoleInformation(user); if (result.Status) return Ok(result); else return Unauthorized(result); } /// /// 注册新用户 /// /// 注册数据 /// 注册结果 [HttpPost("register")] [AllowAnonymous] public async Task RegisterNewUser([FromBody] UserForRegistrationDto registrationDto) { if (!ModelState.IsValid) { return BadRequest(ModelState); } var result = await _userSerivces.RegisterNewUserAsync(registrationDto); if (!result.Status) { return BadRequest(result); } return Ok(result); } /// /// 获取指定用户信息(旧接口) /// /// 班级注册数据 /// 操作结果 [HttpPost("get")] [Obsolete("请使用 GET /api/user/{id} 接口")] public async Task GetAsync([FromBody] UserRegistrationToClassDto toClass) { return Ok(new ApiResponse(false, "此接口已弃用,请使用新的接口")); } } }