返回提交历史
Modified
src/controllers/api/dojoComponentRushController.ts
+30
-8
Modified
src/routes/api.ts
+3
-2
XFEstudio/XFESpaceNinjaServer
feat: handle dojoComponentRush get request (#4210)
Closes #4209 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/4210 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
e7161568
代码差异
2 个文件
+33
-10
@@ -9,11 +9,22 @@ import {
9
9
import { getInventory2, updatePlatinum } from "../../services/inventoryService.ts";
10
10
import { getAccountForRequest, getBuildLabel } from "../../services/loginService.ts";
11
11
import type { IDojoContributable } from "../../types/guildTypes.ts";
12
import type { RequestHandler } from "express";
12
import type { RequestHandler, Request, Response } from "express";
13
13
import type { IDojoBuild } from "warframe-public-export-plus";
14
14
import { ExportDojoRecipes } from "warframe-public-export-plus";
15
15
16
type IDojoComponentRushRequest =
16
export const dojoComponentRushGetController: RequestHandler = (req, res) => {
17
return processDojoComponentRush(
18
req,
19
res,
20
req.query.componentId as string,
21
req.query.decoId as string | undefined,
22
parseInt(req.query.contributionAmount as string),
23
parseInt(req.query.vaultContributionAmount as string)
24
);
25
};
26
27
type IDojoComponentRushPostRequest =
17
28
| {
18
29
DecoType?: string;
19
30
DecoId?: string;
@@ -29,7 +40,22 @@ type IDojoComponentRushRequest =
29
40
vaultAmount: number;
30
41
};
31
42
32
export const dojoComponentRushController: RequestHandler = async (req, res) => {
43
export const dojoComponentRushPostController: RequestHandler = (req, res) => {
44
const request = JSON.parse(String(req.body)) as IDojoComponentRushPostRequest;
45
return "ComponentId" in request
46
? processDojoComponentRush(req, res, request.ComponentId, request.DecoId, request.Amount, request.VaultAmount)
47
: processDojoComponentRush(req, res, request.componentId, request.decoId, request.amount, request.vaultAmount);
48
};
49
50
// TODO: Contributions from alliance vault?
51
const processDojoComponentRush = async (
52
req: Request,
53
res: Response,
54
componentId: string,
55
decoId: string | undefined,
56
amount: number,
57
vaultAmount: number
58
): Promise<void> => {
33
59
const account = await getAccountForRequest(req);
34
60
const inventory = await getInventory2(
35
61
account._id,
@@ -44,20 +70,16 @@ export const dojoComponentRushController: RequestHandler = async (req, res) => {
44
70
return;
45
71
}
46
72
const guild = await getGuildForRequestEx(req, inventory);
47
const request = JSON.parse(String(req.body)) as IDojoComponentRushRequest;
48
const component = guild.DojoComponents.id("ComponentId" in request ? request.ComponentId : request.componentId)!;
73
const component = guild.DojoComponents.id(componentId)!;
49
74
50
const amount = "Amount" in request ? request.Amount : request.amount;
51
75
let platinumDonated = amount;
52
76
const inventoryChanges = updatePlatinum(inventory, amount);
53
77
54
const vaultAmount = "VaultAmount" in request ? request.VaultAmount : request.vaultAmount;
55
78
if (vaultAmount) {
56
79
platinumDonated += vaultAmount;
57
80
guild.VaultPremiumCredits! -= vaultAmount;
58
81
}
59
82
60
const decoId = "DecoId" in request ? request.DecoId : "decoId" in request ? request.decoId : undefined;
61
83
if (decoId) {
62
84
const deco = component.Decos!.find(x => x._id.equals(decoId))!;
63
85
const meta = Object.values(ExportDojoRecipes.decos).find(x => x.resultType == deco.Type)!;
@@ -52,7 +52,7 @@ import { deleteSessionController } from "../controllers/api/deleteSessionControl
52
52
import { descentRewardsController } from "../controllers/api/descentRewardsController.ts";
53
53
import { destroyDojoDecoController } from "../controllers/api/destroyDojoDecoController.ts";
54
54
import { divvyAllianceVaultController } from "../controllers/api/divvyAllianceVaultController.ts";
55
import { dojoComponentRushController } from "../controllers/api/dojoComponentRushController.ts";
55
import { dojoComponentRushGetController, dojoComponentRushPostController } from "../controllers/api/dojoComponentRushController.ts";
56
56
import { dronesController } from "../controllers/api/dronesController.ts";
57
57
import { endlessXpController } from "../controllers/api/endlessXpController.ts";
58
58
import { entratiLabConquestModeController } from "../controllers/api/entratiLabConquestModeController.ts";
@@ -218,6 +218,7 @@ apiRouter.get("/declineAllianceInvite.php", declineAllianceInviteController);
218
218
apiRouter.get("/declineGuildInvite.php", declineGuildInviteController);
219
219
apiRouter.get("/deleteSession.php", deleteSessionController);
220
220
apiRouter.get("/divvyAllianceVault.php", divvyAllianceVaultController);
221
apiRouter.get("/dojoComponentRush.php", dojoComponentRushGetController); // ~U9
221
222
apiRouter.get("/drones.php", dronesController);
222
223
apiRouter.get("/getAccountId.php", getAccountIdGetController); // U11
223
224
apiRouter.get("/getAlliance.php", getAllianceController);
@@ -312,7 +313,7 @@ apiRouter.post("/customizeGuildRanks.php", customizeGuildRanksController);
312
313
apiRouter.post("/customObstacleCourseLeaderboard.php", customObstacleCourseLeaderboardController);
313
314
apiRouter.post("/descentRewards.php", descentRewardsController);
314
315
apiRouter.post("/destroyDojoDeco.php", destroyDojoDecoController);
315
apiRouter.post("/dojoComponentRush.php", dojoComponentRushController);
316
apiRouter.post("/dojoComponentRush.php", dojoComponentRushPostController);
316
317
apiRouter.post("/drones.php", dronesController);
317
318
apiRouter.post("/endlessXp.php", endlessXpController);
318
319
apiRouter.post("/entratiLabConquestMode.php", entratiLabConquestModeController);