46 lines
1.4 KiB
C#
46 lines
1.4 KiB
C#
using Asp.Versioning;
|
|
using MAX.Framework.Security;
|
|
using MediatR;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Store.Users.Commands;
|
|
using Store.Users.Contracts;
|
|
using Store.Users.Contracts.Dtos;
|
|
using Store.Users.Dtos;
|
|
|
|
namespace Store.Users.Controllers;
|
|
|
|
[ApiController]
|
|
[ApiVersionNeutral]
|
|
[Route("user/[action]")]
|
|
public class UserController : ControllerBase
|
|
{
|
|
private readonly IUserQueryService _userQuery;
|
|
private readonly IMediator _mediator;
|
|
private readonly ICurrentUser _currentUser;
|
|
|
|
public UserController(IUserQueryService userQuery, IMediator mediator, ICurrentUser currentUser)
|
|
{
|
|
_userQuery = userQuery;
|
|
_mediator = mediator;
|
|
_currentUser = currentUser;
|
|
}
|
|
|
|
[HttpGet]
|
|
public async Task<UserInfo> GetUser(string userName)
|
|
{
|
|
return await _userQuery.GetUser(userName);
|
|
}
|
|
|
|
/// <summary>使用当前登录用户的积分为商铺续费。</summary>
|
|
[HttpPost]
|
|
public Task<ShopRenewResponse> ShopRenew([FromBody] ShopRenewRequest request, CancellationToken cancellationToken)
|
|
{
|
|
if (!_currentUser.IsAuthenticated || string.IsNullOrWhiteSpace(_currentUser.UserName))
|
|
throw new UnauthorizedAccessException();
|
|
|
|
return _mediator.Send(new ShopRenewCommand(
|
|
_currentUser.UserName, request.ShopId, request.RenewDuration, request.Remark), cancellationToken);
|
|
}
|
|
}
|