feat(bp): /battle_pass/buy — crystal-cost + retroactive premium grants

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
gamer147
2026-05-26 23:36:18 -04:00
parent 0ceab721e9
commit 2cb8c271a8
9 changed files with 422 additions and 1 deletions

View File

@@ -38,4 +38,35 @@ public class BattlePassController : SVSimController
if (list is null) return Ok(new { });
return Ok(list);
}
[HttpPost("buy")]
public async Task<IActionResult> Buy(BattlePassBuyRequest request, CancellationToken ct)
{
if (!TryGetViewerId(out long viewerId)) return Unauthorized();
var outcome = await _battlePass.BuyPremiumAsync(viewerId, request.SeasonId, request.Id, ct);
var response = new BattlePassBuyResponse
{
ResultCode = outcome.ResultCode,
AchievedInfo = new BattlePassAchievedInfoDto
{
BattlePassRewardList = outcome.AchievedRewards
.Select(g => new BattlePassReceivedRewardDto
{
RewardType = g.RewardType,
RewardDetailId = g.RewardId,
RewardNumber = g.RewardNum,
}).ToList(),
},
RewardList = outcome.PostStateTotals
.Select(g => new BattlePassRewardListEntryDto
{
RewardType = g.RewardType,
RewardId = g.RewardId,
RewardNum = g.RewardNum,
}).ToList(),
};
return Ok(response);
}
}