using FastEndpoints; using Fengling.Backend.Domain.AggregatesModel.AdminAggregate; using Fengling.Backend.Web.Application.Commands.AdminAuth; namespace Fengling.Backend.Web.Endpoints.AdminAuth; /// /// 管理员登录请求 /// public record AdminLoginRequest(string Username, string Password); /// /// 管理员登录响应 /// public record AdminLoginResponseDto(AdminId AdminId, string Username, string Token, DateTime ExpiresAt); /// /// 管理员登录端点 /// [Tags("AdminAuth")] [HttpPost("/api/admin/auth/login")] [AllowAnonymous] public class AdminLoginEndpoint(IMediator mediator) : Endpoint> { public override async Task HandleAsync(AdminLoginRequest req, CancellationToken ct) { var command = new AdminLoginCommand(req.Username, req.Password); var response = await mediator.Send(command, ct); var dto = new AdminLoginResponseDto( response.AdminId, response.Username, response.Token, response.ExpiresAt); await Send.OkAsync(dto.AsResponseData(), ct); } }