mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-12 09:18:14 +08:00
🎨 feat(sqlite): 添加 GameAccount 表用于存储游戏账号数据
This commit is contained in:
@@ -450,7 +450,12 @@ async function inputCookie () {
|
|||||||
|
|
||||||
// 获取 Cookie
|
// 获取 Cookie
|
||||||
async function readCookie () {
|
async function readCookie () {
|
||||||
const cookie = JSON.parse(await TGSqlite.getCookie());
|
const getCookie = await TGSqlite.getDataByKey("AppData", "key", "cookie") as Array<{
|
||||||
|
key: string;
|
||||||
|
value: string;
|
||||||
|
updated: string;
|
||||||
|
}>;
|
||||||
|
const cookie = JSON.parse(getCookie[0].value);
|
||||||
if (cookie) {
|
if (cookie) {
|
||||||
confirmShow.value = false;
|
confirmShow.value = false;
|
||||||
let cookieStr = "";
|
let cookieStr = "";
|
||||||
|
|||||||
@@ -46,7 +46,12 @@ export interface tokenRes {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
cookie.value = JSON.parse(await TGSqlite.getCookie()) as BTMuli.User.Base.Cookie;
|
const getCookie = await TGSqlite.getDataByKey("AppData", "key", "cookie") as Array<{
|
||||||
|
key: string;
|
||||||
|
value: string;
|
||||||
|
updated: string;
|
||||||
|
}>;
|
||||||
|
cookie.value = JSON.parse(getCookie[0].value) as BTMuli.User.Base.Cookie;
|
||||||
});
|
});
|
||||||
|
|
||||||
// 根据获取到的 cookie.login_ticket 获取 stoken 和 ltoken
|
// 根据获取到的 cookie.login_ticket 获取 stoken 和 ltoken
|
||||||
@@ -80,7 +85,10 @@ async function saveToken () {
|
|||||||
// 验证 stoken 的有效性
|
// 验证 stoken 的有效性
|
||||||
async function vertifyStoken () {
|
async function vertifyStoken () {
|
||||||
// 获取 stoken
|
// 获取 stoken
|
||||||
const stoken = await TGSqlite.getAppDataItem("stoken");
|
const stoken = (await TGSqlite.getDataByKey("AppData", "key", "stoken") as unknown as Array<{
|
||||||
|
key: string;
|
||||||
|
value: string;
|
||||||
|
}>)[0].value as string;
|
||||||
console.log("stoken", stoken);
|
console.log("stoken", stoken);
|
||||||
const vertifyRes = await TGRequest.User.vetifyStoken(cookie.value, stoken);
|
const vertifyRes = await TGRequest.User.vetifyStoken(cookie.value, stoken);
|
||||||
console.log(vertifyRes);
|
console.log(vertifyRes);
|
||||||
@@ -88,7 +96,10 @@ async function vertifyStoken () {
|
|||||||
|
|
||||||
// 获取 ltoken
|
// 获取 ltoken
|
||||||
async function getLToken () {
|
async function getLToken () {
|
||||||
const stoken = await TGSqlite.getAppDataItem("stoken");
|
const stoken = (await TGSqlite.getDataByKey("AppData", "key", "stoken") as unknown as Array<{
|
||||||
|
key: string;
|
||||||
|
value: string;
|
||||||
|
}>)[0].value as string;
|
||||||
console.log("stoken", stoken);
|
console.log("stoken", stoken);
|
||||||
const tokenRes = await TGRequest.User.getLToken(cookie.value, stoken);
|
const tokenRes = await TGRequest.User.getLToken(cookie.value, stoken);
|
||||||
console.log(tokenRes);
|
console.log(tokenRes);
|
||||||
@@ -96,7 +107,10 @@ async function getLToken () {
|
|||||||
|
|
||||||
// 获取 cookieToken, done, 但是登录失效
|
// 获取 cookieToken, done, 但是登录失效
|
||||||
async function getCookieToken () {
|
async function getCookieToken () {
|
||||||
const stoken = await TGSqlite.getAppDataItem("stoken");
|
const stoken = (await TGSqlite.getDataByKey("AppData", "key", "stoken") as unknown as Array<{
|
||||||
|
key: string;
|
||||||
|
value: string;
|
||||||
|
}>)[0].value as string;
|
||||||
console.log("stoken", stoken);
|
console.log("stoken", stoken);
|
||||||
const cookieRes = await TGRequest.User.byStoken.getCookieToken(cookie.value, stoken);
|
const cookieRes = await TGRequest.User.byStoken.getCookieToken(cookie.value, stoken);
|
||||||
console.log(cookieRes);
|
console.log(cookieRes);
|
||||||
@@ -108,19 +122,50 @@ async function getUserGameCard () {
|
|||||||
console.log(gameCard);
|
console.log(gameCard);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取绑定角色 done,但是登录失效
|
// 通过 stoken 获取绑定角色,但是登录失效
|
||||||
async function getBindRole () {
|
async function getBindRole () {
|
||||||
const ck = TGUtils.Tools.cookieToString(cookie.value);
|
const ck = TGUtils.Tools.cookieToString(cookie.value);
|
||||||
const stoken = await TGSqlite.getAppDataItem("stoken");
|
const stoken = (await TGSqlite.getDataByKey("AppData", "key", "stoken") as unknown as Array<{
|
||||||
|
key: string;
|
||||||
|
value: string;
|
||||||
|
}>)[0].value as string;
|
||||||
const bindRole = await TGRequest.User.byStoken.getAccounts(ck, stoken);
|
const bindRole = await TGRequest.User.byStoken.getAccounts(ck, stoken);
|
||||||
console.log(bindRole);
|
console.log(bindRole);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取绑定角色 v2, done,但是登录失效
|
// 通过 cookie 获取绑定角色
|
||||||
async function getBindRoleV2 () {
|
async function getBindRoleV2 () {
|
||||||
const ck = TGUtils.Tools.cookieToString(cookie.value);
|
const ck = TGUtils.Tools.cookieToString(cookie.value);
|
||||||
const bindRole = await TGRequest.User.byCookie.getAccounts(ck);
|
const bindRole = await TGRequest.User.byCookie.getAccounts(ck);
|
||||||
console.log(bindRole);
|
console.log(bindRole);
|
||||||
|
// 如果是数组,说明数据获取成功
|
||||||
|
if (Array.isArray(bindRole)) {
|
||||||
|
bindRole.map(async (role: BTMuli.User.Game.Account) => {
|
||||||
|
const sql = `
|
||||||
|
INSERT INTO GameAccount (gameBiz, gameUid, isChosen, isOfficial, level, nickname, region, regionName, updated)
|
||||||
|
Values ('${role.game_biz}', '${role.game_uid}', ${role.is_chosen ? 1 : 0}, ${role.is_official ? 1 : 0}, '${role.level}', '${role.nickname}', '${role.region}', '${role.region_name}', datetime('now', 'localtime')
|
||||||
|
ON CONFILCT (gameBiz, gameUid) DO UPDATE SET
|
||||||
|
isChosen = ${role.is_chosen ? 1 : 0},
|
||||||
|
isOfficial = ${role.is_official ? 1 : 0},
|
||||||
|
level = '${role.level}',
|
||||||
|
nickname = '${role.nickname}',
|
||||||
|
region = '${role.region}',
|
||||||
|
regionName = '${role.region_name}',
|
||||||
|
updated = datetime('now', 'localtime');
|
||||||
|
`;
|
||||||
|
// 保存到数据库
|
||||||
|
await TGSqlite.saveData(sql);
|
||||||
|
});
|
||||||
|
console.log("保存成功");
|
||||||
|
} else {
|
||||||
|
await dialog.message(
|
||||||
|
bindRole.message,
|
||||||
|
{
|
||||||
|
type: "error",
|
||||||
|
title: `获取绑定角色失败,retcode: ${bindRole.retcode}`,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* @file utils TGSql.ts
|
* @file utils TGSql.ts
|
||||||
* @description 数据库sql语句
|
* @description 数据库sql语句
|
||||||
* @author BTMuli<bt-muli@outlook.com>
|
* @author BTMuli<bt-muli@outlook.com>
|
||||||
* @since Alpha v0.1.4
|
* @since Alpha v0.2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { app } from "@tauri-apps/api";
|
import { app } from "@tauri-apps/api";
|
||||||
@@ -28,6 +28,33 @@ function initAppTable (): string[] {
|
|||||||
return sqlRes;
|
return sqlRes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 初始化游戏账号数据表
|
||||||
|
* @since Alpha v0.2.0
|
||||||
|
* @see BTMuli.User.Game.Account
|
||||||
|
* @returns {string[]} sql
|
||||||
|
*/
|
||||||
|
function initGameAccountTable (): string[] {
|
||||||
|
const sqlRes = [];
|
||||||
|
// 创建游戏账号数据表
|
||||||
|
sqlRes.push(`
|
||||||
|
CREATE TABLE IF NOT EXISTS GameAccount
|
||||||
|
(
|
||||||
|
gameBiz TEXT PRIMARY KEY,
|
||||||
|
gameUid TEXT DEFAULT NULL,
|
||||||
|
isChosen BOOLEAN DEFAULT 0,
|
||||||
|
isOfficial BOOLEAN DEFAULT 0,
|
||||||
|
level INTEGER DEFAULT 0,
|
||||||
|
nickname TEXT DEFAULT NULL,
|
||||||
|
region TEXT DEFAULT NULL,
|
||||||
|
regionName TEXT DEFAULT NULL,
|
||||||
|
updated TEXT DEFAULT NULL,
|
||||||
|
PRIMARY KEY (gameBiz, gameUid)
|
||||||
|
);
|
||||||
|
`);
|
||||||
|
return sqlRes;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 初始化成就系列数据表
|
* @description 初始化成就系列数据表
|
||||||
* @since Alpha v0.1.4
|
* @since Alpha v0.1.4
|
||||||
@@ -126,14 +153,16 @@ function initNameCardTable (): string[] {
|
|||||||
`);
|
`);
|
||||||
return sqlRes;
|
return sqlRes;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 初始化数据库表
|
* @description 初始化数据库表
|
||||||
* @since Alpha v0.1.4
|
* @since Alpha v0.2.0
|
||||||
* @returns {string[]} sql
|
* @returns {string[]} sql
|
||||||
*/
|
*/
|
||||||
export function initSQLiteTable (): string[] {
|
export function initSQLiteTable (): string[] {
|
||||||
const sqlRes = [];
|
const sqlRes = [];
|
||||||
sqlRes.push(...initAppTable());
|
sqlRes.push(...initAppTable());
|
||||||
|
sqlRes.push(...initGameAccountTable());
|
||||||
sqlRes.push(...initAchievementSeriesTable());
|
sqlRes.push(...initAchievementSeriesTable());
|
||||||
sqlRes.push(...initAchievementTable());
|
sqlRes.push(...initAchievementTable());
|
||||||
sqlRes.push(...initNameCardTable());
|
sqlRes.push(...initNameCardTable());
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ class TGSqlite {
|
|||||||
"AppData",
|
"AppData",
|
||||||
"Achievements",
|
"Achievements",
|
||||||
"AchievementSeries",
|
"AchievementSeries",
|
||||||
|
"GameAccount",
|
||||||
"NameCard",
|
"NameCard",
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -68,18 +69,33 @@ class TGSqlite {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 获取应用数据某一项
|
* @description 封装-根据 table keys 获取数据
|
||||||
* @memberof TGSqlite
|
* @memberof TGSqlite
|
||||||
* @since Alpha v0.2.0
|
* @since Alpha v0.2.0
|
||||||
* @param {string} key
|
* @param {string} table 表名
|
||||||
* @returns {Promise<string>}
|
* @param {string} keyName 键名
|
||||||
|
* @param {string} keyValue 键值
|
||||||
|
* @returns {Promise<unknown[]>} 数据
|
||||||
*/
|
*/
|
||||||
public async getAppDataItem (key: string): Promise<string> {
|
public async getDataByKey (table: string, keyName: string, keyValue: string): Promise<unknown[]> {
|
||||||
const db = await Database.load(this.dbPath);
|
const db = await Database.load(this.dbPath);
|
||||||
const sql = `SELECT value FROM AppData WHERE key='${key}';`;
|
const sql = `SELECT * FROM ${table} WHERE ${keyName}='${keyValue}';`;
|
||||||
const res: Array<{ value: string }> = await db.select(sql);
|
const res: unknown[] = await db.select(sql);
|
||||||
|
await db.close();
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 封装-保存数据
|
||||||
|
* @memberof TGSqlite
|
||||||
|
* @since Alpha v0.2.0
|
||||||
|
* @param {string} sql sql语句
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
*/
|
||||||
|
public async saveData (sql: string): Promise<void> {
|
||||||
|
const db = await Database.load(this.dbPath);
|
||||||
|
await db.execute(sql);
|
||||||
await db.close();
|
await db.close();
|
||||||
return res[0].value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -99,20 +115,6 @@ class TGSqlite {
|
|||||||
await db.close();
|
await db.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @description 获取 cookie
|
|
||||||
* @memberof TGSqlite
|
|
||||||
* @since Alpha v0.2.0
|
|
||||||
* @returns {Promise<string>}
|
|
||||||
*/
|
|
||||||
public async getCookie (): Promise<string> {
|
|
||||||
const db = await Database.load(this.dbPath);
|
|
||||||
const sql = "SELECT value FROM AppData WHERE key='cookie';";
|
|
||||||
const res: Array<{ value: string }> = await db.select(sql);
|
|
||||||
await db.close();
|
|
||||||
return res[0].value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 保存 appData
|
* @description 保存 appData
|
||||||
* @memberof TGSqlite
|
* @memberof TGSqlite
|
||||||
|
|||||||
Reference in New Issue
Block a user