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: "" }, MOTD: { type: String, default: "" },
LongMOTD: { type: longMOTDSchema, default: undefined }, LongMOTD: { type: longMOTDSchema, default: undefined },
Ranks: { type: [guildRankSchema], default: defaultRanks }, Ranks: { type: [guildRankSchema], default: defaultRanks },
TradeTax: { type: Number, default: 0 },
DojoComponents: { type: [dojoComponentSchema], default: [] }, DojoComponents: { type: [dojoComponentSchema], default: [] },
DojoCapacity: { type: Number, default: 100 }, DojoCapacity: { type: Number, default: 100 },
DojoEnergy: { type: Number, default: 5 }, 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 { syndicateSacrificeController } from "@/src/controllers/api/syndicateSacrificeController";
import { syndicateStandingBonusController } from "@/src/controllers/api/syndicateStandingBonusController"; import { syndicateStandingBonusController } from "@/src/controllers/api/syndicateStandingBonusController";
import { tauntHistoryController } from "@/src/controllers/api/tauntHistoryController"; import { tauntHistoryController } from "@/src/controllers/api/tauntHistoryController";
import { tradingController } from "@/src/controllers/api/tradingController";
import { trainingResultController } from "@/src/controllers/api/trainingResultController"; import { trainingResultController } from "@/src/controllers/api/trainingResultController";
import { unlockShipFeatureController } from "@/src/controllers/api/unlockShipFeatureController"; import { unlockShipFeatureController } from "@/src/controllers/api/unlockShipFeatureController";
import { updateAlignmentController } from "@/src/controllers/api/updateAlignmentController"; import { updateAlignmentController } from "@/src/controllers/api/updateAlignmentController";
@ -153,6 +154,7 @@ apiRouter.get("/setSupportedSyndicate.php", setSupportedSyndicateController);
apiRouter.get("/startLibraryDailyTask.php", startLibraryDailyTaskController); apiRouter.get("/startLibraryDailyTask.php", startLibraryDailyTaskController);
apiRouter.get("/startLibraryPersonalTarget.php", startLibraryPersonalTargetController); apiRouter.get("/startLibraryPersonalTarget.php", startLibraryPersonalTargetController);
apiRouter.get("/surveys.php", surveysController); apiRouter.get("/surveys.php", surveysController);
apiRouter.get("/trading.php", tradingController);
apiRouter.get("/updateSession.php", updateSessionGetController); apiRouter.get("/updateSession.php", updateSessionGetController);
// post // post

View File

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

View File

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