using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using QYZH.InteractiveMagazine.IService; using QYZH.InteractiveMagazine.Models.Common; using QYZH.InteractiveMagazine.Models.Dto; using QYZH.InteractiveMagazine.Models.Enum; namespace QYZH.InteractiveMagazine.WebApi.Controllers; [Route("api/[controller]")] [ApiController] public class AdminController : BaseController { private readonly IAdminAuthService _adminAuthService; private readonly IAdminUserService _adminUserService; private readonly ILogger _logger; public AdminController(IAdminAuthService adminAuthService, IAdminUserService adminUserService, ILogger logger) { _adminAuthService = adminAuthService; _adminUserService = adminUserService; _logger = logger; } /// /// 登录 /// /// 登录输入 /// 登录结果 [AllowAnonymous] [HttpPost("login")] public async Task> LoginAsync([FromBody] AdminLoginInput input) { var result = await _adminAuthService.LoginAsync(input); return Success(result); } /// /// 登出 /// /// 登出结果 [HttpPost("logout")] public async Task> LogoutAsync() { var userId = GetCurrentUserId(); if (userId == null) { return Fail("未获取到用户信息", 401); } await _adminAuthService.LogoutAsync(userId.Value); return Success(new object(), "登出成功"); } /// /// 获取管理员信息 /// /// 管理员信息 [HttpGet("info")] public async Task> GetAdminInfoAsync() { var userId = GetCurrentUserId(); if (userId == null) { return BaseResponse.Fail(ResultCode.DENY, "未获取到用户信息"); } var result = await _adminAuthService.GetAdminInfoAsync(userId.Value); return Success(result); } /// /// 修改密码 /// /// 修改密码输入 /// 修改密码结果 [HttpPost("changePassword")] public async Task> ChangePasswordAsync([FromBody] ChangePasswordInput input) { var userId = GetCurrentUserId(); if (userId == null) { return Fail("未获取到用户信息", 401); } await _adminAuthService.ChangePasswordAsync(userId.Value, input.OldPassword, input.NewPassword); return Success(new object(), "密码修改成功"); } /// /// 创建管理员 /// /// 管理员输入 /// 创建的管理员信息 [HttpPost("users")] public async Task> CreateUserAsync([FromBody] AdminUserInput input) { try { var result = await _adminUserService.CreateAsync(input); return Success(result, "创建管理员成功"); } catch (BusinessException ex) { _logger.LogWarning(ex, "创建管理员业务异常: {Message}", ex.Message); return BaseResponse.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "创建管理员系统异常,参数:{Input}", input); return BaseResponse.Fail("创建管理员失败,请稍后重试"); } } /// /// 更新管理员 /// /// 管理员ID /// 管理员输入 /// 更新后的管理员信息 [HttpPut("users/{id}")] public async Task> UpdateUserAsync(long id, [FromBody] AdminUserInput input) { try { var result = await _adminUserService.UpdateAsync(id, input); return Success(result, "更新管理员成功"); } catch (BusinessException ex) { _logger.LogWarning(ex, "更新管理员业务异常: {Message}", ex.Message); return BaseResponse.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "更新管理员系统异常,ID:{Id},参数:{Input}", id, input); return BaseResponse.Fail("更新管理员失败,请稍后重试"); } } /// /// 删除管理员 /// /// 管理员ID /// 操作结果 [HttpDelete("users/{id}")] public async Task> DeleteUserAsync(long id) { try { await _adminUserService.DeleteAsync(id); return Success(new object(), "删除管理员成功"); } catch (BusinessException ex) { _logger.LogWarning(ex, "删除管理员业务异常: {Message}", ex.Message); return BaseResponse.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "删除管理员系统异常,ID:{Id}", id); return BaseResponse.Fail("删除管理员失败,请稍后重试"); } } /// /// 根据ID获取管理员 /// /// 管理员ID /// 管理员信息 [HttpGet("users/{id}")] public async Task> GetUserByIdAsync(long id) { try { var result = await _adminUserService.GetByIdAsync(id); return Success(result); } catch (BusinessException ex) { _logger.LogWarning(ex, "获取管理员业务异常: {Message}", ex.Message); return BaseResponse.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "获取管理员系统异常,ID:{Id}", id); return BaseResponse.Fail("获取管理员信息失败,请稍后重试"); } } /// /// 分页查询管理员列表 /// /// 查询条件 /// 分页结果 [HttpPost("users/list")] public async Task>> GetUsersListAsync([FromBody] AdminUserQueryInput input) { try { var result = await _adminUserService.GetListAsync(input); return Success(result); } catch (BusinessException ex) { _logger.LogWarning(ex, "查询管理员列表业务异常: {Message}", ex.Message); return BaseResponse>.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "查询管理员列表系统异常,参数:{Input}", input); return BaseResponse>.Fail("查询管理员列表失败,请稍后重试"); } } } public class ChangePasswordInput { public string OldPassword { get; set; } = string.Empty; public string NewPassword { get; set; } = string.Empty; }