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:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user