返回提交历史
Added
src/controllers/api/tradingController.ts
+23
-0
Modified
src/models/guildModel.ts
+1
-0
Modified
src/routes/api.ts
+2
-0
Modified
src/services/guildService.ts
+1
-0
Modified
src/types/guildTypes.ts
+3
-4
XFEstudio/XFESpaceNinjaServer
feat: edit clan tax rate (#1183)
Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1183
25dfbf47
代码差异
5 个文件
+30
-4
@@ -0,0 +1,23 @@
1
import { getGuildForRequestEx, hasAccessToDojo, hasGuildPermission } from "@/src/services/guildService";
2
import { getInventory } from "@/src/services/inventoryService";
3
import { getAccountIdForRequest } from "@/src/services/loginService";
4
import { GuildPermission } from "@/src/types/guildTypes";
5
import { RequestHandler } from "express";
6
7
export const tradingController: RequestHandler = async (req, res) => {
8
const accountId = await getAccountIdForRequest(req);
9
const inventory = await getInventory(accountId, "GuildId LevelKeys");
10
const guild = await getGuildForRequestEx(req, inventory);
11
const op = req.query.op as string;
12
if (op == "5") {
13
if (!hasAccessToDojo(inventory) || !(await hasGuildPermission(guild, accountId, GuildPermission.Treasurer))) {
14
res.status(400).send("-1").end();
15
return;
16
}
17
guild.TradeTax = parseInt(req.query.tax as string);
18
await guild.save();
19
res.send(guild.TradeTax).end();
20
} else {
21
throw new Error(`unknown trading op: ${op}`);
22
}
23
};
@@ -142,6 +142,7 @@ const guildSchema = new Schema<IGuildDatabase>(
142
142
MOTD: { type: String, default: "" },
143
143
LongMOTD: { type: longMOTDSchema, default: undefined },
144
144
Ranks: { type: [guildRankSchema], default: defaultRanks },
145
TradeTax: { type: Number, default: 0 },
145
146
DojoComponents: { type: [dojoComponentSchema], default: [] },
146
147
DojoCapacity: { type: Number, default: 100 },
147
148
DojoEnergy: { type: Number, default: 5 },
@@ -102,6 +102,7 @@ import { surveysController } from "@/src/controllers/api/surveysController";
102
102
import { syndicateSacrificeController } from "@/src/controllers/api/syndicateSacrificeController";
103
103
import { syndicateStandingBonusController } from "@/src/controllers/api/syndicateStandingBonusController";
104
104
import { tauntHistoryController } from "@/src/controllers/api/tauntHistoryController";
105
import { tradingController } from "@/src/controllers/api/tradingController";
105
106
import { trainingResultController } from "@/src/controllers/api/trainingResultController";
106
107
import { unlockShipFeatureController } from "@/src/controllers/api/unlockShipFeatureController";
107
108
import { updateAlignmentController } from "@/src/controllers/api/updateAlignmentController";
@@ -153,6 +154,7 @@ apiRouter.get("/setSupportedSyndicate.php", setSupportedSyndicateController);
153
154
apiRouter.get("/startLibraryDailyTask.php", startLibraryDailyTaskController);
154
155
apiRouter.get("/startLibraryPersonalTarget.php", startLibraryPersonalTargetController);
155
156
apiRouter.get("/surveys.php", surveysController);
157
apiRouter.get("/trading.php", tradingController);
156
158
apiRouter.get("/updateSession.php", updateSessionGetController);
157
159
158
160
// post
@@ -90,6 +90,7 @@ export const getGuildClient = async (guild: TGuildDatabaseDocument, accountId: s
90
90
LongMOTD: guild.LongMOTD,
91
91
Members: members,
92
92
Ranks: guild.Ranks,
93
TradeTax: guild.TradeTax,
93
94
Tier: 1,
94
95
Vault: getGuildVault(guild),
95
96
Class: guild.Class,
@@ -8,10 +8,8 @@ export interface IGuildClient {
8
8
MOTD: string;
9
9
LongMOTD?: ILongMOTD;
10
10
Members: IGuildMemberClient[];
11
Ranks: {
12
Name: string;
13
Permissions: number;
14
}[];
11
Ranks: IGuildRank[];
12
TradeTax: number;
15
13
Tier: number;
16
14
Vault: IGuildVault;
17
15
Class: number;
@@ -27,6 +25,7 @@ export interface IGuildDatabase {
27
25
MOTD: string;
28
26
LongMOTD?: ILongMOTD;
29
27
Ranks: IGuildRank[];
28
TradeTax: number;
30
29
31
30
DojoComponents: IDojoComponentDatabase[];
32
31
DojoCapacity: number;