From f2fc45204f0e1495f7010af1f897f1370652fb68 Mon Sep 17 00:00:00 2001 From: BTMuli Date: Tue, 17 Feb 2026 12:43:58 +0800 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E9=A2=82=E6=84=BF=E9=A1=B5=E9=9D=A2=E6=95=B0=E6=8D=AE=E5=88=B7?= =?UTF-8?q?=E6=96=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/User/GachaB.vue | 161 ++++++++++++++++++++------------------ 1 file changed, 84 insertions(+), 77 deletions(-) diff --git a/src/pages/User/GachaB.vue b/src/pages/User/GachaB.vue index 088a98e4..f1a9532d 100644 --- a/src/pages/User/GachaB.vue +++ b/src/pages/User/GachaB.vue @@ -8,7 +8,7 @@ ("import"); @@ -118,32 +117,23 @@ const ovFpi = ref(); const authkey = ref(""); const uidCur = ref(); const tab = ref("overview"); -const selectItem = shallowRef>([]); +const uidList = shallowRef>([]); const gachaListCur = shallowRef>([]); onMounted(async () => { await TGLogger.Info("[UserGachaB][onMounted] 进入千星奇域页面"); await showLoading.start("正在加载千星奇域祈愿数据", "正在获取UID列表..."); await reloadUid(); - if (uidCur.value) { - await showLoading.update(`UID: ${uidCur.value}`); - gachaListCur.value = await TSUserGachaB.getGachaRecords(uidCur.value); - await TGLogger.Info(`[UserGachaB][onMounted] 祈愿记录数: ${gachaListCur.value.length}`); - } await showLoading.end(); - showSnackbar.success(`加载完成,共 ${gachaListCur.value.length} 条祈愿记录`); }); watch( () => uidCur.value, - async (newUid) => { - if (!newUid) return; - gachaListCur.value = await TSUserGachaB.getGachaRecords(newUid); - showSnackbar.success(`成功获取 ${gachaListCur.value.length} 条祈愿数据`); - await TGLogger.Info( - `[UserGachaB][${newUid}][watch] 成功获取 ${gachaListCur.value.length} 条祈愿数据`, - ); - }, + async () => await loadGachaBList(), +); +watch( + () => account.value, + async () => await reloadUid(), ); /** @@ -153,14 +143,24 @@ async function toGacha(): Promise { await router.push({ name: "祈愿记录" }); } -async function reloadUid(): Promise { - selectItem.value = await TSUserGachaB.getUidList(); - if (selectItem.value.includes(account.value.gameUid)) uidCur.value = account.value.gameUid; - else if (selectItem.value.length > 0) uidCur.value = selectItem.value[0]; - else if (isLogin.value) { - selectItem.value = [account.value.gameUid]; - uidCur.value = account.value.gameUid; - } else uidCur.value = undefined; +async function loadGachaBList(): Promise { + if (uidCur.value === undefined || uidCur.value === "") return; + gachaListCur.value = await TSUserGachaB.getGachaRecords(uidCur.value); + showSnackbar.success(`成功获取 ${uidCur.value} 的 ${gachaListCur.value.length} 条祈愿数据`); + await TGLogger.Info( + `[GachaB][loadGachaBList] 成功获取 ${uidCur.value} 的 ${gachaListCur.value.length} 条祈愿数据`, + ); +} + +async function reloadUid(uid?: string): Promise { + uidList.value = await TSUserGachaB.getUidList(); + if (uidList.value.length === 0) uidList.value = [account.value.gameUid]; + if (uidList.value.includes(account.value.gameUid)) { + if (uid === undefined) uidCur.value = account.value.gameUid; + } else { + uidList.value = [account.value.gameUid, ...uidList.value]; + if (uid === undefined) uidCur.value = uidList.value[0]; + } } /** @@ -169,65 +169,74 @@ async function reloadUid(): Promise { * @return {Promise} void */ async function confirmRefresh(force: boolean): Promise { - if (!isLogin.value || !cookie.value) { - showSnackbar.warn("请先登录账号"); - return; - } - await TGLogger.Info(`[UserGachaB][${account.value.gameUid}] 开始刷新千星奇域祈愿数据`); - if (uidCur.value && uidCur.value !== account.value.gameUid) { - const switchCheck = await showDialog.check( - "是否切换游戏账户", - `确认则尝试切换至 ${uidCur.value}`, - ); - if (switchCheck) { - await useUserStore().switchGameAccount(uidCur.value); - await confirmRefresh(force); + let rfAccount = account.value; + let rfCk = cookie.value; + if (!uidCur.value) { + if (!rfCk) { + showSnackbar.warn("请先登录"); + await TGLogger.Warn(`[GachaB][confirmRefresh][${rfAccount.gameUid}] 未登录`); return; } - const freshCheck = await showDialog.check( - "确定刷新?", - `用户${account.value.gameUid}与当前UID${uidCur.value}不一致`, - ); - if (!freshCheck) { - showSnackbar.cancel("已取消祈愿数据刷新"); - return; + } else { + const gcFind = await TSUserAccount.game.getAccountByGid(uidCur.value.toString()); + console.log(uidCur.value, gcFind); + if (!gcFind) { + const check = await showDialog.check( + `确定刷新?`, + `未找到 ${uidCur.value} 对应 UID,将刷新 ${rfAccount.gameUid} 数据`, + ); + if (!check) return; + } else { + const acFind = await TSUserAccount.account.getAccount(gcFind.uid); + if (!acFind) { + const check = await showDialog.check( + `确定刷新?`, + `未找到 ${uidCur.value} 对应 CK,将刷新 ${rfAccount.gameUid} 数据`, + ); + if (!check) return; + } else { + rfAccount = gcFind; + rfCk = acFind.cookie; + } } } - await showLoading.start(`正在刷新祈愿数据`, `UID:${account.value.gameUid},正在获取 authkey`); - const authkeyRes = await takumiReq.bind.authKey(cookie.value, account.value); + await TGLogger.Info(`[GachaB][${rfAccount.gameUid}] 开始刷新千星奇域祈愿数据`); + await showLoading.start(`正在刷新祈愿数据`, `UID:${rfAccount.gameUid},正在获取 authkey`); + const authkeyRes = await takumiReq.bind.authKey(rfCk!, rfAccount); if (typeof authkeyRes === "string") { authkey.value = authkeyRes; - await TGLogger.Info(`[UserGacha][${account.value.gameUid}] 成功获取 authkey`); + await TGLogger.Info(`[GachaB][${rfAccount.gameUid}] 成功获取 authkey`); } else { showSnackbar.error("获取 authkey 失败"); - await TGLogger.Error(`[UserGacha][${account.value.gameUid}] 获取 authkey 失败`); + await TGLogger.Error(`[GachaB][${rfAccount.gameUid}] 获取 authkey 失败`); await TGLogger.Error( - `[UserGachaB][${account.value.gameUid}] ${authkeyRes.retcode} ${authkeyRes.message}`, + `[GachaB][${rfAccount.gameUid}] ${authkeyRes.retcode} ${authkeyRes.message}`, ); await showLoading.end(); return; } - await refreshGachaPool("1000", "常驻颂愿", force); - await refreshGachaPool("2000", "活动颂愿", force); - // await refreshGachaPool("20011", "活动颂愿·男", force); - // await refreshGachaPool("20012", "活动颂愿·男2", force); - // await refreshGachaPool("20021", "活动颂愿·女", force); - // await refreshGachaPool("20022", "活动颂愿·女2", force); - await showLoading.end(); + await refreshGachaPool(rfAccount, "1000", "常驻颂愿", force); + await refreshGachaPool(rfAccount, "2000", "活动颂愿", force); + // await refreshGachaPool(rfAccount, "20011", "活动颂愿·男", force); + // await refreshGachaPool(rfAccount, "20012", "活动颂愿·男2", force); + // await refreshGachaPool(rfAccount, "20021", "活动颂愿·女", force); + // await refreshGachaPool(rfAccount, "20022", "活动颂愿·女2", force); await TGLogger.Info(`[UserGacha][${account.value.gameUid}] 刷新祈愿数据完成`); - showSnackbar.success("祈愿数据刷新完成,即将刷新页面"); - await new Promise((resolve) => setTimeout(resolve, 1500)); - window.location.reload(); + await reloadUid(uidCur.value); + await loadGachaBList(); + await showLoading.end(); } /** * 刷新指定祈愿池数据 - * @param {string} gachaType 祈愿池类型 - * @param {string} gachaName 祈愿池名称 - * @param {boolean} force 是否强制刷新 - * @return {Promise} void + * @param ac - 刷新账号 + * @param gachaType - 祈愿池类型 + * @param gachaName - 祈愿池名称 + * @param force - 是否强制刷新 + * @returns Promise */ async function refreshGachaPool( + ac: TGApp.Sqlite.Account.Game, gachaType: string, gachaName: string, force: boolean, @@ -237,7 +246,7 @@ async function refreshGachaPool( let page = 0; await showLoading.start(`正在刷新${gachaName}数据`, ""); if (!force) { - endId = (await TSUserGachaB.getGachaCheck(account.value.gameUid, gachaType)) ?? "0"; + endId = (await TSUserGachaB.getGachaCheck(ac.gameUid, gachaType)) ?? "0"; } while (true) { page++; @@ -245,11 +254,9 @@ async function refreshGachaPool( console.log(gachaRes); if (!Array.isArray(gachaRes)) { showSnackbar.error(`[${gachaType}][${gachaRes.retcode}] ${gachaRes.message}`); + await TGLogger.Error(`[GachaB][${ac.gameUid}][refreshGachaPool] 获取祈愿数据失败`); await TGLogger.Error( - `[UserGachaB][${account.value.gameUid}][refreshGachaPool] 获取祈愿数据失败`, - ); - await TGLogger.Error( - `[UserGachaB][${account.value.gameUid}][refreshGachaPool] ${gachaRes.retcode} ${gachaRes.message}`, + `[GachaB][${ac.gameUid}][refreshGachaPool] ${gachaRes.retcode} ${gachaRes.message}`, ); await new Promise((resolve) => setTimeout(resolve, 1000)); break; @@ -273,7 +280,7 @@ async function refreshGachaPool( }; uigfList.push(tempItem); } - await TSUserGachaB.insertGachaList(account.value.gameUid, uigfList); + await TSUserGachaB.insertGachaList(ac.gameUid, uigfList); if (!force && gachaRes.some((i) => i.id.toString() === endId.toString())) break; reqId = gachaRes[gachaRes.length - 1].id.toString(); if (force) await new Promise((resolve) => setTimeout(resolve, 1000)); @@ -289,14 +296,14 @@ async function deleteGacha(): Promise { showSnackbar.error("暂无祈愿数据"); return; } - await TGLogger.Info(`[UserGachaB][${uidCur.value}][deleteGacha] 删除祈愿数据`); + await TGLogger.Info(`[GachaB][${uidCur.value}][deleteGacha] 删除祈愿数据`); const delCheck = await showDialog.check( "确定删除祈愿数据?", `UID:${uidCur.value},共 ${gachaListCur.value.length} 条数据`, ); if (!delCheck) { showSnackbar.cancel("已取消祈愿数据删除"); - await TGLogger.Info(`[UserGachaB][${uidCur.value}][deleteGacha] 已取消祈愿数据删除`); + await TGLogger.Info(`[GachaB][${uidCur.value}][deleteGacha] 已取消祈愿数据删除`); return; } const uidList = await TSUserGachaB.getUidList(); @@ -309,13 +316,13 @@ async function deleteGacha(): Promise { } await showLoading.start("正在删除祈愿数据", `UID:${uidCur.value}`); await TSUserGachaB.deleteRecords(uidCur.value); - await showLoading.end(); - showSnackbar.success(`已成功删除 ${uidCur.value} 的祈愿数据,即将刷新页面`); await TGLogger.Info( `[UserGachaB][${uidCur.value}][deleteGacha] 成功删除 ${gachaListCur.value.length} 条祈愿数据`, ); - await new Promise((resolve) => setTimeout(resolve, 1500)); - window.location.reload(); + showSnackbar.success(`已成功删除 ${uidCur.value} 的祈愿数据,即将刷新页面`); + await reloadUid(); + await loadGachaBList(); + await showLoading.end(); } async function importUigf(): Promise {