返回提交历史
Modified
src/controllers/api/contributeGuildClassController.ts
+6
-0
Modified
src/controllers/api/getGuildLogController.ts
+29
-3
Modified
src/models/guildModel.ts
+13
-2
Modified
src/types/guildTypes.ts
+8
-0
XFEstudio/XFESpaceNinjaServer
feat: track ClassChanges in clan log (#1157)
Re #1152 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1157
be6e5ce2
代码差异
4 个文件
+56
-5
@@ -20,6 +20,12 @@ export const contributeGuildClassController: RequestHandler = async (req, res) =
20
20
for (let i = guild.Class; i != guild.CeremonyClass; ++i) {
21
21
guild.CeremonyEndo += (i + 1) * 1000;
22
22
}
23
guild.ClassChanges ??= [];
24
guild.ClassChanges.push({
25
dateTime: new Date(),
26
entryType: 13,
27
details: guild.CeremonyClass
28
});
23
29
}
24
30
25
31
guild.CeremonyContributors.push(new Types.ObjectId(accountId));
@@ -1,11 +1,37 @@
1
import { toMongoDate } from "@/src/helpers/inventoryHelpers";
2
import { Guild } from "@/src/models/guildModel";
3
import { getInventory } from "@/src/services/inventoryService";
4
import { getAccountIdForRequest } from "@/src/services/loginService";
5
import { IMongoDate } from "@/src/types/commonTypes";
1
6
import { RequestHandler } from "express";
2
7
3
export const getGuildLogController: RequestHandler = (_req, res) => {
4
res.json({
8
export const getGuildLogController: RequestHandler = async (req, res) => {
9
const log: Record<string, IGuildLogEntryClient[]> = {
5
10
RoomChanges: [],
6
11
TechChanges: [],
7
12
RosterActivity: [],
8
13
StandingsUpdates: [],
9
14
ClassChanges: []
10
});
15
};
16
const accountId = await getAccountIdForRequest(req);
17
const inventory = await getInventory(accountId);
18
if (inventory.GuildId) {
19
const guild = await Guild.findOne({ _id: inventory.GuildId });
20
if (guild) {
21
guild.ClassChanges?.forEach(entry => {
22
log.ClassChanges.push({
23
dateTime: toMongoDate(entry.dateTime),
24
entryType: entry.entryType,
25
details: entry.details
26
});
27
});
28
}
29
}
30
res.json(log);
11
31
};
32
33
interface IGuildLogEntryClient {
34
dateTime: IMongoDate;
35
entryType: number;
36
details: number | string;
37
}
@@ -5,7 +5,8 @@ import {
5
5
ITechProjectClient,
6
6
IDojoDecoDatabase,
7
7
ILongMOTD,
8
IGuildMemberDatabase
8
IGuildMemberDatabase,
9
IGuildLogClassChange
9
10
} from "@/src/types/guildTypes";
10
11
import { Document, Model, model, Schema, Types } from "mongoose";
11
12
import { fusionTreasuresSchema, typeCountSchema } from "./inventoryModels/inventoryModel";
@@ -69,6 +70,15 @@ const longMOTDSchema = new Schema<ILongMOTD>(
69
70
{ _id: false }
70
71
);
71
72
73
const guildLogClassChangeSchema = new Schema<IGuildLogClassChange>(
74
{
75
dateTime: Date,
76
entryType: Number,
77
details: Number
78
},
79
{ _id: false }
80
);
81
72
82
const guildSchema = new Schema<IGuildDatabase>(
73
83
{
74
84
Name: { type: String, required: true, unique: true },
@@ -89,7 +99,8 @@ const guildSchema = new Schema<IGuildDatabase>(
89
99
CeremonyClass: Number,
90
100
CeremonyContributors: { type: [Types.ObjectId], default: undefined },
91
101
CeremonyResetDate: Date,
92
CeremonyEndo: Number
102
CeremonyEndo: Number,
103
ClassChanges: { type: [guildLogClassChangeSchema], default: undefined }
93
104
},
94
105
{ id: false }
95
106
);
@@ -46,6 +46,8 @@ export interface IGuildDatabase {
46
46
CeremonyEndo?: number;
47
47
CeremonyContributors?: Types.ObjectId[];
48
48
CeremonyResetDate?: Date;
49
50
ClassChanges?: IGuildLogClassChange[];
49
51
}
50
52
51
53
export interface ILongMOTD {
@@ -160,3 +162,9 @@ export interface ITechProjectClient {
160
162
export interface ITechProjectDatabase extends Omit<ITechProjectClient, "CompletionDate"> {
161
163
CompletionDate?: Date;
162
164
}
165
166
export interface IGuildLogClassChange {
167
dateTime: Date;
168
entryType: number;
169
details: number;
170
}