diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/CardFlipService.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/CardFlipService.cs index 45366c60..ec8d15ae 100644 --- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/CardFlipService.cs +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/CardFlipService.cs @@ -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 "继续加油!"; diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/CardFlipManager.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/CardFlipManager.cs index cbd73343..6e355c96 100644 --- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/CardFlipManager.cs +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/CardFlipManager.cs @@ -11,6 +11,7 @@ namespace Yi.Framework.AiHub.Domain.Managers; public class CardFlipManager : DomainService { private readonly ISqlSugarRepository _cardFlipTaskRepository; + private readonly InviteCodeManager _inviteCodeManager; private readonly ILogger _logger; // 翻牌规则配置 @@ -32,9 +33,11 @@ public class CardFlipManager : DomainService public CardFlipManager( ISqlSugarRepository cardFlipTaskRepository, + InviteCodeManager inviteCodeManager, ILogger 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); diff --git a/Yi.Ai.Vue3/src/components/userPersonalCenter/components/CardFlipActivity.vue b/Yi.Ai.Vue3/src/components/userPersonalCenter/components/CardFlipActivity.vue index d1ad1fc3..e94b9c1f 100644 --- a/Yi.Ai.Vue3/src/components/userPersonalCenter/components/CardFlipActivity.vue +++ b/Yi.Ai.Vue3/src/components/userPersonalCenter/components/CardFlipActivity.vue @@ -128,7 +128,7 @@ async function handleFlipCard(record: CardFlipRecord) { } } catch (error: any) { - ElMessage.error(error?.message || '翻牌失败'); + // ElMessage.error(error?.message || '翻牌失败'); // 如果请求失败,移除翻牌动画 flippingCards.value.delete(record.flipNumber); } @@ -341,7 +341,7 @@ function toggleInviteSection() { {{ taskData?.totalFlips || 0 }}/10
- 已翻 + 本周已翻
@@ -355,7 +355,7 @@ function toggleInviteSection() { {{ taskData ? 10 - taskData.totalFlips : 10 }}
- 剩余 + 本周剩余
@@ -369,7 +369,7 @@ function toggleInviteSection() { {{ taskData?.invitedCount || 0 }}
- 邀请 + 本周邀请
@@ -455,7 +455,7 @@ function toggleInviteSection() { >

- 请输入好友的邀请码,解锁最后3次翻牌机会 + 请输入好友的邀请码,可解锁最后3次翻牌机会,必定中奖每次奖励最大额度翻倍!