From e906208f4a9ebce308994f0a096e8a33d1444db3 Mon Sep 17 00:00:00 2001 From: chenchun Date: Thu, 30 Oct 2025 11:19:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E9=82=80=E8=AF=B7?= =?UTF-8?q?=E7=BF=BB=E7=89=8C=E9=AA=8C=E8=AF=81=E5=8F=8A=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=96=87=E6=A1=88=E4=B8=8E=E7=95=8C=E9=9D=A2=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CardFlipManager:注入 InviteCodeManager,新增对 Invite 类型翻牌的邀请校验(未使用邀请码则抛出异常),防止未被邀请的用户使用邀请类型翻牌。 - CardFlipService:调整提示文案,统一使用“本周”前缀,并在邀请解锁提示中强调必定中奖且每次中奖最大额度翻倍。 - 前端: - CardFlipActivity.vue:注释掉翻牌失败的全局提示,调整统计文案为“本周已翻/本周剩余/本周邀请”,并在邀请弹窗文案中说明必定中奖且奖励翻倍。 - Avatar.vue:更新菜单项标签为“每日任务(限时)”和“每周邀请(限时)”。 --- .../Services/CardFlipService.cs | 6 +++--- .../Managers/CardFlipManager.cs | 13 +++++++++++++ .../components/CardFlipActivity.vue | 10 +++++----- .../layouts/components/Header/components/Avatar.vue | 4 ++-- 4 files changed, 23 insertions(+), 10 deletions(-) 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次翻牌机会,必定中奖每次奖励最大额度翻倍!