feat: 新增翻牌顺序追踪并重构翻牌/邀请码逻辑到 Manager,更新前端
- 在 CardFlipStatusOutput 与前端 types 添加 FlipOrderIndex 字段以记录牌在翻牌顺序中的位置 - 在域实体 CardFlipTaskAggregateRoot 增加 FlippedOrder(Json 列)以保存用户实际翻牌顺序 - 将 CardFlipService 重构为调用 CardFlipManager 与 InviteCodeManager,移除大量内聚的业务实现与常量(职责下沉到 Manager) - 调整翻牌、使用邀请码和查询相关流程为 Manager 驱动,更新返回结构与提示文本 - 更新前端 CardFlipActivity 组件与 types,允许任意未翻的卡片被点击并显示翻牌顺序位置 - 若干文案、格式与日志细节修正
This commit is contained in:
@@ -19,6 +19,7 @@ export interface CardFlipRecord {
|
||||
isWin: boolean; // 是否中奖
|
||||
rewardAmount?: number; // 奖励金额(token数)
|
||||
flipTypeDesc?: string; // 翻牌类型描述
|
||||
flipOrderIndex: number; // 在翻牌顺序中的位置(1-10,表示第几个翻)
|
||||
}
|
||||
|
||||
// 翻牌输入
|
||||
|
||||
@@ -35,7 +35,10 @@ async function fetchTaskStatus() {
|
||||
|
||||
// 翻牌
|
||||
async function handleFlipCard(record: CardFlipRecord) {
|
||||
if (!record.isFlipped && record.flipNumber === (taskData.value?.totalFlips || 0) + 1) {
|
||||
// 检查是否可以翻牌(任何未翻过的牌都可以)
|
||||
const canFlip = !record.isFlipped && (taskData.value?.canFlip || false);
|
||||
|
||||
if (canFlip) {
|
||||
// 检查是否需要使用邀请码
|
||||
if (record.flipNumber > 8 && (taskData.value?.remainingInviteFlips || 0) > 0) {
|
||||
const usedInviteFlips = 2 - (taskData.value?.remainingInviteFlips || 2);
|
||||
@@ -195,8 +198,8 @@ function getCardClass(record: CardFlipRecord): string[] {
|
||||
classes.push('card-flipping');
|
||||
}
|
||||
|
||||
// 可点击的卡片
|
||||
if (!record.isFlipped && record.flipNumber === (taskData.value?.totalFlips || 0) + 1) {
|
||||
// 可点击的卡片(任何未翻过的牌都可以点击)
|
||||
if (!record.isFlipped && (taskData.value?.canFlip || false)) {
|
||||
classes.push('card-clickable');
|
||||
} else if (!record.isFlipped) {
|
||||
classes.push('card-locked');
|
||||
|
||||
Reference in New Issue
Block a user