完成深渊数据上传 #22

This commit is contained in:
BTMuli
2023-06-27 10:08:33 +08:00
parent 8551a7951a
commit 0a6c1485e3
4 changed files with 52 additions and 46 deletions

View File

@@ -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>

View File

@@ -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,
}, },
}, },
}; };

View File

@@ -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),
}) })

View File

@@ -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;
} }