AGSSbackend/AGSS/Controllers/User/UserInfoController.cs

75 lines
2.6 KiB
C#
Raw Normal View History

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<IActionResult> My()
{
// _context.UserModels.Add(user);
// await _context.SaveChangesAsync();
// return Ok(new ReturnTemplate(200, "成功",user));
return Ok();
}
/// <summary>
/// 更新或创建用户信息。
/// </summary>
/// <param name="data">包含用户详细信息的UserRequest对象包括性别、生日、描述、职业名称和职业代码。</param>
/// <returns>一个IActionResult表示操作的成功或失败。如果成功则返回200状态码以及消息和用户信息。用户信息封装在ReturnTemplate中包含一个成功代码、一条消息和数据。</returns>
/// <remarks>此方法需要授权并接受POST请求。它使用从认证令牌中提取的AuthId来创建或更新数据库中的用户信息。</remarks>
[HttpPost]
[Authorize]
public async Task<IActionResult> 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));
}
/// <summary>
/// 检查当前认证用户是否为新用户。
/// </summary>
/// <returns>一个IActionResult表示操作的成功或失败。如果成功则返回200状态码以及消息和isNewUser布尔值。该布尔值封装在ReturnTemplate中包含一个成功代码、一条消息和数据。</returns>
/// <remarks>此方法需要授权并接受GET请求。它通过检查数据库中是否存在具有相同AuthId的用户来确定用户是否为新用户。</remarks>
[HttpGet]
[Authorize]
public async Task<IActionResult> IsNewUser()
{
var authId = this.User.FindFirst("sub")!.Value;
var isNewUser=await _context.UserModels.AnyAsync(a => a.AuthId == authId);
return Ok(new ReturnTemplate(200, "成功",isNewUser));
}
}