using AGSS.Models; using AGSS.Models.DTOs; using AGSS.Models.Entities; using AGSS.Models.Template; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace AGSS.Controllers.User; [ApiController] [Route("api/[controller]/[action]")] public class UserInfoController : ControllerBase { private readonly DBContext _context; public UserInfoController(DBContext context) { _context = context; } [HttpGet] [Authorize] public async Task My() { // _context.UserModels.Add(user); // await _context.SaveChangesAsync(); // return Ok(new ReturnTemplate(200, "成功",user)); return Ok(); } /// /// 更新或创建用户信息。 /// /// 包含用户详细信息的UserRequest对象,包括性别、生日、描述、职业名称和职业代码。 /// 一个IActionResult,表示操作的成功或失败。如果成功,则返回200状态码以及消息和用户信息。用户信息封装在ReturnTemplate中,包含一个成功代码、一条消息和数据。 /// 此方法需要授权,并接受POST请求。它使用从认证令牌中提取的AuthId来创建或更新数据库中的用户信息。 [HttpPost] [Authorize] public async Task NextInfo([FromBody]UserRequest data) { var authId = this.User.FindFirst("sub")!.Value; UserModel user = new UserModel { AuthId = authId, Sex = data.Sex, Birthday = data.Birthday, Description = data.Description, JobName = data.JobName, JobCode = data.JobCode }; _context.UserModels.Add(user); await _context.SaveChangesAsync(); return Ok(new ReturnTemplate(200, "成功",user)); } /// /// 检查当前认证用户是否为新用户。 /// /// 一个IActionResult,表示操作的成功或失败。如果成功,则返回200状态码以及消息和isNewUser布尔值。该布尔值封装在ReturnTemplate中,包含一个成功代码、一条消息和数据。 /// 此方法需要授权,并接受GET请求。它通过检查数据库中是否存在具有相同AuthId的用户来确定用户是否为新用户。 [HttpGet] [Authorize] public async Task IsNewUser() { var authId = this.User.FindFirst("sub")!.Value; var isNewUser=await _context.UserModels.AnyAsync(a => a.AuthId == authId); return Ok(new ReturnTemplate(200, "成功",isNewUser)); } }