From 1d1c4f29d62ad7073715cd1f9748b75a16cbef08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=96=B9=E6=88=90?= Date: Sun, 4 Jan 2026 12:13:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E8=BF=9B=E5=BA=A6=E8=8E=B7=E5=8F=96=E4=B8=8E=E8=81=9A=E5=90=88?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E5=B9=B6=E4=B8=BA=E6=89=AB=E9=9B=B7?= =?UTF-8?q?=E6=B8=B8=E6=88=8F=E6=B7=BB=E5=8A=A0=20gameToken=20=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages-game/game/minesweeper/play.vue | 2 ++ pages-user/tasks/index.vue | 49 +++++++++++++++------------- 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/pages-game/game/minesweeper/play.vue b/pages-game/game/minesweeper/play.vue index 6b566f9..b0037f2 100644 --- a/pages-game/game/minesweeper/play.vue +++ b/pages-game/game/minesweeper/play.vue @@ -310,6 +310,7 @@ export default { isConnected: false, isMatching: false, matchId: null, + gameToken: null, myUserId: null, floatingLabels: [], showGuide: false, @@ -471,6 +472,7 @@ export default { const serverUrl = server || 'wss://game.1024tool.vip'; const serverKey = key || 'defaultkey'; nakamaManager.initClient(serverUrl, serverKey); + this.gameToken = token; const session = await nakamaManager.authenticateWithGameToken(token); this.myUserId = session.user_id; this.isConnected = true; diff --git a/pages-user/tasks/index.vue b/pages-user/tasks/index.vue index 683f984..5e75fb3 100644 --- a/pages-user/tasks/index.vue +++ b/pages-user/tasks/index.vue @@ -371,36 +371,41 @@ async function fetchData() { expandedTasks[list[0].id] = true } - // 获取用户进度 (取第一个任务的进度作为汇总) + // 获取用户进度 if (list.length > 0) { - try { - const progressRes = await getTaskProgress(list[0].id, userId) - userProgress.orderCount = progressRes.order_count || 0 - userProgress.orderAmount = progressRes.order_amount || 0 - userProgress.inviteCount = progressRes.invite_count || 0 - userProgress.firstOrder = progressRes.first_order || false - - // 初始化已领取的档位 - if (progressRes.claimed_tiers) { - userProgress.claimedTiers[list[0].id] = progressRes.claimed_tiers - } - } catch (e) { - console.error('获取进度失败:', e) - } - - // 并行获取其他任务的进度 - const otherTasks = list.slice(1) - const progressPromises = otherTasks.map(t => - getTaskProgress(t.id, userId).catch(() => null) + // 初始化汇总数据 + userProgress.orderCount = 0 + userProgress.orderAmount = 0 + userProgress.inviteCount = 0 + userProgress.firstOrder = false + userProgress.claimedTiers = {} + + // 并行获取所有任务的进度 + const progressPromises = list.map(t => + getTaskProgress(t.id, userId).catch(err => { + console.warn(`[Tasks] 获取任务 ${t.id} 进度失败:`, err) + return null + }) ) + const progressResults = await Promise.allSettled(progressPromises) progressResults.forEach((result, index) => { if (result.status === 'fulfilled' && result.value) { - const taskId = otherTasks[index].id - userProgress.claimedTiers[taskId] = result.value.claimed_tiers || [] + const p = result.value + const taskId = list[index].id + + // 聚合进度指标 (取各任务返回的最大值) + userProgress.orderCount = Math.max(userProgress.orderCount, p.order_count || 0) + userProgress.orderAmount = Math.max(userProgress.orderAmount, p.order_amount || 0) + userProgress.inviteCount = Math.max(userProgress.inviteCount, p.invite_count || 0) + if (p.first_order) userProgress.firstOrder = true + + // 记录各任务已领取的档位 + userProgress.claimedTiers[taskId] = p.claimed_tiers || [] } }) + console.log('[Tasks] 汇总后的进度数据:', userProgress) } } catch (e) { console.error('获取任务失败:', e)