feat: 新增邀请翻牌验证及相关文案与界面调整

- CardFlipManager:注入 InviteCodeManager,新增对 Invite 类型翻牌的邀请校验(未使用邀请码则抛出异常),防止未被邀请的用户使用邀请类型翻牌。
- CardFlipService:调整提示文案,统一使用“本周”前缀,并在邀请解锁提示中强调必定中奖且每次中奖最大额度翻倍。
- 前端:
  - CardFlipActivity.vue:注释掉翻牌失败的全局提示,调整统计文案为“本周已翻/本周剩余/本周邀请”,并在邀请弹窗文案中说明必定中奖且奖励翻倍。
  - Avatar.vue:更新菜单项标签为“每日任务(限时)”和“每周邀请(限时)”。
This commit is contained in:
chenchun
2025-10-30 11:19:22 +08:00
parent e6b991fe86
commit e906208f4a
4 changed files with 23 additions and 10 deletions

View File

@@ -241,16 +241,16 @@ public class CardFlipService : ApplicationService, ICardFlipService
if (status.RemainingFreeFlips > 0)
{
return $"还有{status.RemainingFreeFlips}次免费翻牌机会";
return $"本周您还有{status.RemainingFreeFlips}次免费翻牌机会";
}
else if (status.RemainingInviteFlips > 0)
{
if (status.TotalFlips >= 7)
{
return $"使用邀请码可解锁{status.RemainingInviteFlips}次翻牌,必中大奖!";
return $"本周使用他人邀请码可解锁{status.RemainingInviteFlips}次翻牌,必中大奖!每次中奖最大额度将翻倍!";
}
return $"使用邀请码可解锁{status.RemainingInviteFlips}次翻牌";
return $"本周使用他人邀请码可解锁{status.RemainingInviteFlips}次翻牌,必中大奖!每次中奖最大额度将翻倍!";
}
return "继续加油!";

View File

@@ -11,6 +11,7 @@ namespace Yi.Framework.AiHub.Domain.Managers;
public class CardFlipManager : DomainService
{
private readonly ISqlSugarRepository<CardFlipTaskAggregateRoot> _cardFlipTaskRepository;
private readonly InviteCodeManager _inviteCodeManager;
private readonly ILogger<CardFlipManager> _logger;
// 翻牌规则配置
@@ -32,9 +33,11 @@ public class CardFlipManager : DomainService
public CardFlipManager(
ISqlSugarRepository<CardFlipTaskAggregateRoot> cardFlipTaskRepository,
InviteCodeManager inviteCodeManager,
ILogger<CardFlipManager> logger)
{
_cardFlipTaskRepository = cardFlipTaskRepository;
_inviteCodeManager = inviteCodeManager;
_logger = logger;
}
@@ -107,6 +110,16 @@ public class CardFlipManager : DomainService
throw new UserFriendlyException(GetFlipTypeErrorMessage(flipType));
}
// 如果是邀请类型翻牌,必须验证用户已使用过邀请码
if (flipType == FlipType.Invite)
{
var isInvited = await _inviteCodeManager.IsUserInvitedAsync(userId);
if (!isInvited)
{
throw new UserFriendlyException("需要使用他人邀请码才能解锁更多翻牌次数");
}
}
// 计算翻牌结果(基于当前是第几次翻牌,而不是卡片序号)
var flipCount = task.TotalFlips + 1; // 当前这次翻牌是第几次
var result = CalculateFlipResult(flipCount);