mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-14 09:38:13 +08:00
✨ 完成深渊数据上传 #22
This commit is contained in:
@@ -87,7 +87,6 @@ const loadingTitle = ref("");
|
|||||||
|
|
||||||
// data
|
// data
|
||||||
const userTab = ref(0);
|
const userTab = ref(0);
|
||||||
const abyssCookie = ref(computed(() => userStore.getCookieGroup4() as Record<string, string>));
|
|
||||||
const user = computed(() => userStore.getCurAccount());
|
const user = computed(() => userStore.getCurAccount());
|
||||||
|
|
||||||
const localAbyss = ref([] as TGApp.Sqlite.Abyss.SingleTable[]);
|
const localAbyss = ref([] as TGApp.Sqlite.Abyss.SingleTable[]);
|
||||||
@@ -113,16 +112,23 @@ async function initAbyssData() {
|
|||||||
async function getAbyssData(): Promise<void> {
|
async function getAbyssData(): Promise<void> {
|
||||||
loadingTitle.value = "正在获取深渊数据";
|
loadingTitle.value = "正在获取深渊数据";
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
|
const abyssCookie = userStore.getCookieGroup4();
|
||||||
|
const cookie: Record<string, string> = {
|
||||||
|
account_id: abyssCookie.account_id,
|
||||||
|
cookie_token: abyssCookie.cookie_token,
|
||||||
|
ltoken: abyssCookie.ltoken,
|
||||||
|
ltuid: abyssCookie.ltuid,
|
||||||
|
};
|
||||||
if (localAbyssID.value.length < 2) {
|
if (localAbyssID.value.length < 2) {
|
||||||
loadingTitle.value = "正在获取上期深渊数据";
|
loadingTitle.value = "正在获取上期深渊数据";
|
||||||
const resP = await TGRequest.User.byCookie.getAbyss(abyssCookie.value, "2", user.value);
|
const resP = await TGRequest.User.byCookie.getAbyss(cookie, "2", user.value);
|
||||||
if (!resP.hasOwnProperty("retcode")) {
|
if (!resP.hasOwnProperty("retcode")) {
|
||||||
loadingTitle.value = "正在保存上期深渊数据";
|
loadingTitle.value = "正在保存上期深渊数据";
|
||||||
await TGSqlite.saveAbyss(user.value.gameUid, resP as TGApp.Game.Abyss.FullData);
|
await TGSqlite.saveAbyss(user.value.gameUid, resP as TGApp.Game.Abyss.FullData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
loadingTitle.value = "正在获取本期深渊数据";
|
loadingTitle.value = "正在获取本期深渊数据";
|
||||||
const res = await TGRequest.User.byCookie.getAbyss(abyssCookie.value, "1", user.value);
|
const res = await TGRequest.User.byCookie.getAbyss(cookie, "1", user.value);
|
||||||
if (!res.hasOwnProperty("retcode")) {
|
if (!res.hasOwnProperty("retcode")) {
|
||||||
loadingTitle.value = "正在保存本期深渊数据";
|
loadingTitle.value = "正在保存本期深渊数据";
|
||||||
await TGSqlite.saveAbyss(user.value.gameUid, res as TGApp.Game.Abyss.FullData);
|
await TGSqlite.saveAbyss(user.value.gameUid, res as TGApp.Game.Abyss.FullData);
|
||||||
@@ -145,10 +151,23 @@ async function shareAbyss(): Promise<void> {
|
|||||||
await generateShareImg(fileName, abyssRef.value);
|
await generateShareImg(fileName, abyssRef.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
function uploadAbyss(): void {
|
async function uploadAbyss(): Promise<void> {
|
||||||
const abyssData = curAbyss.value;
|
const abyssData = curAbyss.value;
|
||||||
const transAbyss = HutaoRequest.Abyss.utils.transData(abyssData);
|
loadingTitle.value = "正在转换深渊数据";
|
||||||
console.log(transAbyss);
|
loading.value = true;
|
||||||
|
let transAbyss = HutaoRequest.Abyss.utils.transData(abyssData);
|
||||||
|
loadingTitle.value = "正在获取角色数据";
|
||||||
|
const roles = await TGSqlite.getUserCharacter(user.value.gameUid);
|
||||||
|
if (!roles) {
|
||||||
|
loading.value = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
loadingTitle.value = "正在转换角色数据";
|
||||||
|
transAbyss.avatars = HutaoRequest.Abyss.utils.transAvatars(roles);
|
||||||
|
loadingTitle.value = "正在上传深渊数据";
|
||||||
|
const res = await HutaoRequest.Abyss.postData(transAbyss);
|
||||||
|
console.log(res);
|
||||||
|
loading.value = false;
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="css" scoped>
|
<style lang="css" scoped>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import getTeamCollect from "./request/getTeamCollect";
|
|||||||
import { checkUid, getUserData } from "./request/getUserData";
|
import { checkUid, getUserData } from "./request/getUserData";
|
||||||
import getWeaponCollect from "./request/getWeaponCollect";
|
import getWeaponCollect from "./request/getWeaponCollect";
|
||||||
import uploadData from "./request/uploadData";
|
import uploadData from "./request/uploadData";
|
||||||
import { transLocal } from "./utils/transLocal";
|
import { transAvatars, transLocal } from "./utils/transLocal";
|
||||||
|
|
||||||
const HutaoRequest = {
|
const HutaoRequest = {
|
||||||
Abyss: {
|
Abyss: {
|
||||||
@@ -34,6 +34,7 @@ const HutaoRequest = {
|
|||||||
postData: uploadData,
|
postData: uploadData,
|
||||||
utils: {
|
utils: {
|
||||||
transData: transLocal,
|
transData: transLocal,
|
||||||
|
transAvatars,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* @file plugins Hutao request uploadData.ts
|
* @file plugins Hutao request uploadData.ts
|
||||||
* @description Hutao 数据上传请求函数集合
|
* @description Hutao 数据上传请求函数集合
|
||||||
* @author BTMuli <bt-muli@outlook.com>
|
* @author BTMuli <bt-muli@outlook.com>
|
||||||
* @since Alpha v0.2.0
|
* @since Alpha v0.2.1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// tauri
|
// tauri
|
||||||
@@ -12,15 +12,16 @@ import HutaoApi from "../api";
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 上传用户数据
|
* @description 上传用户数据
|
||||||
* @since Alpha v0.2.0
|
* @since Alpha v0.2.1
|
||||||
* @todo 上传用户数据
|
|
||||||
* @param {TGApp.Plugins.Hutao.AbyssRecordUpload} data 用户数据
|
* @param {TGApp.Plugins.Hutao.AbyssRecordUpload} data 用户数据
|
||||||
* @returns {Promise<unknown>} 上传结果
|
* @returns {Promise<TGApp.Plugins.Hutao.HutaoResponse>} 上传结果
|
||||||
*/
|
*/
|
||||||
async function uploadData(data: TGApp.Plugins.Hutao.AbyssRecordUpload): Promise<unknown> {
|
async function uploadData(
|
||||||
|
data: TGApp.Plugins.Hutao.AbyssRecordUpload,
|
||||||
|
): Promise<TGApp.Plugins.Hutao.HutaoResponse> {
|
||||||
const url = HutaoApi.Abyss.upload;
|
const url = HutaoApi.Abyss.upload;
|
||||||
return await http
|
return await http
|
||||||
.fetch(url, {
|
.fetch<TGApp.Plugins.Hutao.HutaoResponse>(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
body: http.Body.json(data),
|
body: http.Body.json(data),
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -5,26 +5,21 @@
|
|||||||
* @since Alpha v0.2.1
|
* @since Alpha v0.2.1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// utils
|
|
||||||
import TGSqlite from "../../Sqlite";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 将本地数据转为上传用的数据
|
* @description 将本地数据转为上传用的数据
|
||||||
* @since Alpha v0.2.1
|
* @since Alpha v0.2.1
|
||||||
* @param {TGApp.Sqlite.Abyss.SingleTable} data 本地数据
|
* @param {TGApp.Sqlite.Abyss.SingleTable} data 本地数据
|
||||||
* @param {string} userName 用户名
|
|
||||||
* @returns {TGApp.Plugins.Hutao.AbyssRecordUpload} 上传用的数据
|
* @returns {TGApp.Plugins.Hutao.AbyssRecordUpload} 上传用的数据
|
||||||
*/
|
*/
|
||||||
export function transLocal(
|
export function transLocal(
|
||||||
data: TGApp.Sqlite.Abyss.SingleTable,
|
data: TGApp.Sqlite.Abyss.SingleTable,
|
||||||
userName?: string,
|
|
||||||
): TGApp.Plugins.Hutao.AbyssRecordUpload {
|
): TGApp.Plugins.Hutao.AbyssRecordUpload {
|
||||||
return {
|
return {
|
||||||
uid: data.uid,
|
uid: data.uid,
|
||||||
identity: "Tauri.Genshin",
|
identity: "Tauri.Genshin",
|
||||||
spiralAbyss: transAbyss(data),
|
spiralAbyss: transAbyss(data),
|
||||||
avatars: transAvatars(data),
|
avatars: [],
|
||||||
reservedUserName: userName || "",
|
reservedUserName: "",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,36 +88,26 @@ function transLevel(data: TGApp.Sqlite.Abyss.Level): TGApp.Plugins.Hutao.AbyssLe
|
|||||||
/**
|
/**
|
||||||
* @description 转换角色数据
|
* @description 转换角色数据
|
||||||
* @since Alpha v0.2.1
|
* @since Alpha v0.2.1
|
||||||
* @param {TGApp.Sqlite.Abyss.SingleTable} data 本地数据
|
* @param {TGApp.Sqlite.Character.UserRole[]} avatars 角色数据
|
||||||
* @returns {TGApp.Plugins.Hutao.AbyssAvatar[]} 上传用的数据
|
* @returns {TGApp.Plugins.Hutao.AbyssAvatar[]} 上传用的数据
|
||||||
*/
|
*/
|
||||||
function transAvatars(data: TGApp.Sqlite.Abyss.SingleTable): TGApp.Plugins.Hutao.AbyssAvatar[] {
|
export function transAvatars(
|
||||||
const avatars: TGApp.Plugins.Hutao.AbyssAvatar[] = [];
|
avatars: TGApp.Sqlite.Character.UserRole[],
|
||||||
const floors: TGApp.Sqlite.Abyss.Floor[] = JSON.parse(data.floors);
|
): TGApp.Plugins.Hutao.AbyssAvatar[] {
|
||||||
const avatarIdCollect = new Set<number>();
|
return avatars.map((avatar) => {
|
||||||
floors.map((floor) =>
|
|
||||||
floor.levels.map((level) => {
|
|
||||||
level.upBattle.characters.map((character) => avatarIdCollect.add(character.id));
|
|
||||||
level.downBattle.characters.map((character) => avatarIdCollect.add(character.id));
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
Array.from(avatarIdCollect).map(async (avatarId) => {
|
|
||||||
const avatarGet: TGApp.Sqlite.Character.UserRole[] | false = await TGSqlite.getUserCharacter(
|
|
||||||
data.uid,
|
|
||||||
avatarId,
|
|
||||||
);
|
|
||||||
if (!avatarGet) return;
|
|
||||||
const avatar = avatarGet[0];
|
|
||||||
const weapon: TGApp.Sqlite.Character.RoleWeapon = JSON.parse(avatar.weapon);
|
const weapon: TGApp.Sqlite.Character.RoleWeapon = JSON.parse(avatar.weapon);
|
||||||
const relics: TGApp.Sqlite.Character.RoleReliquary[] = JSON.parse(avatar.reliquary);
|
let relics: number[];
|
||||||
const relicSetCollect = new Set<string>();
|
if (avatar.reliquary === "") {
|
||||||
relics.map((relic) => relicSetCollect.add(relic.set.id.toString()));
|
relics = [];
|
||||||
avatars.push({
|
} else {
|
||||||
avatarId,
|
const relicSet: TGApp.Sqlite.Character.RoleReliquary[] = JSON.parse(avatar.reliquary);
|
||||||
|
relics = relicSet.map((relic) => relic.set.id);
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
avatarId: avatar.cid,
|
||||||
weaponId: weapon.id,
|
weaponId: weapon.id,
|
||||||
reliquarySetIds: Array.from(relicSetCollect),
|
reliquarySetIds: relics,
|
||||||
activedConstellationNumber: avatar.activeConstellation,
|
activedConstellationNumber: avatar.activeConstellation,
|
||||||
});
|
};
|
||||||
});
|
});
|
||||||
return avatars;
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user