返回提交历史
Modified
src/controllers/api/contributeToVaultController.ts
+20
-3
Modified
src/models/guildModel.ts
+2
-1
Modified
src/services/guildService.ts
+4
-1
Modified
src/types/guildTypes.ts
+2
-1
XFEstudio/XFESpaceNinjaServer
feat: donate credits to alliance vault (#1436)
Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1436 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
6dc54ed8
代码差异
4 个文件
+28
-6
@@ -1,4 +1,4 @@
1
import { GuildMember } from "@/src/models/guildModel";
1
import { Alliance, GuildMember } from "@/src/models/guildModel";
2
2
import {
3
3
addGuildMemberMiscItemContribution,
4
4
addVaultMiscItems,
@@ -19,12 +19,27 @@ export const contributeToVaultController: RequestHandler = async (req, res) => {
19
19
const accountId = await getAccountIdForRequest(req);
20
20
const inventory = await getInventory(accountId, "GuildId RegularCredits MiscItems ShipDecorations FusionTreasures");
21
21
const guild = await getGuildForRequestEx(req, inventory);
22
const request = JSON.parse(String(req.body)) as IContributeToVaultRequest;
23
24
if (request.Alliance) {
25
const alliance = (await Alliance.findById(guild.AllianceId!))!;
26
alliance.VaultRegularCredits ??= 0;
27
alliance.VaultRegularCredits += request.RegularCredits;
28
if (request.FromVault) {
29
guild.VaultRegularCredits! -= request.RegularCredits;
30
await Promise.all([guild.save(), alliance.save()]);
31
} else {
32
updateCurrency(inventory, request.RegularCredits, false);
33
await Promise.all([inventory.save(), alliance.save()]);
34
}
35
res.end();
36
return;
37
}
38
22
39
const guildMember = (await GuildMember.findOne(
23
40
{ accountId, guildId: guild._id },
24
41
"RegularCreditsContributed MiscItemsContributed ShipDecorationsContributed"
25
42
))!;
26
const request = JSON.parse(String(req.body)) as IContributeToVaultRequest;
27
28
43
if (request.RegularCredits) {
29
44
updateCurrency(inventory, request.RegularCredits, false);
30
45
@@ -69,4 +84,6 @@ interface IContributeToVaultRequest {
69
84
MiscItems: IMiscItem[];
70
85
ShipDecorations: ITypeCount[];
71
86
FusionTreasures: IFusionTreasure[];
87
Alliance?: boolean;
88
FromVault?: boolean;
72
89
}
@@ -254,7 +254,8 @@ const allianceSchema = new Schema<IAllianceDatabase>({
254
254
Name: String,
255
255
MOTD: longMOTDSchema,
256
256
LongMOTD: longMOTDSchema,
257
Emblem: Boolean
257
Emblem: Boolean,
258
VaultRegularCredits: Number
258
259
});
259
260
260
261
allianceSchema.index({ Name: 1 }, { unique: true });
@@ -581,6 +581,9 @@ export const getAllianceClient = async (
581
581
return {
582
582
_id: toOid(alliance._id),
583
583
Name: alliance.Name,
584
Clans: clans
584
Clans: clans,
585
AllianceVault: {
586
DojoRefundRegularCredits: alliance.VaultRegularCredits
587
}
585
588
};
586
589
};
@@ -282,6 +282,7 @@ export interface IAllianceClient {
282
282
CrossPlatformEnabled?: boolean;
283
283
Clans: IAllianceMemberClient[];
284
284
OriginalPlatform?: number;
285
AllianceVault?: IGuildVault;
285
286
}
286
287
287
288
export interface IAllianceDatabase {
@@ -290,6 +291,7 @@ export interface IAllianceDatabase {
290
291
MOTD?: ILongMOTD;
291
292
LongMOTD?: ILongMOTD;
292
293
Emblem?: boolean;
294
VaultRegularCredits?: number;
293
295
}
294
296
295
297
export interface IAllianceMemberClient {
@@ -318,5 +320,4 @@ export interface IAllianceMemberDatabase {
318
320
// TODO: GET /api/divvyAllianceVault.php?accountId=6633b81e9dba0b714f28ff02&nonce=5702391171614479&ct=MSI&guildId=663e9be9f741eeb5782f9df0&allianceId=000000000000000000000069&credits=0
319
321
// TODO: GET /api/removeFromAlliance.php?accountId=6633b81e9dba0b714f28ff02&nonce=5702391171614479&ct=MSI&guildId=663e9be9f741eeb5782f9df0
320
322
// TODO: GET /api/setAllianceGuildPermissions.php?accountId=6633b81e9dba0b714f28ff02&nonce=5702391171614479&ct=MSI&guildId=000000000000000000000042&perms=2
321
// TODO: Handle alliance in contributeToVault
322
323
// TODO: Handle alliance in setGuildMotd