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 GetUser(string userName) { return await _userQuery.GetUser(userName); } /// 使用当前登录用户的积分为商铺续费。 [HttpPost] public Task 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); } }