63 lines
1.5 KiB
C#
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; }
|
|
}
|