mirror of
https://github.com/DrizzleTime/Foxel.git
synced 2026-05-14 06:47:38 +08:00
124 lines
4.0 KiB
C#
124 lines
4.0 KiB
C#
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Foxel.Models;
|
|
using Foxel.Models.Request.User;
|
|
using Foxel.Models.Response.User;
|
|
using Foxel.Controllers;
|
|
using Foxel.Services.Management;
|
|
|
|
namespace Foxel.Api.Management;
|
|
|
|
[Authorize(Roles = "Administrator")]
|
|
[Route("api/management/user")]
|
|
public class UserManagementController(IUserManagementService userManagementService) : BaseApiController
|
|
{
|
|
[HttpGet("get_users")]
|
|
public async Task<ActionResult<PaginatedResult<UserResponse>>> GetUsers(
|
|
[FromQuery] int page = 1, [FromQuery] int pageSize = 10)
|
|
{
|
|
try
|
|
{
|
|
var users = await userManagementService.GetUsersAsync(page, pageSize);
|
|
return PaginatedSuccess(users.Data, users.TotalCount, users.Page, users.PageSize);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return PaginatedError<UserResponse>($"获取用户列表失败: {ex.Message}", 500);
|
|
}
|
|
}
|
|
|
|
[HttpGet("get_user/{id}")]
|
|
public async Task<ActionResult<BaseResult<UserResponse>>> GetUserById(int id)
|
|
{
|
|
try
|
|
{
|
|
var user = await userManagementService.GetUserByIdAsync(id);
|
|
return Success(user, "用户获取成功");
|
|
}
|
|
catch (KeyNotFoundException)
|
|
{
|
|
return Error<UserResponse>("找不到指定用户", 404);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return Error<UserResponse>($"获取用户失败: {ex.Message}", 500);
|
|
}
|
|
}
|
|
|
|
[HttpPost("create_user")]
|
|
public async Task<ActionResult<BaseResult<UserResponse>>> CreateUser([FromBody] CreateUserRequest request)
|
|
{
|
|
try
|
|
{
|
|
var user = await userManagementService.CreateUserAsync(request.UserName, request.Email, request.Password, request.Role);
|
|
return Success(user, "用户创建成功");
|
|
}
|
|
catch (ArgumentException ex)
|
|
{
|
|
return Error<UserResponse>(ex.Message);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return Error<UserResponse>($"创建用户失败: {ex.Message}", 500);
|
|
}
|
|
}
|
|
|
|
[HttpPost("update_user")]
|
|
public async Task<ActionResult<BaseResult<UserResponse>>> UpdateUser([FromBody] UpdateUserRequest request)
|
|
{
|
|
try
|
|
{
|
|
var user = await userManagementService.UpdateUserAsync(request.Id, request.UserName, request.Email, request.Role);
|
|
return Success(user, "用户更新成功");
|
|
}
|
|
catch (KeyNotFoundException)
|
|
{
|
|
return Error<UserResponse>("找不到要更新的用户", 404);
|
|
}
|
|
catch (ArgumentException ex)
|
|
{
|
|
return Error<UserResponse>(ex.Message);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return Error<UserResponse>($"更新用户失败: {ex.Message}", 500);
|
|
}
|
|
}
|
|
|
|
[HttpPost("delete_user")]
|
|
public async Task<ActionResult<BaseResult<bool>>> DeleteUser([FromBody] int id)
|
|
{
|
|
try
|
|
{
|
|
var result = await userManagementService.DeleteUserAsync(id);
|
|
return Success(result, "用户删除成功");
|
|
}
|
|
catch (KeyNotFoundException)
|
|
{
|
|
return Error<bool>("找不到要删除的用户", 404);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return Error<bool>($"删除用户失败: {ex.Message}", 500);
|
|
}
|
|
}
|
|
|
|
[HttpPost("batch_delete_users")]
|
|
public async Task<ActionResult<BaseResult<BatchDeleteResult>>> BatchDeleteUsers([FromBody] List<int> ids)
|
|
{
|
|
try
|
|
{
|
|
if (ids.Count == 0)
|
|
{
|
|
return Error<BatchDeleteResult>("未提供用户ID");
|
|
}
|
|
|
|
var result = await userManagementService.BatchDeleteUsersAsync(ids);
|
|
return Success(result, $"成功删除 {result.SuccessCount} 个用户,失败 {result.FailedCount} 个");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return Error<BatchDeleteResult>($"批量删除用户失败: {ex.Message}", 500);
|
|
}
|
|
}
|
|
} |