AGSSbackend/AGSS/Controllers/User/UserInfoController.cs

75 lines
2.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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));
}
}