返回提交历史
Modified
src/controllers/api/setGuildMotdController.ts
+40
-16
Modified
src/models/guildModel.ts
+2
-1
Modified
src/services/guildService.ts
+2
-0
Modified
src/types/guildTypes.ts
+1
-2
XFEstudio/XFESpaceNinjaServer
feat: alliance motd (#1438)
Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1438 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
ed10a89c
代码差异
4 个文件
+45
-19
@@ -1,35 +1,59 @@
1
import { Guild } from "@/src/models/guildModel";
2
import { hasGuildPermission } from "@/src/services/guildService";
1
import { Alliance, Guild, GuildMember } from "@/src/models/guildModel";
2
import { hasGuildPermissionEx } from "@/src/services/guildService";
3
3
import { getInventory } from "@/src/services/inventoryService";
4
4
import { getAccountForRequest, getSuffixedName } from "@/src/services/loginService";
5
import { GuildPermission } from "@/src/types/guildTypes";
5
import { GuildPermission, ILongMOTD } from "@/src/types/guildTypes";
6
6
import { RequestHandler } from "express";
7
7
8
8
export const setGuildMotdController: RequestHandler = async (req, res) => {
9
9
const account = await getAccountForRequest(req);
10
10
const inventory = await getInventory(account._id.toString(), "GuildId");
11
11
const guild = (await Guild.findById(inventory.GuildId!))!;
12
if (!(await hasGuildPermission(guild, account._id, GuildPermission.Herald))) {
13
res.status(400).json("Invalid permission");
14
return;
15
}
12
const member = (await GuildMember.findOne({ accountId: account._id, guildId: guild._id }))!;
16
13
17
14
const IsLongMOTD = "longMOTD" in req.query;
18
15
const MOTD = req.body ? String(req.body) : undefined;
19
16
20
if (IsLongMOTD) {
21
if (MOTD) {
22
guild.LongMOTD = {
23
message: MOTD,
24
authorName: getSuffixedName(account)
25
};
17
if ("alliance" in req.query) {
18
if (member.rank > 1) {
19
res.status(400).json("Invalid permission");
20
return;
21
}
22
23
const alliance = (await Alliance.findById(guild.AllianceId!))!;
24
const motd = MOTD
25
? ({
26
message: MOTD,
27
authorName: getSuffixedName(account),
28
authorGuildName: guild.Name
29
} satisfies ILongMOTD)
30
: undefined;
31
if (IsLongMOTD) {
32
alliance.LongMOTD = motd;
26
33
} else {
27
guild.LongMOTD = undefined;
34
alliance.MOTD = motd;
28
35
}
36
await alliance.save();
29
37
} else {
30
guild.MOTD = MOTD ?? "";
38
if (!hasGuildPermissionEx(guild, member, GuildPermission.Herald)) {
39
res.status(400).json("Invalid permission");
40
return;
41
}
42
43
if (IsLongMOTD) {
44
if (MOTD) {
45
guild.LongMOTD = {
46
message: MOTD,
47
authorName: getSuffixedName(account)
48
};
49
} else {
50
guild.LongMOTD = undefined;
51
}
52
} else {
53
guild.MOTD = MOTD ?? "";
54
}
55
await guild.save();
31
56
}
32
await guild.save();
33
57
34
58
res.json({ IsLongMOTD, MOTD });
35
59
};
@@ -71,7 +71,8 @@ const techProjectSchema = new Schema<ITechProjectDatabase>(
71
71
const longMOTDSchema = new Schema<ILongMOTD>(
72
72
{
73
73
message: String,
74
authorName: String
74
authorName: String,
75
authorGuildName: String
75
76
},
76
77
{ _id: false }
77
78
);
@@ -581,6 +581,8 @@ export const getAllianceClient = async (
581
581
return {
582
582
_id: toOid(alliance._id),
583
583
Name: alliance.Name,
584
MOTD: alliance.MOTD,
585
LongMOTD: alliance.LongMOTD,
584
586
Clans: clans,
585
587
AllianceVault: {
586
588
DojoRefundRegularCredits: alliance.VaultRegularCredits
@@ -64,7 +64,7 @@ export interface IGuildDatabase {
64
64
export interface ILongMOTD {
65
65
message: string;
66
66
authorName: string;
67
authorGuildName?: "";
67
authorGuildName?: string;
68
68
}
69
69
70
70
// 32 seems to be reserved
@@ -320,4 +320,3 @@ export interface IAllianceMemberDatabase {
320
320
// TODO: GET /api/divvyAllianceVault.php?accountId=6633b81e9dba0b714f28ff02&nonce=5702391171614479&ct=MSI&guildId=663e9be9f741eeb5782f9df0&allianceId=000000000000000000000069&credits=0
321
321
// TODO: GET /api/removeFromAlliance.php?accountId=6633b81e9dba0b714f28ff02&nonce=5702391171614479&ct=MSI&guildId=663e9be9f741eeb5782f9df0
322
322
// TODO: GET /api/setAllianceGuildPermissions.php?accountId=6633b81e9dba0b714f28ff02&nonce=5702391171614479&ct=MSI&guildId=000000000000000000000042&perms=2
323
// TODO: Handle alliance in setGuildMotd