ql_apimanager_backend/Apimanager_backend/Controllers/AdminController.cs
2024-12-09 09:58:28 +08:00

161 lines
5.3 KiB
C#

using Apimanager_backend.Dtos;
using Apimanager_backend.Exceptions;
using Apimanager_backend.Models;
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<ActionResult<ResponseBase<List<UserInfoDto>>>> UserList(int pageIndex,int pageSize,bool desc)
{
var users = await adminService.GetUsersAsync(pageIndex,pageSize,desc);
var res = new ResponseBase<List<UserInfoDto>>(
code:1000,
message:"Success",
data:users
);
return Ok(res);
}
#endregion
#region
[HttpGet]
[Authorize(Roles = "Admin")]
public async Task<ActionResult<ResponseBase<UserInfoDto?>>> UserInfo(int userId)
{
var userInfo = await userService.GetUserAsync(userId);
var res = new ResponseBase<UserInfoDto?>(
code: 1000,
message: "Success",
data: userInfo
);
return Ok(res);
}
#endregion
#region
[HttpDelete]
[Authorize(Roles = "Admin")]
public async Task<ActionResult<ResponseBase<object?>>> DeleteUser(int userId)
{
await adminService.DeleteUserAsync(userId);
var res = new ResponseBase<object?>(
code:1000,
message:"Success",
data: null
);
return Ok(res);
}
#endregion
#region
[HttpPost]
[Authorize(Roles = "Admin")]
public async Task<ActionResult<ResponseBase<UserInfoDto?>>> AddUser([FromBody]CreateUserDto dto)
{
var userInfo = await adminService.CreateUserAsync(dto);
var res = new ResponseBase<UserInfoDto?>(
code:1000,
message:"Success",
data: userInfo
);
return Ok(res);
}
#endregion
#region
[HttpPost]
[Authorize(Roles = "Admin")]
public async Task<ActionResult<ResponseBase<object?>>> Ban(int userId)
{
await adminService.BanUserAsync(userId);
var res = new ResponseBase<object?>(
code:1000,
message:"Success",
data: null
);
return Ok(res);
}
#endregion
#region
[HttpPost]
[Authorize(Roles = "Admin")]
public async Task<ActionResult<ResponseBase<object?>>> UnBan(int userId)
{
await adminService.UnbanUserAsync(userId);
var res = new ResponseBase<object?>(
code:1000,
message:"Success",
data:null
);
return Ok(res);
}
#endregion
#region
[HttpPost]
[Authorize(Roles = "Admin")]
public async Task<ActionResult<ResponseBase<UserInfoDto?>>> UpdateUser([FromQuery]int userId,[FromBody]AdminUpdateUserDto dto)
{
try
{
var userInfo = await adminService.UpdateUserAsync(userId, dto);
var res = new ResponseBase<UserInfoDto?>(
code: 1000,
message: "Success",
data: userInfo
);
return Ok(res);
}
catch(BaseException e)
{
var res = new ResponseBase<UserInfoDto?>(
code: e.code,
message:e.message,
data:null
);
return NotFound(res);
}
}
#endregion
#region
[HttpGet]
[Authorize(Roles = "Admin")]
public async Task<ActionResult<ResponseBase<int>>> UserCount()
{
int count = await adminService.UserCountAsync();
var res = new ResponseBase<int>(
code:1000,
message:"Success",
data:count
);
return Ok(res);
}
#endregion
#region
[HttpGet]
[Authorize(Roles = "Admin")]
public async Task<ActionResult<ResponseBase<List<UserRole>>>> GetRoles()
{
var userRoles = await adminService.GetRolesAsync();
var res = new ResponseBase<List<UserRole>>(userRoles);
return Ok(res);
}
#endregion
}
}