1. 新增依赖注入生命周期标记接口、基础仓储与管理员仓储实现 2. 新增管理员认证与用户服务接口,补充认证相关DTO 3. 重构实体审计字段命名,统一Created/UpdatedAt规范 4. 新增大量业务实体类与API版本枚举配置 5. 集成Autofac依赖注入、JWT自动刷新与跨域配置 6. 替换原有微信小程序与旧认证服务为后台管理系统架构 7. 完善Swagger文档配置与项目基础部署配置
206 lines
7.0 KiB
C#
206 lines
7.0 KiB
C#
using Microsoft.AspNetCore.Authorization;
|
||
using Microsoft.AspNetCore.Mvc;
|
||
using QYZH.InteractiveMagazine.IService;
|
||
using QYZH.InteractiveMagazine.IService.Dto;
|
||
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<AdminController> _logger;
|
||
|
||
public AdminController(IAdminAuthService adminAuthService, IAdminUserService adminUserService, ILogger<AdminController> logger)
|
||
{
|
||
_adminAuthService = adminAuthService;
|
||
_adminUserService = adminUserService;
|
||
_logger = logger;
|
||
}
|
||
|
||
[AllowAnonymous]
|
||
[HttpPost("login")]
|
||
public async Task<BaseResponse<AdminLoginOutput>> LoginAsync([FromBody] AdminLoginInput input)
|
||
{
|
||
var result = await _adminAuthService.LoginAsync(input);
|
||
return Success(result);
|
||
}
|
||
|
||
[HttpPost("logout")]
|
||
public async Task<BaseResponse<object>> LogoutAsync()
|
||
{
|
||
var userId = GetCurrentUserId();
|
||
if (userId == null)
|
||
{
|
||
return Fail("未获取到用户信息", 401);
|
||
}
|
||
|
||
await _adminAuthService.LogoutAsync(userId.Value);
|
||
return Success(new object(), "登出成功");
|
||
}
|
||
|
||
[HttpGet("info")]
|
||
public async Task<BaseResponse<AdminUserInfoOutput>> GetAdminInfoAsync()
|
||
{
|
||
var userId = GetCurrentUserId();
|
||
if (userId == null)
|
||
{
|
||
return BaseResponse<AdminUserInfoOutput>.Fail("未获取到用户信息", 401);
|
||
}
|
||
|
||
var result = await _adminAuthService.GetAdminInfoAsync(userId.Value);
|
||
return Success(result);
|
||
}
|
||
|
||
[HttpPost("changePassword")]
|
||
public async Task<BaseResponse<object>> 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(), "密码修改成功");
|
||
}
|
||
|
||
/// <summary>
|
||
/// 创建管理员
|
||
/// </summary>
|
||
/// <param name="input">管理员输入</param>
|
||
/// <returns>创建的管理员信息</returns>
|
||
[HttpPost("users")]
|
||
public async Task<BaseResponse<AdminUserOutput>> 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<AdminUserOutput>.Fail(ex.Message, ex.Code);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
_logger.LogError(ex, "创建管理员系统异常,参数:{Input}", input);
|
||
return BaseResponse<AdminUserOutput>.Fail("创建管理员失败,请稍后重试", 500);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 更新管理员
|
||
/// </summary>
|
||
/// <param name="id">管理员ID</param>
|
||
/// <param name="input">管理员输入</param>
|
||
/// <returns>更新后的管理员信息</returns>
|
||
[HttpPut("users/{id}")]
|
||
public async Task<BaseResponse<AdminUserOutput>> 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<AdminUserOutput>.Fail(ex.Message, ex.Code);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
_logger.LogError(ex, "更新管理员系统异常,ID:{Id},参数:{Input}", id, input);
|
||
return BaseResponse<AdminUserOutput>.Fail("更新管理员失败,请稍后重试", 500);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 删除管理员
|
||
/// </summary>
|
||
/// <param name="id">管理员ID</param>
|
||
/// <returns>操作结果</returns>
|
||
[HttpDelete("users/{id}")]
|
||
public async Task<BaseResponse<object>> DeleteUserAsync(long id)
|
||
{
|
||
try
|
||
{
|
||
await _adminUserService.DeleteAsync(id);
|
||
return Success(new object(), "删除管理员成功");
|
||
}
|
||
catch (BusinessException ex)
|
||
{
|
||
_logger.LogWarning(ex, "删除管理员业务异常: {Message}", ex.Message);
|
||
return BaseResponse<object>.Fail(ex.Message, ex.Code);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
_logger.LogError(ex, "删除管理员系统异常,ID:{Id}", id);
|
||
return BaseResponse<object>.Fail("删除管理员失败,请稍后重试", 500);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 根据ID获取管理员
|
||
/// </summary>
|
||
/// <param name="id">管理员ID</param>
|
||
/// <returns>管理员信息</returns>
|
||
[HttpGet("users/{id}")]
|
||
public async Task<BaseResponse<AdminUserOutput>> GetUserByIdAsync(long id)
|
||
{
|
||
try
|
||
{
|
||
var result = await _adminUserService.GetByIdAsync(id);
|
||
return Success(result);
|
||
}
|
||
catch (BusinessException ex)
|
||
{
|
||
_logger.LogWarning(ex, "获取管理员业务异常: {Message}", ex.Message);
|
||
return BaseResponse<AdminUserOutput>.Fail(ex.Message, ex.Code);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
_logger.LogError(ex, "获取管理员系统异常,ID:{Id}", id);
|
||
return BaseResponse<AdminUserOutput>.Fail("获取管理员信息失败,请稍后重试", 500);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 分页查询管理员列表
|
||
/// </summary>
|
||
/// <param name="input">查询条件</param>
|
||
/// <returns>分页结果</returns>
|
||
[HttpPost("users/list")]
|
||
public async Task<BaseResponse<PageListModel<AdminUserOutput>>> 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<PageListModel<AdminUserOutput>>.Fail(ex.Message, ex.Code);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
_logger.LogError(ex, "查询管理员列表系统异常,参数:{Input}", input);
|
||
return BaseResponse<PageListModel<AdminUserOutput>>.Fail("查询管理员列表失败,请稍后重试", 500);
|
||
}
|
||
}
|
||
}
|
||
|
||
public class ChangePasswordInput
|
||
{
|
||
public string OldPassword { get; set; } = string.Empty;
|
||
|
||
public string NewPassword { get; set; } = string.Empty;
|
||
}
|