using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Application.Services;
using Volo.Abp.Users;
using Yi.Framework.DigitalCollectibles.Application.Contracts.Dtos.InvitationCode;
using Yi.Framework.DigitalCollectibles.Domain.Entities;
using Yi.Framework.DigitalCollectibles.Domain.Managers;
using Yi.Framework.SqlSugarCore.Abstractions;
namespace Yi.Framework.DigitalCollectibles.Application.Services;
///
/// 邀请码应用服务
///
public class InvitationCodeService : ApplicationService
{
private readonly InvitationCodeManager _invitationCodeManager;
public InvitationCodeService(InvitationCodeManager invitationCodeManager)
{
_invitationCodeManager = invitationCodeManager;
}
///
/// 查询当前登录用户的邀请码数据
///
///
[Authorize]
public async Task GetAsync()
{
var userId = CurrentUser.GetId();
var entity = await _invitationCodeManager.TryGetOrAddAsync(userId);
var output = new InvitationCodeGetOutputDto
{
IsInvited = entity.IsInvited,
PointsNumber = entity.PointsNumber,
InvitationCode = entity.InvitationCode
};
return output;
}
///
/// 当前用户填写邀请码
///
///
///
[Authorize]
[HttpPost("invitation-code/{code}")]
public async Task SetAsync([FromRoute] string code)
{
var userId = CurrentUser.GetId();
await _invitationCodeManager.SetAsync(userId, code);
}
}