feat: edit clan tax rate #1183

Merged
Sainan merged 1 commits from clan-tax-rate into main 2025-03-15 03:21:41 -07:00
5 changed files with 30 additions and 4 deletions

View File

@ -0,0 +1,23 @@
import { getGuildForRequestEx, hasAccessToDojo, hasGuildPermission } from "@/src/services/guildService";
import { getInventory } from "@/src/services/inventoryService";
import { getAccountIdForRequest } from "@/src/services/loginService";
import { GuildPermission } from "@/src/types/guildTypes";
import { RequestHandler } from "express";
export const tradingController: RequestHandler = async (req, res) => {
const accountId = await getAccountIdForRequest(req);
const inventory = await getInventory(accountId, "GuildId LevelKeys");
const guild = await getGuildForRequestEx(req, inventory);
const op = req.query.op as string;
if (op == "5") {
if (!hasAccessToDojo(inventory) || !(await hasGuildPermission(guild, accountId, GuildPermission.Treasurer))) {
res.status(400).send("-1").end();
return;
}
guild.TradeTax = parseInt(req.query.tax as string);
await guild.save();
res.send(guild.TradeTax).end();
} else {
throw new Error(`unknown trading op: ${op}`);
}
};

View File

@ -142,6 +142,7 @@ const guildSchema = new Schema<IGuildDatabase>(
MOTD: { type: String, default: "" },
LongMOTD: { type: longMOTDSchema, default: undefined },
Ranks: { type: [guildRankSchema], default: defaultRanks },
TradeTax: { type: Number, default: 0 },
DojoComponents: { type: [dojoComponentSchema], default: [] },
DojoCapacity: { type: Number, default: 100 },
DojoEnergy: { type: Number, default: 5 },

View File

@ -102,6 +102,7 @@ import { surveysController } from "@/src/controllers/api/surveysController";
import { syndicateSacrificeController } from "@/src/controllers/api/syndicateSacrificeController";
import { syndicateStandingBonusController } from "@/src/controllers/api/syndicateStandingBonusController";
import { tauntHistoryController } from "@/src/controllers/api/tauntHistoryController";
import { tradingController } from "@/src/controllers/api/tradingController";
import { trainingResultController } from "@/src/controllers/api/trainingResultController";
import { unlockShipFeatureController } from "@/src/controllers/api/unlockShipFeatureController";
import { updateAlignmentController } from "@/src/controllers/api/updateAlignmentController";
@ -153,6 +154,7 @@ apiRouter.get("/setSupportedSyndicate.php", setSupportedSyndicateController);
apiRouter.get("/startLibraryDailyTask.php", startLibraryDailyTaskController);
apiRouter.get("/startLibraryPersonalTarget.php", startLibraryPersonalTargetController);
apiRouter.get("/surveys.php", surveysController);
apiRouter.get("/trading.php", tradingController);
apiRouter.get("/updateSession.php", updateSessionGetController);
// post

View File

@ -90,6 +90,7 @@ export const getGuildClient = async (guild: TGuildDatabaseDocument, accountId: s
LongMOTD: guild.LongMOTD,
Members: members,
Ranks: guild.Ranks,
TradeTax: guild.TradeTax,
Tier: 1,
Vault: getGuildVault(guild),
Class: guild.Class,

View File

@ -8,10 +8,8 @@ export interface IGuildClient {
MOTD: string;
LongMOTD?: ILongMOTD;
Members: IGuildMemberClient[];
Ranks: {
Name: string;
Permissions: number;
}[];
Ranks: IGuildRank[];
TradeTax: number;
Tier: number;
Vault: IGuildVault;
Class: number;
@ -27,6 +25,7 @@ export interface IGuildDatabase {
MOTD: string;
LongMOTD?: ILongMOTD;
Ranks: IGuildRank[];
TradeTax: number;
DojoComponents: IDojoComponentDatabase[];
DojoCapacity: number;