using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using MilliSim.Common.Dtos;
using MilliSim.Common.Models;
using MilliSim.Services;
namespace MilliSim.Controllers;
[ApiController]
[Route("api/users")]
[Authorize]
public class UsersController : ControllerBase
{
private readonly IUserService _userService;
public UsersController(IUserService userService)
{
_userService = userService;
}
///
/// 用户列表
///
[HttpGet]
[Authorize(Policy = "Staff")]
public async Task>> GetUsers([FromQuery] UserQueryRequest request)
{
return await _userService.GetUsersAsync(request);
}
///
/// 用户详情
///
[HttpGet("{id:long}")]
[Authorize(Policy = "Staff")]
public async Task> GetUserById(long id)
{
return await _userService.GetUserByIdAsync(id);
}
///
/// 创建用户
///
[HttpPost]
[Authorize(Policy = "Staff")]
public async Task> CreateUser([FromBody] CreateUserRequest request)
{
return await _userService.CreateUserAsync(request);
}
///
/// 更新用户
///
[HttpPost("{id:long}")]
[Authorize(Policy = "Staff")]
public async Task> UpdateUser(long id, [FromBody] UpdateUserRequest request)
{
return await _userService.UpdateUserAsync(id, request);
}
///
/// 删除用户(软删除)
///
[HttpPost("{id:long}/delete")]
[Authorize(Policy = "Admin")]
public async Task DeleteUser(long id)
{
return await _userService.DeleteUserAsync(id);
}
///
/// 重置密码
///
[HttpPost("{id:long}/reset-password")]
[Authorize(Policy = "Staff")]
public async Task ResetPassword(long id)
{
return await _userService.ResetPasswordAsync(id);
}
///
/// 切换用户状态
///
[HttpPost("{id:long}/toggle-status")]
[Authorize(Policy = "Admin")]
public async Task ToggleStatus(long id)
{
return await _userService.ToggleStatusAsync(id);
}
}