返回提交历史
Added
src/controllers/api/customizeGuildRanksController.ts
+16
-0
Modified
src/models/guildModel.ts
+50
-1
Modified
src/routes/api.ts
+2
-0
Modified
src/services/guildService.ts
+1
-38
Modified
src/types/guildTypes.ts
+22
-0
XFEstudio/XFESpaceNinjaServer
feat: edit clan hierarchy (#1164)
Re #1144 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1164
b7800b6d
代码差异
5 个文件
+91
-39
@@ -0,0 +1,16 @@
1
import { getGuildForRequest } from "@/src/services/guildService";
2
import { IGuildRank } from "@/src/types/guildTypes";
3
import { RequestHandler } from "express";
4
5
export const customizeGuildRanksController: RequestHandler = async (req, res) => {
6
const guild = await getGuildForRequest(req);
7
const payload = JSON.parse(String(req.body)) as ICustomizeGuildRanksRequest;
8
// TODO: Verify permissions
9
guild.Ranks = payload.GuildRanks;
10
await guild.save();
11
res.end();
12
};
13
14
interface ICustomizeGuildRanksRequest {
15
GuildRanks: IGuildRank[];
16
}
@@ -6,7 +6,8 @@ import {
6
6
ILongMOTD,
7
7
IGuildMemberDatabase,
8
8
IGuildLogClassChange,
9
IGuildLogTechChange
9
IGuildLogTechChange,
10
IGuildRank
10
11
} from "@/src/types/guildTypes";
11
12
import { Document, Model, model, Schema, Types } from "mongoose";
12
13
import { fusionTreasuresSchema, typeCountSchema } from "./inventoryModels/inventoryModel";
@@ -58,6 +59,53 @@ const longMOTDSchema = new Schema<ILongMOTD>(
58
59
{ _id: false }
59
60
);
60
61
62
const guildRankSchema = new Schema<IGuildRank>(
63
{
64
Name: String,
65
Permissions: Number
66
},
67
{ _id: false }
68
);
69
70
const defaultRanks: IGuildRank[] = [
71
{
72
Name: "/Lotus/Language/Game/Rank_Creator",
73
Permissions: 16351
74
},
75
{
76
Name: "/Lotus/Language/Game/Rank_Warlord",
77
Permissions: 16351
78
},
79
{
80
Name: "/Lotus/Language/Game/Rank_General",
81
Permissions: 4318
82
},
83
{
84
Name: "/Lotus/Language/Game/Rank_Officer",
85
Permissions: 4314
86
},
87
{
88
Name: "/Lotus/Language/Game/Rank_Leader",
89
Permissions: 4106
90
},
91
{
92
Name: "/Lotus/Language/Game/Rank_Sage",
93
Permissions: 4304
94
},
95
{
96
Name: "/Lotus/Language/Game/Rank_Soldier",
97
Permissions: 4098
98
},
99
{
100
Name: "/Lotus/Language/Game/Rank_Initiate",
101
Permissions: 4096
102
},
103
{
104
Name: "/Lotus/Language/Game/Rank_Utility",
105
Permissions: 4096
106
}
107
];
108
61
109
const guildLogTechChangeSchema = new Schema<IGuildLogTechChange>(
62
110
{
63
111
dateTime: Date,
@@ -81,6 +129,7 @@ const guildSchema = new Schema<IGuildDatabase>(
81
129
Name: { type: String, required: true, unique: true },
82
130
MOTD: { type: String, default: "" },
83
131
LongMOTD: { type: longMOTDSchema, default: undefined },
132
Ranks: { type: [guildRankSchema], default: defaultRanks },
84
133
DojoComponents: { type: [dojoComponentSchema], default: [] },
85
134
DojoCapacity: { type: Number, default: 100 },
86
135
DojoEnergy: { type: Number, default: 5 },
@@ -22,6 +22,7 @@ import { contributeToDojoComponentController } from "@/src/controllers/api/contr
22
22
import { contributeToVaultController } from "@/src/controllers/api/contributeToVaultController";
23
23
import { createGuildController } from "@/src/controllers/api/createGuildController";
24
24
import { creditsController } from "@/src/controllers/api/creditsController";
25
import { customizeGuildRanksController } from "@/src/controllers/api/customizeGuildRanksController";
25
26
import { declineGuildInviteController } from "@/src/controllers/api/declineGuildInviteController";
26
27
import { deleteSessionController } from "@/src/controllers/api/deleteSessionController";
27
28
import { destroyDojoDecoController } from "@/src/controllers/api/destroyDojoDecoController";
@@ -171,6 +172,7 @@ apiRouter.post("/contributeGuildClass.php", contributeGuildClassController);
171
172
apiRouter.post("/contributeToDojoComponent.php", contributeToDojoComponentController);
172
173
apiRouter.post("/contributeToVault.php", contributeToVaultController);
173
174
apiRouter.post("/createGuild.php", createGuildController);
175
apiRouter.post("/customizeGuildRanks.php", customizeGuildRanksController);
174
176
apiRouter.post("/destroyDojoDeco.php", destroyDojoDecoController);
175
177
apiRouter.post("/dojoComponentRush.php", dojoComponentRushController);
176
178
apiRouter.post("/drones.php", dronesController);
@@ -86,44 +86,7 @@ export const getGuildClient = async (guild: TGuildDatabaseDocument, accountId: s
86
86
MOTD: guild.MOTD,
87
87
LongMOTD: guild.LongMOTD,
88
88
Members: members,
89
Ranks: [
90
{
91
Name: "/Lotus/Language/Game/Rank_Creator",
92
Permissions: 16351
93
},
94
{
95
Name: "/Lotus/Language/Game/Rank_Warlord",
96
Permissions: 14303
97
},
98
{
99
Name: "/Lotus/Language/Game/Rank_General",
100
Permissions: 4318
101
},
102
{
103
Name: "/Lotus/Language/Game/Rank_Officer",
104
Permissions: 4314
105
},
106
{
107
Name: "/Lotus/Language/Game/Rank_Leader",
108
Permissions: 4106
109
},
110
{
111
Name: "/Lotus/Language/Game/Rank_Sage",
112
Permissions: 4304
113
},
114
{
115
Name: "/Lotus/Language/Game/Rank_Soldier",
116
Permissions: 4098
117
},
118
{
119
Name: "/Lotus/Language/Game/Rank_Initiate",
120
Permissions: 4096
121
},
122
{
123
Name: "/Lotus/Language/Game/Rank_Utility",
124
Permissions: 4096
125
}
126
],
89
Ranks: guild.Ranks,
127
90
Tier: 1,
128
91
Vault: getGuildVault(guild),
129
92
Class: guild.Class,
@@ -26,6 +26,7 @@ export interface IGuildDatabase {
26
26
Name: string;
27
27
MOTD: string;
28
28
LongMOTD?: ILongMOTD;
29
Ranks: IGuildRank[];
29
30
30
31
DojoComponents: IDojoComponentDatabase[];
31
32
DojoCapacity: number;
@@ -57,6 +58,27 @@ export interface ILongMOTD {
57
58
//authorGuildName: "";
58
59
}
59
60
61
// 32 seems to be reserved
62
export enum GuildPermission {
63
Ruler = 1, // Change clan hierarchy
64
Advertiser = 8192,
65
Recruiter = 2, // Invite members
66
Regulator = 4, // Kick members
67
Promoter = 8, // Promote and demote members
68
Architect = 16, // Create and destroy rooms
69
Decorator = 1024, // Create and destroy decos
70
Treasurer = 64, // Contribute from vault and edit tax rate
71
Tech = 128, // Queue research
72
ChatModerator = 512,
73
Herald = 2048, // Change MOTD
74
Fabricator = 4096 // Replicate research
75
}
76
77
export interface IGuildRank {
78
Name: string;
79
Permissions: number;
80
}
81
60
82
export interface IGuildMemberDatabase {
61
83
accountId: Types.ObjectId;
62
84
guildId: Types.ObjectId;