🌱 重构胡桃请求,增加幻想真境剧诗请求

This commit is contained in:
目棃
2024-11-11 11:46:34 +08:00
parent 6b8cbe0e57
commit a2ce468e2f
19 changed files with 334 additions and 334 deletions

View File

@@ -270,7 +270,7 @@ async function uploadAbyss(): Promise<void> {
loadingTitle.value = "正在转换角色数据"; loadingTitle.value = "正在转换角色数据";
transAbyss.Avatars = Hutao.Abyss.utils.transAvatars(roles); transAbyss.Avatars = Hutao.Abyss.utils.transAvatars(roles);
loadingTitle.value = "正在上传深渊数据"; loadingTitle.value = "正在上传深渊数据";
const res = await Hutao.Abyss.postData(transAbyss); const res = await Hutao.Abyss.upload(transAbyss);
loading.value = false; loading.value = false;
if (res.retcode === 0) { if (res.retcode === 0) {
showSnackbar({ text: res.message ?? "上传深渊数据成功" }); showSnackbar({ text: res.message ?? "上传深渊数据成功" });

View File

@@ -102,8 +102,8 @@ onMounted(async () => {
loading.value = true; loading.value = true;
loadT.value = "正在获取深渊概览"; loadT.value = "正在获取深渊概览";
overview.value = { overview.value = {
cur: await Hutao.Abyss.getOverview(), cur: await Hutao.Abyss.overview(),
last: await Hutao.Abyss.getOverview(true), last: await Hutao.Abyss.overview(true),
}; };
loadT.value = "正在获取深渊数据"; loadT.value = "正在获取深渊数据";
const useData = <AbyssDataItem<TGApp.Plugins.Hutao.Abyss.AvatarUse[]>>await getData("use"); const useData = <AbyssDataItem<TGApp.Plugins.Hutao.Abyss.AvatarUse[]>>await getData("use");
@@ -142,20 +142,20 @@ async function getData(type: AbyssTab): Promise<AbyssDataItemType<AbyssTab>> {
switch (type) { switch (type) {
case "use": case "use":
return { return {
cur: await Hutao.Abyss.avatar.getUseRate(), cur: await Hutao.Abyss.avatar.use(),
last: await Hutao.Abyss.avatar.getUseRate(true), last: await Hutao.Abyss.avatar.use(true),
}; };
case "up": case "up":
return { return {
cur: await Hutao.Abyss.avatar.getUpRate(), cur: await Hutao.Abyss.avatar.up(),
last: await Hutao.Abyss.avatar.getUpRate(true), last: await Hutao.Abyss.avatar.up(true),
}; };
case "team": case "team":
return await Hutao.Abyss.getTeamCollect(); return await Hutao.Abyss.team();
case "hold": case "hold":
return { return {
cur: await Hutao.Abyss.avatar.getHoldRate(), cur: await Hutao.Abyss.avatar.hold(),
last: await Hutao.Abyss.avatar.getHoldRate(true), last: await Hutao.Abyss.avatar.hold(true),
}; };
} }
} }

View File

@@ -1,17 +0,0 @@
/**
* @file plugins/Hutao/api/abyss.ts
* @description Hutao API 深渊相关
* @since Beta v0.6.2
*/
const BaseUrl = "https://homa.snapgenshin.com/";
const AbyssUrl = `${BaseUrl}Statistics/`;
export const DataUploadApi = `${BaseUrl}Record/Upload?returningRank=false`;
export const OverviewApi = `${AbyssUrl}Overview`;
export const AvatarUpRateApi = `${AbyssUrl}Avatar/AttendanceRate`;
export const AvatarUseRateApi = `${AbyssUrl}Avatar/UtilizationRate`;
export const AvatarHoldRateApi = `${AbyssUrl}Avatar/HoldingRate`;
export const AvatarCollocationApi = `${AbyssUrl}Avatar/AvatarCollocation`;
export const WeaponCollocationApi = `${AbyssUrl}Weapon/WeaponCollocation`;
export const TeamCombinationApi = `${AbyssUrl}Team/Combination`;

View File

@@ -1,33 +0,0 @@
/**
* @file plugins/Hutao/api/index.ts
* @description Hutao API
* @since Alpha v0.2.0
*/
import {
AvatarCollocationApi,
AvatarHoldRateApi,
AvatarUpRateApi,
AvatarUseRateApi,
DataUploadApi,
OverviewApi,
TeamCombinationApi,
WeaponCollocationApi,
} from "./abyss.js";
const HutaoApi = {
Abyss: {
upload: DataUploadApi,
overview: OverviewApi,
avatar: {
upRate: AvatarUpRateApi,
useRate: AvatarUseRateApi,
holdRate: AvatarHoldRateApi,
collect: AvatarCollocationApi,
},
weapon: WeaponCollocationApi,
team: TeamCombinationApi,
},
};
export default HutaoApi;

View File

@@ -4,31 +4,40 @@
* @since Beta v0.6.2 * @since Beta v0.6.2
*/ */
import getAvatarCollect from "./request/getAvatarCollect.js"; import {
import getAvatarHoldRate from "./request/getAvatarHoldRate.js"; getAbyssOverview,
import getAvatarUpRate from "./request/getAvatarUpRate.js"; getAvatarCollect,
import getAvatarUseRate from "./request/getAvatarUseRate.js"; getAvatarHoldRate,
import getOverview from "./request/getOverview.js"; getAvatarUpRate,
import getTeamCollect from "./request/getTeamCollect.js"; getAvatarUseRate,
import uploadData from "./request/uploadData.js"; getTeamCollect,
import { transAvatars, transLocal } from "./utils/transLocal.js"; uploadAbyssData,
} from "./request/abyssReq.js";
import { getCombatStatistic, uploadCombatData } from "./request/combatReq.js";
import { transAbyssAvatars, transAbyssLocal } from "./utils/abyssUtil.js";
import { transCombatLocal } from "./utils/combatUtil.js";
const Hutao = { const Hutao = {
Abyss: { Abyss: {
avatar: { avatar: {
getCollect: getAvatarCollect, collect: getAvatarCollect,
getHoldRate: getAvatarHoldRate, hold: getAvatarHoldRate,
getUpRate: getAvatarUpRate, up: getAvatarUpRate,
getUseRate: getAvatarUseRate, use: getAvatarUseRate,
}, },
getOverview, overview: getAbyssOverview,
getTeamCollect, team: getTeamCollect,
postData: uploadData, upload: uploadAbyssData,
utils: { utils: {
transData: transLocal, transData: transAbyssLocal,
transAvatars, transAvatars: transAbyssAvatars,
}, },
}, },
Combat: {
upload: uploadCombatData,
data: getCombatStatistic,
trans: transCombatLocal,
},
}; };
export default Hutao; export default Hutao;

View File

@@ -0,0 +1,128 @@
/**
* @file plugins/Hutao/request/abyssReq.ts
* @description 深渊相关请求
* @since Beta v0.6.2
*/
import TGHttp from "../../../utils/TGHttp.js";
const AbyssUrl = `https://homa.snapgenshin.com/Statistics/`;
/**
* @description 获取深渊概览数据
* @since Beta v0.6.2
* @param {boolean} isLast 是否获取上期数据
* @return {Promise<TGApp.Plugins.Hutao.Abyss.OverviewData>}
*/
export async function getAbyssOverview(
isLast: boolean = false,
): Promise<TGApp.Plugins.Hutao.Abyss.OverviewData> {
const url = `${AbyssUrl}Overview`;
const resp = await TGHttp<TGApp.Plugins.Hutao.Abyss.OverviewResponse>(url, {
method: "GET",
query: { Last: isLast },
});
return resp.data;
}
/**
* @description 获取角色搭配数据
* @since Beta v0.6.2
* @param {boolean} isLast 是否获取上期数据
* @return {Promise<TGApp.Plugins.Hutao.Abyss.AvatarCollocation[]>}
*/
export async function getAvatarCollect(
isLast: boolean = false,
): Promise<TGApp.Plugins.Hutao.Abyss.AvatarCollocation[]> {
const url = `${AbyssUrl}Avatar/AvatarCollocation`;
const resp = await TGHttp<TGApp.Plugins.Hutao.Abyss.AvatarCollocationResponse>(url, {
method: "GET",
query: { Last: isLast },
});
return resp.data;
}
/**
* @description 获取角色持有率数据
* @since Beta v0.6.2
* @param {boolean} isLast 是否获取上期数据
* @returns {Promise<TGApp.Plugins.Hutao.Abyss.AvatarHold[]>}
*/
export async function getAvatarHoldRate(
isLast: boolean = false,
): Promise<TGApp.Plugins.Hutao.Abyss.AvatarHold[]> {
const url = `${AbyssUrl}Avatar/HoldingRate`;
const resp = await TGHttp<TGApp.Plugins.Hutao.Abyss.AvatarHoldResponse>(url, {
method: "GET",
query: { Last: isLast },
});
return resp.data;
}
/**
* @description 获取角色上场率数据
* @since Beta v0.6.2
* @param {boolean} isLast 是否获取上期数据
* @return {Promise<TGApp.Plugins.Hutao.Abyss.AvatarUp[]>}
*/
export async function getAvatarUpRate(
isLast: boolean = false,
): Promise<TGApp.Plugins.Hutao.Abyss.AvatarUp[]> {
const url = `${AbyssUrl}Avatar/AttendanceRate`;
const resp = await TGHttp<TGApp.Plugins.Hutao.Abyss.AvatarUpResponse>(url, {
method: "GET",
query: { Last: isLast },
});
return resp.data;
}
/**
* @description 获取角色使用率
* @since Beta v0.6.2
* @param {boolean} isLast 是否获取上期数据
* @return {Promise<TGApp.Plugins.Hutao.Abyss.AvatarUse[]>}
*/
export async function getAvatarUseRate(
isLast: boolean = false,
): Promise<TGApp.Plugins.Hutao.Abyss.AvatarUse[]> {
const url = `${AbyssUrl}Avatar/UtilizationRate`;
const resp = await TGHttp<TGApp.Plugins.Hutao.Abyss.AvatarUseResponse>(url, {
method: "GET",
query: { Last: isLast },
});
return resp.data;
}
/**
* @description 获取队伍搭配数据
* @since Beta v0.6.2
* @param {boolean} isLast 是否获取上期数据
* @return {Promise<TGApp.Plugins.Hutao.Abyss.TeamCombination[]>}
*/
export async function getTeamCollect(
isLast: boolean = false,
): Promise<TGApp.Plugins.Hutao.Abyss.TeamCombination[]> {
const url = `${AbyssUrl}Team/Combination`;
const resp = await TGHttp<TGApp.Plugins.Hutao.Abyss.TeamCombinationResponse>(url, {
method: "GET",
query: { Last: isLast },
});
return resp.data;
}
/**
* @description 上传用户数据
* @since Beta v0.5.0
* @param {TGApp.Plugins.Hutao.Abyss.RecordUpload} data 用户数据
* @returns {Promise<TGApp.Plugins.Hutao.Abyss.UploadResponse>} 上传结果
*/
export async function uploadAbyssData(
data: TGApp.Plugins.Hutao.Abyss.RecordUpload,
): Promise<TGApp.Plugins.Hutao.Abyss.UploadResponse> {
const url = "https://homa.snapgenshin.com/Record/Upload";
return await TGHttp<TGApp.Plugins.Hutao.Abyss.UploadResponse>(url, {
method: "POST",
body: JSON.stringify(data),
query: { returningRank: false },
headers: { "Content-Type": "application/json" },
});
}

View File

@@ -0,0 +1,42 @@
/**
* @file plugins/Hutao/request/combatReq.ts
* @description 幻想真境剧诗相关请求
* @since Beta v0.6.2
*/
import TGHttp from "../../../utils/TGHttp.js";
const CombatUrl = "https://homa.snapgenshin.com/RoleCombat/";
/**
* @description 获取数据
* @since Beta v0.6.2
* @param {boolean} isLast
* @return {Promise<TGApp.Plugins.Hutao.Combat.Data>}
*/
export async function getCombatStatistic(
isLast: boolean = false,
): Promise<TGApp.Plugins.Hutao.Combat.Data> {
const url = `${CombatUrl}Statistics`;
const resp = await TGHttp<TGApp.Plugins.Hutao.Combat.Response>(url, {
method: "GET",
query: { Last: isLast },
});
return resp.data;
}
/**
* @description 上传数据
* @since Beta v0.6.2
* @param {TGApp.Plugins.Hutao.Combat.UploadData} data
* @returns {Promise<TGApp.Plugins.Hutao.Combat.UploadResponse>}
*/
export async function uploadCombatData(
data: TGApp.Plugins.Hutao.Combat.UploadData,
): Promise<TGApp.Plugins.Hutao.Combat.UploadResponse> {
const url = `${CombatUrl}Upload`;
return await TGHttp<TGApp.Plugins.Hutao.Combat.UploadResponse>(url, {
method: "POST",
body: JSON.stringify(data),
headers: { "Content-Type": "application/json" },
});
}

View File

@@ -1,27 +0,0 @@
/**
* @file plugins/Hutao/request/getAvatarCollect.ts
* @description 获取角色搭配数据
* @since Beta v0.6.2
*/
import TGHttp from "../../../utils/TGHttp.js";
import HutaoApi from "../api/index.js";
/**
* @description 获取角色搭配数据
* @since Beta v0.6.2
* @param {boolean} isLast 是否获取上期数据
* @return {Promise<TGApp.Plugins.Hutao.Abyss.AvatarCollocation[]>}
*/
async function getAvatarCollect(
isLast: boolean = false,
): Promise<TGApp.Plugins.Hutao.Abyss.AvatarCollocation[]> {
const url = HutaoApi.Abyss.avatar.collect;
const resp = await TGHttp<TGApp.Plugins.Hutao.Abyss.AvatarCollocationResponse>(url, {
method: "GET",
query: { Last: isLast },
});
return resp.data;
}
export default getAvatarCollect;

View File

@@ -1,27 +0,0 @@
/**
* @file plugins/Hutao/request/getAvatarHoldRate.ts
* @description Hutao API 获取角色持有率数据请求方法
* @since Beta v0.6.2
*/
import TGHttp from "../../../utils/TGHttp.js";
import HutaoApi from "../api/index.js";
/**
* @description 获取角色持有率数据
* @since Beta v0.6.2
* @param {boolean} isLast 是否获取上期数据
* @returns {Promise<TGApp.Plugins.Hutao.Abyss.AvatarHold[]>}
*/
async function getAvatarHoldRate(
isLast: boolean = false,
): Promise<TGApp.Plugins.Hutao.Abyss.AvatarHold[]> {
const url = HutaoApi.Abyss.avatar.holdRate;
const resp = await TGHttp<TGApp.Plugins.Hutao.Abyss.AvatarHoldResponse>(url, {
method: "GET",
query: { Last: isLast },
});
return resp.data;
}
export default getAvatarHoldRate;

View File

@@ -1,27 +0,0 @@
/**
* @file plugins/Hutao/request/getAvatarUpRate.ts
* @description 获取角色上场率数据
* @since Beta v0.6.2
*/
import TGHttp from "../../../utils/TGHttp.js";
import HutaoApi from "../api/index.js";
/**
* @description 获取角色上场率数据
* @since Beta v0.6.2
* @param {boolean} isLast 是否获取上期数据
* @return {Promise<TGApp.Plugins.Hutao.Abyss.AvatarUp[]>}
*/
async function getAvatarUpRate(
isLast: boolean = false,
): Promise<TGApp.Plugins.Hutao.Abyss.AvatarUp[]> {
const url = HutaoApi.Abyss.avatar.upRate;
const resp = await TGHttp<TGApp.Plugins.Hutao.Abyss.AvatarUpResponse>(url, {
method: "GET",
query: { Last: isLast },
});
return resp.data;
}
export default getAvatarUpRate;

View File

@@ -1,27 +0,0 @@
/**
* @file plugins/Hutao/request/getAvatarUseRate.ts
* @description 获取角色使用率
* @since Beta v0.6.2
*/
import TGHttp from "../../../utils/TGHttp.js";
import HutaoApi from "../api/index.js";
/**
* @description 获取角色使用率
* @since Beta v0.6.2
* @param {boolean} isLast 是否获取上期数据
* @return {Promise<TGApp.Plugins.Hutao.Abyss.AvatarUse[]>}
*/
async function getAvatarUseRate(
isLast: boolean = false,
): Promise<TGApp.Plugins.Hutao.Abyss.AvatarUse[]> {
const url = HutaoApi.Abyss.avatar.useRate;
const resp = await TGHttp<TGApp.Plugins.Hutao.Abyss.AvatarUseResponse>(url, {
method: "GET",
query: { Last: isLast },
});
return resp.data;
}
export default getAvatarUseRate;

View File

@@ -1,27 +0,0 @@
/**
* @file plugins/Hutao/request/getOverview.ts
* @description 获取深渊概览数据
* @since Beta v0.6.2
*/
import TGHttp from "../../../utils/TGHttp.js";
import HutaoApi from "../api/index.js";
/**
* @description 获取深渊概览数据
* @since Beta v0.6.2
* @param {boolean} isLast 是否获取上期数据
* @return {Promise<TGApp.Plugins.Hutao.Abyss.OverviewData>}
*/
async function getOverview(
isLast: boolean = false,
): Promise<TGApp.Plugins.Hutao.Abyss.OverviewData> {
const url = HutaoApi.Abyss.overview;
const resp = await TGHttp<TGApp.Plugins.Hutao.Abyss.OverviewResponse>(url, {
method: "GET",
query: { Last: isLast },
});
return resp.data;
}
export default getOverview;

View File

@@ -1,27 +0,0 @@
/**
* @file plugins/Hutao/request/getTeamCollect.ts
* @description 获取队伍搭配数据
* @since Beta v0.6.2
*/
import TGHttp from "../../../utils/TGHttp.js";
import HutaoApi from "../api/index.js";
/**
* @description 获取队伍搭配数据
* @since Beta v0.6.2
* @param {boolean} isLast 是否获取上期数据
* @return {Promise<TGApp.Plugins.Hutao.Abyss.TeamCombination[]>}
*/
async function getTeamCollect(
isLast: boolean = false,
): Promise<TGApp.Plugins.Hutao.Abyss.TeamCombination[]> {
const url = HutaoApi.Abyss.team;
const resp = await TGHttp<TGApp.Plugins.Hutao.Abyss.TeamCombinationResponse>(url, {
method: "GET",
query: { Last: isLast },
});
return resp.data;
}
export default getTeamCollect;

View File

@@ -1,27 +0,0 @@
/**
* @file plugins/Hutao/request/uploadData.ts
* @description Hutao 数据上传请求函数集合
* @since Beta v0.5.0
*/
import TGHttp from "../../../utils/TGHttp.js";
import HutaoApi from "../api/index.js";
/**
* @description 上传用户数据
* @since Beta v0.5.0
* @param {TGApp.Plugins.Hutao.Abyss.RecordUpload} data 用户数据
* @returns {Promise<TGApp.Plugins.Hutao.Abyss.UploadResponse>} 上传结果
*/
async function uploadData(
data: TGApp.Plugins.Hutao.Abyss.RecordUpload,
): Promise<TGApp.Plugins.Hutao.Abyss.UploadResponse> {
const url = HutaoApi.Abyss.upload;
return await TGHttp<TGApp.Plugins.Hutao.Abyss.UploadResponse>(url, {
method: "POST",
body: JSON.stringify(data),
headers: { "Content-Type": "application/json" },
});
}
export default uploadData;

View File

@@ -199,16 +199,12 @@ declare namespace TGApp.Plugins.Hutao.Abyss {
* @since Alpha v0.2.1 * @since Alpha v0.2.1
* @interface AvatarUp * @interface AvatarUp
* @property {number} Floor - 楼层 * @property {number} Floor - 楼层
* @property {number} Ranks[].Item - 角色ID * @property {Array<TGApp.Plugins.Hutao.Base.Rate>} Ranks - 角色上场率
* @property {number} Ranks[].Rate - 上场率
* @return AvatarUp * @return AvatarUp
*/ */
interface AvatarUp { interface AvatarUp {
Floor: number; Floor: number;
Ranks: Array<{ Ranks: Array<TGApp.Plugins.Hutao.Base.Rate>;
Item: number;
Rate: number;
}>;
} }
/** /**
@@ -229,16 +225,12 @@ declare namespace TGApp.Plugins.Hutao.Abyss {
* @since Alpha v0.2.1 * @since Alpha v0.2.1
* @interface AvatarUse * @interface AvatarUse
* @property {number} Floor - 楼层 * @property {number} Floor - 楼层
* @property {number} Ranks[].Item - 角色ID * @property {Array<TGApp.Plugins.Hutao.Base.Rate>} Ranks 角色使用率
* @property {number} Ranks[].Rate - 使用率
* @return AvatarUse * @return AvatarUse
*/ */
interface AvatarUse { interface AvatarUse {
Floor: number; Floor: number;
Ranks: Array<{ Ranks: Array<TGApp.Plugins.Hutao.Base.Rate>;
Item: number;
Rate: number;
}>;
} }
/** /**
@@ -259,17 +251,13 @@ declare namespace TGApp.Plugins.Hutao.Abyss {
* @since Alpha v0.2.1 * @since Alpha v0.2.1
* @interface AvatarHold * @interface AvatarHold
* @property {number} HoldingRate - 持有率 * @property {number} HoldingRate - 持有率
* @property {number} Constellations[].Item - 命座ID * @property {Array<TGApp.Plugins.Hutao.Base.Rate>} Constellations - 持有率
* @property {number} Constellations[].Rate - 持有率
* @property {number} AvatarId - 角色ID * @property {number} AvatarId - 角色ID
* @return AvatarHold * @return AvatarHold
*/ */
interface AvatarHold { interface AvatarHold {
HoldingRate: number; HoldingRate: number;
Constellations: Array<{ Constellations: Array<TGApp.Plugins.Hutao.Base.Rate>;
Item: number;
Rate: number;
}>;
AvatarId: number; AvatarId: number;
} }
@@ -291,28 +279,16 @@ declare namespace TGApp.Plugins.Hutao.Abyss {
* @since Alpha v0.2.1 * @since Alpha v0.2.1
* @interface AvatarCollocation * @interface AvatarCollocation
* @property {number} AvatarId - 角色ID * @property {number} AvatarId - 角色ID
* @property {number} Avatars[].Item - 角色ID * @property {Array<TGApp.Plugins.Hutao.Base.Rate>} Avatars - 角色搭配率
* @property {number} Avatars[].Rate - 角色搭配率 * @property {Array<TGApp.Plugins.Hutao.Base.Rate<string>>} Reliquaries - 圣遗物套装搭配率
* @property {string} Reliquaries[].Item - 圣遗物套装ID // id-num,id-num * @property {Array<TGApp.Plugins.Hutao.Base.Rate>} Weapons - 武器搭配率
* @property {number} Reliquaries[].Rate - 圣遗物套装搭配率
* @property {number} Weapons[].Item - 武器ID
* @property {number} Weapons[].Rate - 武器搭配率
* @return AvatarCollocation * @return AvatarCollocation
*/ */
interface AvatarCollocation { interface AvatarCollocation {
AvatarId: number; AvatarId: number;
Avatars: Array<{ Avatars: Array<TGApp.Plugins.Hutao.Base.Rate>;
Item: number; Reliquaries: Array<TGApp.Plugins.Hutao.Base.Rate<string>>;
Rate: number; Weapons: Array<TGApp.Plugins.Hutao.Base.Rate>;
}>;
Reliquaries: Array<{
Item: string;
Rate: number;
}>;
Weapons: Array<{
Item: number;
Rate: number;
}>;
} }
/** /**
@@ -332,16 +308,12 @@ declare namespace TGApp.Plugins.Hutao.Abyss {
* @since Alpha v0.2.1 * @since Alpha v0.2.1
* @interface WeaponCollocation * @interface WeaponCollocation
* @property {number} WeaponId - 武器ID * @property {number} WeaponId - 武器ID
* @property {number} Avatars[].Item - 角色ID * @property {Array<TGApp.Plugins.Hutao.Base.Rate>} Avatars - 角色搭配率
* @property {number} Avatars[].Rate - 角色搭配率
* @return WeaponCollocation * @return WeaponCollocation
*/ */
interface WeaponCollocation { interface WeaponCollocation {
WeaponId: number; WeaponId: number;
Avatars: Array<{ Avatars: Array<TGApp.Plugins.Hutao.Base.Rate>;
Item: number;
Rate: number;
}>;
} }
/** /**
@@ -362,21 +334,13 @@ declare namespace TGApp.Plugins.Hutao.Abyss {
* @since Alpha v0.2.1 * @since Alpha v0.2.1
* @interface TeamCombination * @interface TeamCombination
* @property {number} Floor - 楼层 * @property {number} Floor - 楼层
* @property {string} Up[].Item - 角色ID // id,id,id,id * @property {Array<TGApp.Plugins.Hutao.Base.Rate<string>>} Up - 统计次数
* @property {number} Up[].Rate - 统计次数 * @property {Array<TGApp.Plugins.Hutao.Base.Rate<string>>} Down - 统计次数
* @property {string} Down[].Item - 角色ID // id,id,id,id
* @property {number} Down[].Rate - 统计次数
* @return TeamCombination * @return TeamCombination
*/ */
interface TeamCombination { interface TeamCombination {
Floor: number; Floor: number;
Up: Array<{ Up: Array<TGApp.Plugins.Hutao.Base.Rate<string>>;
Item: string; Down: Array<TGApp.Plugins.Hutao.Base.Rate<string>>;
Rate: number;
}>;
Down: Array<{
Item: string;
Rate: number;
}>;
} }
} }

View File

@@ -1,15 +1,9 @@
/** /**
* @file src/plugins/Hutao/types/Base.d.ts * @file src/plugins/Hutao/types/Base.d.ts
* @description Hutao 插件基础类型定义文件 * @description Hutao 插件基础类型定义文件
* @since Beta v0.3.8 * @since Beta v0.6.2
*/ */
/**
* @description Hutao 插件基础类型
* @since Beta v0.3.8
* @namespace Base
* @return Base
*/
declare namespace TGApp.Plugins.Hutao.Base { declare namespace TGApp.Plugins.Hutao.Base {
/** /**
* @description Hutao Response 统一接口 * @description Hutao Response 统一接口
@@ -26,6 +20,19 @@ declare namespace TGApp.Plugins.Hutao.Base {
data?: any; data?: any;
} }
/**
* @description 使用率
* @since Beta v0.6.2
* @interface Rate
* @property {number} Item id
* @property {number} Rate 使用率
* @return Rate
*/
interface Rate<T = number> {
Item: T;
Rate: number;
}
/** /**
* @description 武器类型枚举,英文-中文对照 * @description 武器类型枚举,英文-中文对照
* @since Beta v0.3.8 * @since Beta v0.3.8

60
src/plugins/Hutao/types/Combat.d.ts vendored Normal file
View File

@@ -0,0 +1,60 @@
/**
* @file plugins/Hutao/types/Combat.d.ts
* @description 幻想真境剧诗
* @since Beta v0.6.2
*/
declare namespace TGApp.Plugins.Hutao.Combat {
/**
* @description 上传返回
* @since Beta v0.6.2
* @interface UploadResponse
* @extends TGApp.Plugins.Hutao.Base.Response
* @return UploadResponse
*/
type UploadResponse = TGApp.Plugins.Hutao.Base.Response;
/**
* @description 上传数据
* @since Beta v0.6.2
* @interface UploadData
* @property {number} Version
* @property {string} Uid
* @property {string} Identity
* @property {number[]} BackupAvatars
* @property {number} ScheduleId
* @return UploadData
*/
interface UploadData {
Version: number;
Uid: string;
Identity: string;
BackupAvatars: Array<number>;
ScheduleId: number;
}
/**
* @description 数据获取返回
* @since Beta v0.6.2
* @interface Response
* @extends TGApp.Plugins.Hutao.Base.Response
* @property {Data} data
* @return Response
*/
interface Response extends TGApp.Plugins.Hutao.Base.Response {
data: Data;
}
/**
* @description 数据
* @since Beta v0.6.2
* @interface Data
* @property {number} RecordTotal 总数
* @property {Array<TGApp.Plugins.Hutao.Base.Rate>} BackupAvatarRates 使用率
* @return Data
*/
interface Data {
RecordTotal: number;
BackupAvatarRates: Array<TGApp.Plugins.Hutao.Base.Rate>;
}
}

View File

@@ -1,22 +1,22 @@
/** /**
* @file plugins/Hutao/utils/transLocal.ts * @file plugins/Hutao/utils/abyssUtil.ts
* @description * @description
* @since Beta v0.5.5 * @since Beta v0.6.2
*/ */
/** /**
* @description * @description
* @since Beta v0.3.4 * @since Beta v0.6.2
* @param {TGApp.Sqlite.Abyss.SingleTable} data * @param {TGApp.Sqlite.Abyss.SingleTable} data
* @returns {TGApp.Plugins.Hutao.Abyss.RecordUpload} * @returns {TGApp.Plugins.Hutao.Abyss.RecordUpload}
*/ */
export function transLocal( export function transAbyssLocal(
data: TGApp.Sqlite.Abyss.SingleTable, data: TGApp.Sqlite.Abyss.SingleTable,
): TGApp.Plugins.Hutao.Abyss.RecordUpload { ): TGApp.Plugins.Hutao.Abyss.RecordUpload {
return { return {
Uid: data.uid, Uid: data.uid,
Identity: "TeyvatGuide", Identity: "TeyvatGuide",
SpiralAbyss: transAbyss(data), SpiralAbyss: transAbyssData(data),
Avatars: [], Avatars: [],
ReservedUserName: "", ReservedUserName: "",
}; };
@@ -28,7 +28,9 @@ export function transLocal(
* @param {TGApp.Sqlite.Abyss.SingleTable} data * @param {TGApp.Sqlite.Abyss.SingleTable} data
* @returns {TGApp.Plugins.Hutao.Abyss.RecordData} * @returns {TGApp.Plugins.Hutao.Abyss.RecordData}
*/ */
function transAbyss(data: TGApp.Sqlite.Abyss.SingleTable): TGApp.Plugins.Hutao.Abyss.RecordData { function transAbyssData(
data: TGApp.Sqlite.Abyss.SingleTable,
): TGApp.Plugins.Hutao.Abyss.RecordData {
const defeat: TGApp.Sqlite.Abyss.Character = JSON.parse(data.defeatRank)[0]; const defeat: TGApp.Sqlite.Abyss.Character = JSON.parse(data.defeatRank)[0];
const energySkill: TGApp.Sqlite.Abyss.Character = JSON.parse(data.energySkillRank)[0]; const energySkill: TGApp.Sqlite.Abyss.Character = JSON.parse(data.energySkillRank)[0];
const normalSkill: TGApp.Sqlite.Abyss.Character = JSON.parse(data.normalSkillRank)[0]; const normalSkill: TGApp.Sqlite.Abyss.Character = JSON.parse(data.normalSkillRank)[0];
@@ -105,7 +107,7 @@ function transLevel(data: TGApp.Sqlite.Abyss.Level): TGApp.Plugins.Hutao.Abyss.L
* @param {TGApp.Sqlite.Character.UserRole[]} avatars * @param {TGApp.Sqlite.Character.UserRole[]} avatars
* @returns {TGApp.Plugins.Hutao.Abyss.Avatar[]} * @returns {TGApp.Plugins.Hutao.Abyss.Avatar[]}
*/ */
export function transAvatars( export function transAbyssAvatars(
avatars: TGApp.Sqlite.Character.UserRole[], avatars: TGApp.Sqlite.Character.UserRole[],
): TGApp.Plugins.Hutao.Abyss.Avatar[] { ): TGApp.Plugins.Hutao.Abyss.Avatar[] {
return avatars.map((avatar) => { return avatars.map((avatar) => {

View File

@@ -0,0 +1,27 @@
/**
* @file plugins/Hutao/utils/combatUtil.ts
* @description 将本地数据转为上传用的数据
* @since Beta v0.6.2
*/
/**
* @description 将本地数据转为上传用的数据
* @since Beta v0.6.2
* @param {number[]} avatars 角色
* @param {number} schedule 期数
* @param {number} uid UID
* @returns {TGApp.Plugins.Hutao.Combat.UploadData} 上传用的数据
*/
export function transCombatLocal(
avatars: number[],
schedule: number,
uid: string,
): TGApp.Plugins.Hutao.Combat.UploadData {
return {
Version: 1,
Uid: uid,
Identity: "TeyvatGuide",
BackupAvatars: avatars,
ScheduleId: schedule,
};
}