161 lines
5.3 KiB
C#
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
|
|
}
|
|
}
|