From 4bd2fc357d9049aeeb41efa23173fffa61a49acc Mon Sep 17 00:00:00 2001 From: ccnetcore Date: Fri, 14 Nov 2025 23:53:29 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=82=80=E8=AF=B7=E7=A0=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4=EF=BC=8C=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=8F=8C=E6=96=B9=E5=A1=AB=E5=86=99/=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E9=82=80=E8=AF=B7=E7=A0=81=E7=BB=9F=E8=AE=A1=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=B7=B2=E8=A2=AB=E9=82=80=E8=AF=B7=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dtos/CardFlip/CardFlipStatusOutput.cs | 12 ++-- .../Services/CardFlipService.cs | 16 +++--- .../Entities/InviteCodeAggregateRoot.cs | 17 +----- .../Managers/InviteCodeManager.cs | 56 ++++++------------- Yi.Ai.Vue3/.eslintrc-auto-import.json | 2 - 5 files changed, 32 insertions(+), 71 deletions(-) diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application.Contracts/Dtos/CardFlip/CardFlipStatusOutput.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application.Contracts/Dtos/CardFlip/CardFlipStatusOutput.cs index 3594dbb8..082c20f9 100644 --- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application.Contracts/Dtos/CardFlip/CardFlipStatusOutput.cs +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application.Contracts/Dtos/CardFlip/CardFlipStatusOutput.cs @@ -39,12 +39,7 @@ public class CardFlipStatusOutput /// 本周邀请人数 /// public int InvitedCount { get; set; } - - /// - /// 是否已被邀请(被邀请后不可再提供邀请码) - /// - public bool IsInvited { get; set; } - + /// /// 翻牌记录 /// @@ -54,6 +49,11 @@ public class CardFlipStatusOutput /// 下次可翻牌提示 /// public string? NextFlipTip { get; set; } + + /// + /// 当前用户是否已经填写过邀请码 + /// + public bool IsFilledInviteCode { get; set; } } /// 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 4adc8dfc..feefd4ba 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 @@ -51,9 +51,8 @@ public class CardFlipService : ApplicationService, ICardFlipService // 统计本周邀请人数 var invitedCount = await _inviteCodeManager.GetWeeklyInvitationCountAsync(userId, weekStart); - // 检查用户是否已被邀请 - var isInvited = await _inviteCodeManager.IsUserInvitedAsync(userId); - + //当前用户是否已填写过邀请码 + var isFilledInviteCode = await _inviteCodeManager.IsFilledInviteCodeAsync(userId); var output = new CardFlipStatusOutput { TotalFlips = task?.TotalFlips ?? 0, @@ -63,8 +62,8 @@ public class CardFlipService : ApplicationService, ICardFlipService CanFlip = _cardFlipManager.CanFlipCard(task), MyInviteCode = inviteCode?.Code, InvitedCount = invitedCount, - IsInvited = isInvited, - FlipRecords = BuildFlipRecords(task) + FlipRecords = BuildFlipRecords(task), + IsFilledInviteCode = isFilledInviteCode }; // 生成提示信息 @@ -87,7 +86,7 @@ public class CardFlipService : ApplicationService, ICardFlipService // 如果中奖,发放奖励 if (result.IsWin) { - await GrantRewardAsync(userId, result.RewardAmount, $"翻牌活动第{input.FlipNumber}次中奖"); + await GrantRewardAsync(userId, result.RewardAmount, $"翻牌活动-序号{input.FlipNumber}中奖"); } // 构建输出 @@ -147,7 +146,6 @@ public class CardFlipService : ApplicationService, ICardFlipService { MyInviteCode = inviteCode?.Code, InvitedCount = invitedCount, - IsInvited = inviteCode?.IsUserInvited ?? false, InvitationHistory = invitationHistory.Select(x => new InvitationHistoryItem { InvitedUserName = x.InvitedUserName, @@ -237,10 +235,10 @@ public class CardFlipService : ApplicationService, ICardFlipService { 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/Entities/InviteCodeAggregateRoot.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Entities/InviteCodeAggregateRoot.cs index 44346b23..bcd310af 100644 --- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Entities/InviteCodeAggregateRoot.cs +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Entities/InviteCodeAggregateRoot.cs @@ -19,7 +19,6 @@ public class InviteCodeAggregateRoot : FullAuditedAggregateRoot { UserId = userId; Code = code; - IsUserInvited = false; UsedCount = 0; } @@ -33,12 +32,7 @@ public class InviteCodeAggregateRoot : FullAuditedAggregateRoot /// [SugarColumn(Length = 50)] public string Code { get; set; } = string.Empty; - - /// - /// 邀请码拥有者是否已被他人邀请(被邀请后不可再提供邀请码) - /// - public bool IsUserInvited { get; set; } - + /// /// 被使用次数(统计用,一个邀请码可以被多人使用) /// @@ -49,12 +43,5 @@ public class InviteCodeAggregateRoot : FullAuditedAggregateRoot /// [SugarColumn(Length = 500, IsNullable = true)] public string? Remark { get; set; } - - /// - /// 标记用户已被邀请 - /// - public void MarkUserAsInvited() - { - IsUserInvited = true; - } + } diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/InviteCodeManager.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/InviteCodeManager.cs index 95057111..9fae5e81 100644 --- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/InviteCodeManager.cs +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/InviteCodeManager.cs @@ -63,14 +63,19 @@ public class InviteCodeManager : DomainService } /// - /// 统计用户本周邀请人数(别人填写我的邀请码的次数) + /// 统计用户本周邀请人数(别人填写我的邀请码的次数/或者我填写别人邀请码) /// public async Task GetWeeklyInvitationCountAsync(Guid userId, DateTime weekStart) { - return await _invitationRecordRepository._DbQueryable + var inviterCount= await _invitationRecordRepository._DbQueryable .Where(x => x.InviterId == userId) .Where(x => x.InvitationTime >= weekStart) .CountAsync(); + var invitedUserIdCount= await _invitationRecordRepository._DbQueryable + .Where(x => x.InvitedUserId == userId) + .Where(x => x.InvitationTime >= weekStart) + .CountAsync(); + return inviterCount + invitedUserIdCount; } /// @@ -118,45 +123,19 @@ public class InviteCodeManager : DomainService { throw new UserFriendlyException("不能使用自己的邀请码"); } - - // 验证邀请码拥有者是否已被邀请 - if (inviteCodeEntity.IsUserInvited) - { - throw new UserFriendlyException("该用户已被邀请,邀请码无效"); - } - + // 检查当前用户是否已经填写过别人的邀请码(一辈子只能填写一次) - var hasUsedOthersCode = await _invitationRecordRepository._DbQueryable - .Where(x => x.InvitedUserId == userId) - .AnyAsync(); + var hasUsedOthersCode = await IsFilledInviteCodeAsync(userId); if (hasUsedOthersCode) { throw new UserFriendlyException("您已经填写过别人的邀请码了,每个账号只能填写一次"); } - - // 检查当前用户的邀请码信息 - var myInviteCode = await _inviteCodeRepository._DbQueryable - .Where(x => x.UserId == userId) - .FirstAsync(); - + // 增加邀请码被使用次数 inviteCodeEntity.UsedCount++; await _inviteCodeRepository.UpdateAsync(inviteCodeEntity); - - // 标记当前用户已被邀请(一辈子只能填写一次) - if (myInviteCode == null) - { - myInviteCode = new InviteCodeAggregateRoot(userId, GenerateUniqueInviteCode()); - myInviteCode.MarkUserAsInvited(); - await _inviteCodeRepository.InsertAsync(myInviteCode); - } - else if (!myInviteCode.IsUserInvited) - { - myInviteCode.MarkUserAsInvited(); - await _inviteCodeRepository.UpdateAsync(myInviteCode); - } - + // 创建邀请记录(双方都会因为这条记录增加一次翻牌机会) var invitationRecord = new InvitationRecordAggregateRoot( inviteCodeEntity.UserId, @@ -170,15 +149,14 @@ public class InviteCodeManager : DomainService } /// - /// 检查用户是否已被邀请 + /// 检查用户是否已填写过邀请码 /// - public async Task IsUserInvitedAsync(Guid userId) + public async Task IsFilledInviteCodeAsync(Guid userId) { - var inviteCode = await _inviteCodeRepository._DbQueryable - .Where(x => x.UserId == userId) - .FirstAsync(); - - return inviteCode?.IsUserInvited ?? false; + // 检查当前用户是否已经填写过别人的邀请码(一辈子只能填写一次) + return await _invitationRecordRepository._DbQueryable + .Where(x => x.InvitedUserId == userId) + .AnyAsync(); } /// diff --git a/Yi.Ai.Vue3/.eslintrc-auto-import.json b/Yi.Ai.Vue3/.eslintrc-auto-import.json index 313e6711..af1083b7 100644 --- a/Yi.Ai.Vue3/.eslintrc-auto-import.json +++ b/Yi.Ai.Vue3/.eslintrc-auto-import.json @@ -5,8 +5,6 @@ "ComputedRef": true, "DirectiveBinding": true, "EffectScope": true, - "ElMessage": true, - "ElMessageBox": true, "ExtractDefaultPropTypes": true, "ExtractPropTypes": true, "ExtractPublicPropTypes": true,