fengling-member-service/src/Fengling.Member.Web/Endpoints/v1/WechatBindingEndpoints.cs

63 lines
1.5 KiB
C#

using FastEndpoints;
using MediatR;
using Microsoft.AspNetCore.Mvc;
using Fengling.Member.Application.Commands.Member;
namespace Fengling.Member.Web.Endpoints.v1;
public class BindWechatEndpoint : Endpoint<BindWechatRequest, BindWechatResponse>
{
private readonly IMediator _mediator;
public BindWechatEndpoint(IMediator mediator)
{
_mediator = mediator;
}
public override void Configure()
{
Post("/api/v1/members/{MemberId}/wechat");
Summary(s =>
{
s.Summary = "绑定微信";
s.Description = "为会员绑定微信OpenID";
});
}
public override async Task HandleAsync(BindWechatRequest req, CancellationToken ct)
{
var command = new BindWechatCommand
{
MemberId = req.MemberId,
OpenId = req.OpenId,
UnionId = req.UnionId
};
var result = await _mediator.Send(command, ct);
Response = new BindWechatResponse
{
MemberId = result.MemberId,
OpenId = result.OpenId,
UnionId = result.UnionId,
BoundAt = result.BoundAt
};
}
}
public class BindWechatRequest
{
[FromRoute]
public long MemberId { get; set; }
public string OpenId { get; set; } = string.Empty;
public string? UnionId { get; set; }
}
public class BindWechatResponse
{
public long MemberId { get; set; }
public string OpenId { get; set; } = string.Empty;
public string? UnionId { get; set; }
public DateTime BoundAt { get; set; }
}