using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System.Security.Claims; using XiangYi.Application.DTOs.Requests; using XiangYi.Application.DTOs.Responses; using XiangYi.Application.Interfaces; namespace XiangYi.AdminApi.Controllers; /// /// 后台用户管理控制器 /// [ApiController] [Route("api/admin/users")] [Authorize] public class AdminUserController : ControllerBase { private readonly IAdminUserService _adminUserService; private readonly ILogger _logger; public AdminUserController(IAdminUserService adminUserService, ILogger logger) { _adminUserService = adminUserService; _logger = logger; } /// /// 获取用户列表 /// /// 查询请求 /// 分页用户列表 [HttpGet] public async Task>> GetUserList([FromQuery] AdminUserQueryRequest request) { var result = await _adminUserService.GetUserListAsync(request); return ApiResponse>.Success(result); } /// /// 获取用户详情 /// /// 用户ID /// 用户详情 [HttpGet("{id}")] public async Task> GetUserDetail(long id) { var result = await _adminUserService.GetUserDetailAsync(id); return ApiResponse.Success(result); } /// /// 更新用户状态 /// /// 用户ID /// 状态更新请求 /// 操作结果 [HttpPut("{id}/status")] public async Task UpdateUserStatus(long id, [FromBody] UpdateUserStatusRequest request) { var adminId = GetCurrentAdminId(); var result = await _adminUserService.UpdateUserStatusAsync(id, request.Status, adminId); return result ? ApiResponse.Success("更新成功") : ApiResponse.Error(40001, "更新失败"); } /// /// 获取用户统计数据 /// /// 统计数据 [HttpGet("statistics")] public async Task> GetUserStatistics() { var result = await _adminUserService.GetUserStatisticsAsync(); return ApiResponse.Success(result); } /// /// 创建测试用户 /// /// 创建请求 /// 创建的用户ID列表 [HttpPost("test-users")] public async Task>> CreateTestUsers([FromBody] CreateTestUsersRequest request) { if (request.Count <= 0 || request.Count > 50) { return ApiResponse>.Error(40001, "创建数量必须在1-50之间"); } var result = await _adminUserService.CreateTestUsersAsync(request.Count, request.Gender); return ApiResponse>.Success(result, $"成功创建{result.Count}个测试用户"); } /// /// 获取当前管理员ID /// private long GetCurrentAdminId() { var adminIdClaim = User.FindFirst(ClaimTypes.NameIdentifier)?.Value; return long.TryParse(adminIdClaim, out var adminId) ? adminId : 0; } /// /// 删除用户(硬删除) /// /// 用户ID /// 操作结果 [HttpDelete("{id}")] public async Task DeleteUser(long id) { var adminId = GetCurrentAdminId(); var result = await _adminUserService.DeleteUserAsync(id, adminId); return result ? ApiResponse.Success("删除成功") : ApiResponse.Error(40001, "删除失败"); } /// /// 更新用户联系次数 /// /// 用户ID /// 联系次数更新请求 /// 操作结果 [HttpPut("{id}/contact-count")] public async Task UpdateContactCount(long id, [FromBody] UpdateContactCountRequest request) { var adminId = GetCurrentAdminId(); var result = await _adminUserService.UpdateContactCountAsync(id, request.ContactCount, adminId); return result ? ApiResponse.Success("更新成功") : ApiResponse.Error(40001, "更新失败"); } } /// /// 创建测试用户请求 /// public class CreateTestUsersRequest { /// /// 创建数量(1-50) /// public int Count { get; set; } = 10; /// /// 性别:1男 2女,null则随机 /// public int? Gender { get; set; } } /// /// 更新联系次数请求 /// public class UpdateContactCountRequest { /// /// 联系次数 /// public int ContactCount { get; set; } }