using Apimanager_backend.Dtos; using Apimanager_backend.Exceptions; using Apimanager_backend.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using StackExchange.Redis; namespace Apimanager_backend.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class AdminController : ControllerBase { private readonly IAdminService adminService; private readonly IUserService userService; public AdminController(IAdminService service,IUserService userService) { this.adminService = service; this.userService = userService; } #region 获取用户列表 [HttpGet] [Authorize(Roles = "Admin")] public async Task>>> UserList(int pageIndex,int pageSize,bool desc) { var users = await adminService.GetUsersAsync(pageIndex,pageSize,desc); var res = new ResponseBase>( code:1000, message:"Success", data:users ); return Ok(res); } #endregion #region 获取用户信息 [HttpGet] [Authorize(Roles = "Admin")] public async Task>> UserInfo(int userId) { var userInfo = await userService.GetUserAsync(userId); var res = new ResponseBase( code: 1000, message: "Success", data: userInfo ); return Ok(res); } #endregion #region 删除用户 [HttpDelete] [Authorize(Roles = "Admin")] public async Task>> DeleteUser(int userId) { await adminService.DeleteUserAsync(userId); var res = new ResponseBase( code:1000, message:"Success", data: null ); return Ok(res); } #endregion #region 添加用户 [HttpPost] [Authorize(Roles = "Admin")] public async Task>> AddUser([FromBody]CreateUserDto dto) { var userInfo = await adminService.CreateUserAsync(dto); var res = new ResponseBase( code:1000, message:"Success", data: userInfo ); return Ok(res); } #endregion #region 禁用用户 [HttpPost] [Authorize(Roles = "Admin")] public async Task>> Ban(int userId) { await adminService.BanUserAsync(userId); var res = new ResponseBase( code:1000, message:"Success", data: null ); return Ok(res); } #endregion #region 取消禁用用户 [HttpPost] [Authorize(Roles = "Admin")] public async Task>> UnBan(int userId) { await adminService.UnbanUserAsync(userId); var res = new ResponseBase( code:1000, message:"Success", data:null ); } #endregion #region 更新用户信息 [HttpPost] [Authorize(Roles = "Admin")] public async Task>> UpdateUser([FromQuery]int userId,[FromBody]AdminUpdateUserDto dto) { try { var userInfo = await adminService.UpdateUserAsync(userId, dto); var res = new ResponseBase( code: 1000, message: "Success", data: userInfo ); } catch(BaseException e) { var res = new ResponseBase( code: e.code, message:e.message, data:null ); return NotFound(res); } } #endregion } }