using Apimanager_backend.Dtos; using Apimanager_backend.Exceptions; using Apimanager_backend.Services; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Apimanager_backend.Filters; using Microsoft.AspNetCore.Authorization; using Apimanager_backend.Models; using System.Security.Claims; namespace Apimanager_backend.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class UserController : ControllerBase { private readonly IUserService userService; private readonly IUserPackageService _userPackageService; public UserController(IUserService userService,IUserPackageService userPackageService) { this.userService = userService; this._userPackageService = userPackageService; } /// /// 获取用户个人信息 /// /// [HttpGet] [Authorize(Roles = "User")] public async Task>> UserInfo() { var userId = User.Claims.First(x => x.Type == "userId").Value; var userInfo = await userService.GetUserAsync(int.Parse(userId)); var res = new ResponseBase( code: 1000, message: "Success", data: userInfo ); return Ok(res); } /// /// 重置用户密码 /// /// /// [HttpPost] public async Task>> Resetpassword([FromBody] ResetPasswordDto dto) { try { await userService.ResetPasswordAsync(dto.Email, dto.Code, dto.NewPassword); var res = new ResponseBase( code: 1000, message: "Success", data: null ); return Ok(res); } catch (BaseException e) { var res = new ResponseBase( code: e.code, message: e.message, data: null ); return StatusCode(400, res); } } [HttpPost] public async Task>> SendResetEmail([FromQuery] string email) { await userService.SendResetPasswordEmailAsync(email); var res = new ResponseBase( code: 1000, message: "Success", data: null ); return Ok(res); } [HttpPost] [Authorize(Roles = "User")] public async Task>> Update([FromBody] UpdateUserDto dto) { var userId = User.Claims.First(x => x.Type == "userId").Value; var userInfo = await userService.UpdateUserAsync(int.Parse(userId), dto); var res = new ResponseBase( code: 1000, message: "Success", data: userInfo ); return Ok(res); } //设置用户apikey [HttpPost] [Authorize(Roles = "User")] public async Task SetApiKey() { var userId = User.Claims.First(x => x.Type == "userId").Value; var key = await userService.SetUserTokenAsync(int.Parse(userId)); var res = new ResponseBase(1000, "操作成功", key); return Ok(res); } //获取已订购套餐 [HttpGet] [Authorize(Roles = "User")] public async Task GetUserPackages() { var userId = User.Claims.First(x => x.Type == "userId").Value; var list = await _userPackageService.GetUserPackagesByUserIdAsync(int.Parse(userId)); var res = new ResponseBase>(1000,"查询成功",list); return Ok(res); } } }