检测数据

This commit is contained in:
BTMuli
2026-02-08 13:54:48 +08:00
parent 1f49ddea0c
commit a472f2577c
4 changed files with 56 additions and 3 deletions

View File

@@ -1,3 +1,4 @@
<!-- 应用侧边栏 TODO:样式适配 -->
<template>
<v-navigation-drawer :permanent="true" :rail="rail" class="tsb-box">
<v-list :nav="true" class="side-list" density="compact">
@@ -763,11 +764,13 @@ async function tryLaunchGame(): Promise<void> {
</script>
<style lang="css" scoped>
.tsb-box {
position: relative;
background: var(--app-side-bg);
color: var(--app-side-content);
}
.side-list {
position: relative;
height: 100%;
font-family: var(--font-title);
}

View File

@@ -699,7 +699,10 @@ async function deleteGacha(): Promise<void> {
async function checkData(): Promise<void> {
let cnt = 0;
let fail = 0;
await showLoading.start("正在检测数据", `UID:${uidCur.value},共${gachaListCur.value.length}`);
await showLoading.start(
"正在检测数据",
`UID:${uidCur.value},共${gachaListCur.value.length}条祈愿数据`,
);
for (const data of gachaListCur.value) {
if (data.itemId === "") {
// TODO: 如果有名字重复的需要注意

View File

@@ -105,6 +105,8 @@ import { storeToRefs } from "pinia";
import { onMounted, ref, shallowRef, watch } from "vue";
import { useRouter } from "vue-router";
import { AppGachaBData } from "@/data/index.js";
const router = useRouter();
const { isLogin } = storeToRefs(useAppStore());
const { account, cookie } = storeToRefs(useUserStore());
@@ -345,8 +347,33 @@ async function exportUigf(): Promise<void> {
}
async function checkData(): Promise<void> {
// TODO
showSnackbar.warn("暂未支持");
let cnt = 0;
let fail = 0;
await showLoading.start(
"正在检测数据",
`UID:${uidCur.value},共${gachaListCur.value.length}条颂愿数据`,
);
for (const data of gachaListCur.value) {
const find = AppGachaBData.find((i) => i.id === data.itemId);
if (!find) {
await showLoading.update(`未找到 ${data.itemId} 对应元数据,跳过`);
fail++;
continue;
}
if (data.name !== find.name) {
await showLoading.update(`${data.name}->${find.name}`);
await TSUserGachaB.updateNt(data, find);
cnt++;
}
}
await showLoading.end();
if (cnt > 0 || fail > 0) {
showSnackbar.success(`成功补充遗漏数据${cnt}条,失败${fail}条,即将刷新`);
await new Promise<void>((resolve) => setTimeout(resolve, 1500));
window.location.reload();
} else {
showSnackbar.success(`成功检测${gachaListCur.value.length}条数据,无需更新`);
}
}
</script>
<style lang="scss" scoped>

View File

@@ -192,6 +192,25 @@ async function deleteRecords(uid: string): Promise<void> {
await db.execute("DELETE FROM GachaBRecords WHERE uid = ?;", [uid]);
}
/**
* 更新单条数据名称&类型
* @since Beta v0.9.5
* @param raw - 原始数据
* @param data - 对应数据
* @returns 无返回值
*/
async function updateNt(
raw: TGApp.Sqlite.Gacha.GachaB,
data: TGApp.App.Gacha.GachaBMeta,
): Promise<void> {
const db = await TGSqlite.getDB();
await db.execute("UPDATE GachaBRecords SET name = $1,type = $2 WHERE id = $3;", [
data.name,
data.type,
raw.id,
]);
}
const TSUserGachaB = {
getUidList,
getGachaCheck,
@@ -199,6 +218,7 @@ const TSUserGachaB = {
insertGachaList,
deleteRecords,
mergeUIGF4,
updateNt,
};
export default TSUserGachaB;