mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2026-03-19 04:29:45 +08:00
♻️ 组件抽离,优化逻辑
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* @file plugins/Sqlite/modules/userGacha.ts
|
||||
* @description 用户祈愿模块
|
||||
* @since Beta v0.6.0
|
||||
* @since Beta v0.6.8
|
||||
*/
|
||||
|
||||
import showSnackbar from "@comp/func/snackbar.js";
|
||||
@@ -9,29 +9,10 @@ import TGSqlite from "@Sqlite/index.js";
|
||||
import { path } from "@tauri-apps/api";
|
||||
import { exists, mkdir, readDir } from "@tauri-apps/plugin-fs";
|
||||
|
||||
import { AppCharacterData, AppWeaponData } from "@/data/index.js";
|
||||
import TGLogger from "@/utils/TGLogger.js";
|
||||
import { getWikiBrief } from "@/utils/toolFunc.js";
|
||||
import { exportUigfData, readUigfData, verifyUigfData } from "@/utils/UIGF.js";
|
||||
|
||||
type gachaItemTypeRes =
|
||||
| ["角色", TGApp.App.Character.WikiBriefInfo]
|
||||
| ["武器", TGApp.App.Weapon.WikiBriefInfo]
|
||||
| ["未知", "未知"];
|
||||
|
||||
/**
|
||||
* @description 根据 item_id 获取角色/武器类型
|
||||
* @since Beta v0.4.7
|
||||
* @param {string} item_id - item_id
|
||||
* @return {gachaItemTypeRes}
|
||||
*/
|
||||
function getGachaItemType(item_id: string): gachaItemTypeRes {
|
||||
const findAvatar = AppCharacterData.find((i) => i.id.toString() === item_id);
|
||||
if (findAvatar !== undefined) return ["角色", findAvatar];
|
||||
const findWeapon = AppWeaponData.find((i) => i.id.toString() === item_id);
|
||||
if (findWeapon !== undefined) return ["武器", findWeapon];
|
||||
return ["未知", "未知"];
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取导入 Sql
|
||||
* @since Beta v.6.0
|
||||
@@ -44,60 +25,42 @@ function getInsertSql(uid: string, gacha: TGApp.Plugins.UIGF.GachaItem): string
|
||||
INSERT INTO GachaRecords (uid, gachaType, itemId, count, time, name, type, rank, id, uigfType, updated)
|
||||
VALUES ('${uid}', '${gacha.gacha_type}', '${gacha.item_id ?? null}', '${gacha.count ?? null}', '${gacha.time}',
|
||||
'${gacha.name}', '${gacha.item_type ?? null}', '${gacha.rank_type ?? null}', '${gacha.id}',
|
||||
'${gacha.uigf_gacha_type}', datetime('now', 'localtime')) ON CONFLICT (id)
|
||||
DO
|
||||
UPDATE
|
||||
SET uid = '${uid}',
|
||||
gachaType = '${gacha.gacha_type}',
|
||||
uigfType = '${gacha.uigf_gacha_type}',
|
||||
time = '${gacha.time}',
|
||||
itemId = '${gacha.item_id ?? null}',
|
||||
count = '${gacha.count ?? null}',
|
||||
name = '${gacha.name}',
|
||||
type = '${gacha.item_type ?? null}',
|
||||
rank = '${gacha.rank_type ?? null}',
|
||||
updated = datetime('now', 'localtime');
|
||||
'${gacha.uigf_gacha_type}', datetime('now', 'localtime'))
|
||||
ON CONFLICT (id)
|
||||
DO UPDATE
|
||||
SET uid = '${uid}',
|
||||
gachaType = '${gacha.gacha_type}',
|
||||
uigfType = '${gacha.uigf_gacha_type}',
|
||||
time = '${gacha.time}',
|
||||
itemId = '${gacha.item_id ?? null}',
|
||||
count = '${gacha.count ?? null}',
|
||||
name = '${gacha.name}',
|
||||
type = '${gacha.item_type ?? null}',
|
||||
rank = '${gacha.rank_type ?? null}',
|
||||
updated = datetime('now', 'localtime');
|
||||
`;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 转换祈愿数据,防止多语言
|
||||
* @since Beta v0.5.1
|
||||
* @since Beta v0.6.8
|
||||
* @param {TGApp.Plugins.UIGF.GachaItem} gacha - UIGF数据
|
||||
* @return {TGApp.Plugins.UIGF.GachaItem} 转换后的数据
|
||||
*/
|
||||
function transGacha(gacha: TGApp.Plugins.UIGF.GachaItem): TGApp.Plugins.UIGF.GachaItem {
|
||||
const type = getGachaItemType(gacha.item_id);
|
||||
let res = gacha;
|
||||
res.item_type = type[0];
|
||||
if (type[0] === "角色") {
|
||||
const data: TGApp.App.Character.WikiBriefInfo = type[1];
|
||||
res = {
|
||||
gacha_type: gacha.gacha_type,
|
||||
item_id: gacha.item_id,
|
||||
count: gacha.count ?? "1",
|
||||
time: gacha.time,
|
||||
name: data.name,
|
||||
item_type: "角色",
|
||||
rank_type: data.star.toString(),
|
||||
id: gacha.id,
|
||||
uigf_gacha_type: gacha.uigf_gacha_type,
|
||||
};
|
||||
} else if (type[0] === "武器") {
|
||||
const data: TGApp.App.Weapon.WikiBriefInfo = type[1];
|
||||
res = {
|
||||
gacha_type: gacha.gacha_type,
|
||||
item_id: gacha.item_id,
|
||||
count: gacha.count ?? "1",
|
||||
time: gacha.time,
|
||||
name: data.name,
|
||||
item_type: "武器",
|
||||
rank_type: data.star.toString(),
|
||||
id: gacha.id,
|
||||
uigf_gacha_type: gacha.uigf_gacha_type,
|
||||
};
|
||||
}
|
||||
return res;
|
||||
const find = getWikiBrief(gacha.item_id);
|
||||
if (!find) return gacha;
|
||||
return {
|
||||
gacha_type: gacha.gacha_type,
|
||||
item_id: gacha.item_id,
|
||||
count: gacha.count ?? "1",
|
||||
time: gacha.time,
|
||||
name: find.name,
|
||||
item_type: "element" in find ? "角色" : "武器",
|
||||
rank_type: find.star.toString(),
|
||||
id: gacha.id,
|
||||
uigf_gacha_type: gacha.uigf_gacha_type,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -273,7 +236,6 @@ const TSUserGacha = {
|
||||
getUidList,
|
||||
getGachaCheck,
|
||||
getGachaRecords,
|
||||
getGachaItemType,
|
||||
deleteGachaRecords,
|
||||
cleanGachaRecords,
|
||||
mergeUIGF,
|
||||
|
||||
Reference in New Issue
Block a user