chore: simplify serversideVendorsService's api (#1467)
Reviewed-on: OpenWF/SpaceNinjaServer#1467 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
parent
f66c958a3c
commit
62263efde3
@ -1,5 +1,5 @@
|
|||||||
import { RequestHandler } from "express";
|
import { RequestHandler } from "express";
|
||||||
import { getVendorManifestByTypeName, preprocessVendorManifest } from "@/src/services/serversideVendorsService";
|
import { getVendorManifestByTypeName } from "@/src/services/serversideVendorsService";
|
||||||
|
|
||||||
export const getVendorInfoController: RequestHandler = (req, res) => {
|
export const getVendorInfoController: RequestHandler = (req, res) => {
|
||||||
if (typeof req.query.vendor == "string") {
|
if (typeof req.query.vendor == "string") {
|
||||||
@ -7,7 +7,7 @@ export const getVendorInfoController: RequestHandler = (req, res) => {
|
|||||||
if (!manifest) {
|
if (!manifest) {
|
||||||
throw new Error(`Unknown vendor: ${req.query.vendor}`);
|
throw new Error(`Unknown vendor: ${req.query.vendor}`);
|
||||||
}
|
}
|
||||||
res.json(preprocessVendorManifest(manifest));
|
res.json(manifest);
|
||||||
} else {
|
} else {
|
||||||
res.status(400).end();
|
res.status(400).end();
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ import {
|
|||||||
} from "@/src/services/guildService";
|
} from "@/src/services/guildService";
|
||||||
import { getInventory } from "@/src/services/inventoryService";
|
import { getInventory } from "@/src/services/inventoryService";
|
||||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||||
import { getVendorManifestByTypeName, preprocessVendorManifest } from "@/src/services/serversideVendorsService";
|
import { getVendorManifestByTypeName } from "@/src/services/serversideVendorsService";
|
||||||
import { GuildPermission } from "@/src/types/guildTypes";
|
import { GuildPermission } from "@/src/types/guildTypes";
|
||||||
import { IPurchaseParams } from "@/src/types/purchaseTypes";
|
import { IPurchaseParams } from "@/src/types/purchaseTypes";
|
||||||
import { RequestHandler } from "express";
|
import { RequestHandler } from "express";
|
||||||
@ -26,9 +26,9 @@ export const postGuildAdvertisementController: RequestHandler = async (req, res)
|
|||||||
const payload = getJSONfromString<IPostGuildAdvertisementRequest>(String(req.body));
|
const payload = getJSONfromString<IPostGuildAdvertisementRequest>(String(req.body));
|
||||||
|
|
||||||
// Handle resource cost
|
// Handle resource cost
|
||||||
const vendor = preprocessVendorManifest(
|
const vendor = getVendorManifestByTypeName(
|
||||||
getVendorManifestByTypeName("/Lotus/Types/Game/VendorManifests/Hubs/GuildAdvertisementVendorManifest")!
|
"/Lotus/Types/Game/VendorManifests/Hubs/GuildAdvertisementVendorManifest"
|
||||||
);
|
)!;
|
||||||
const offer = vendor.VendorInfo.ItemManifest.find(x => x.StoreItem == payload.PurchaseParams.StoreItem)!;
|
const offer = vendor.VendorInfo.ItemManifest.find(x => x.StoreItem == payload.PurchaseParams.StoreItem)!;
|
||||||
if (getVaultMiscItemCount(guild, offer.ItemPrices![0].ItemType) >= offer.ItemPrices![0].ItemCount) {
|
if (getVaultMiscItemCount(guild, offer.ItemPrices![0].ItemType) >= offer.ItemPrices![0].ItemCount) {
|
||||||
addVaultMiscItems(guild, [
|
addVaultMiscItems(guild, [
|
||||||
|
@ -9,7 +9,7 @@ import {
|
|||||||
updateSlots
|
updateSlots
|
||||||
} from "@/src/services/inventoryService";
|
} from "@/src/services/inventoryService";
|
||||||
import { getRandomWeightedRewardUc } from "@/src/services/rngService";
|
import { getRandomWeightedRewardUc } from "@/src/services/rngService";
|
||||||
import { getVendorManifestByOid, preprocessVendorManifest } from "@/src/services/serversideVendorsService";
|
import { getVendorManifestByOid } from "@/src/services/serversideVendorsService";
|
||||||
import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
|
import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
|
||||||
import { IPurchaseRequest, IPurchaseResponse, SlotPurchase, IInventoryChanges } from "@/src/types/purchaseTypes";
|
import { IPurchaseRequest, IPurchaseResponse, SlotPurchase, IInventoryChanges } from "@/src/types/purchaseTypes";
|
||||||
import { logger } from "@/src/utils/logger";
|
import { logger } from "@/src/utils/logger";
|
||||||
@ -53,9 +53,8 @@ export const handlePurchase = async (
|
|||||||
const prePurchaseInventoryChanges: IInventoryChanges = {};
|
const prePurchaseInventoryChanges: IInventoryChanges = {};
|
||||||
let seed: bigint | undefined;
|
let seed: bigint | undefined;
|
||||||
if (purchaseRequest.PurchaseParams.Source == 7) {
|
if (purchaseRequest.PurchaseParams.Source == 7) {
|
||||||
const rawManifest = getVendorManifestByOid(purchaseRequest.PurchaseParams.SourceId!);
|
const manifest = getVendorManifestByOid(purchaseRequest.PurchaseParams.SourceId!);
|
||||||
if (rawManifest) {
|
if (manifest) {
|
||||||
const manifest = preprocessVendorManifest(rawManifest);
|
|
||||||
let ItemId: string | undefined;
|
let ItemId: string | undefined;
|
||||||
if (purchaseRequest.PurchaseParams.ExtraPurchaseInfoJson) {
|
if (purchaseRequest.PurchaseParams.ExtraPurchaseInfoJson) {
|
||||||
ItemId = (JSON.parse(purchaseRequest.PurchaseParams.ExtraPurchaseInfoJson) as { ItemId: string })
|
ItemId = (JSON.parse(purchaseRequest.PurchaseParams.ExtraPurchaseInfoJson) as { ItemId: string })
|
||||||
|
@ -3,14 +3,14 @@ import path from "path";
|
|||||||
import { repoDir } from "@/src/helpers/pathHelper";
|
import { repoDir } from "@/src/helpers/pathHelper";
|
||||||
import { CRng, mixSeeds } from "@/src/services/rngService";
|
import { CRng, mixSeeds } from "@/src/services/rngService";
|
||||||
import { IMongoDate } from "@/src/types/commonTypes";
|
import { IMongoDate } from "@/src/types/commonTypes";
|
||||||
import { IVendorManifest, IVendorManifestPreprocessed } from "@/src/types/vendorTypes";
|
import { IRawVendorManifest, IVendorManifestPreprocessed } from "@/src/types/vendorTypes";
|
||||||
import { JSONParse } from "json-with-bigint";
|
import { JSONParse } from "json-with-bigint";
|
||||||
|
|
||||||
const getVendorManifestJson = (name: string): IVendorManifest => {
|
const getVendorManifestJson = (name: string): IRawVendorManifest => {
|
||||||
return JSONParse(fs.readFileSync(path.join(repoDir, `static/fixed_responses/getVendorInfo/${name}.json`), "utf-8"));
|
return JSONParse(fs.readFileSync(path.join(repoDir, `static/fixed_responses/getVendorInfo/${name}.json`), "utf-8"));
|
||||||
};
|
};
|
||||||
|
|
||||||
const vendorManifests: IVendorManifest[] = [
|
const rawVendorManifests: IRawVendorManifest[] = [
|
||||||
getVendorManifestJson("ArchimedeanVendorManifest"),
|
getVendorManifestJson("ArchimedeanVendorManifest"),
|
||||||
getVendorManifestJson("DeimosEntratiFragmentVendorProductsManifest"),
|
getVendorManifestJson("DeimosEntratiFragmentVendorProductsManifest"),
|
||||||
getVendorManifestJson("DeimosFishmongerVendorManifest"),
|
getVendorManifestJson("DeimosFishmongerVendorManifest"),
|
||||||
@ -44,25 +44,25 @@ const vendorManifests: IVendorManifest[] = [
|
|||||||
getVendorManifestJson("ZarimanCommisionsManifestArchimedean")
|
getVendorManifestJson("ZarimanCommisionsManifestArchimedean")
|
||||||
];
|
];
|
||||||
|
|
||||||
export const getVendorManifestByTypeName = (typeName: string): IVendorManifest | undefined => {
|
export const getVendorManifestByTypeName = (typeName: string): IVendorManifestPreprocessed | undefined => {
|
||||||
for (const vendorManifest of vendorManifests) {
|
for (const vendorManifest of rawVendorManifests) {
|
||||||
if (vendorManifest.VendorInfo.TypeName == typeName) {
|
if (vendorManifest.VendorInfo.TypeName == typeName) {
|
||||||
return vendorManifest;
|
return preprocessVendorManifest(vendorManifest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getVendorManifestByOid = (oid: string): IVendorManifest | undefined => {
|
export const getVendorManifestByOid = (oid: string): IVendorManifestPreprocessed | undefined => {
|
||||||
for (const vendorManifest of vendorManifests) {
|
for (const vendorManifest of rawVendorManifests) {
|
||||||
if (vendorManifest.VendorInfo._id.$oid == oid) {
|
if (vendorManifest.VendorInfo._id.$oid == oid) {
|
||||||
return vendorManifest;
|
return preprocessVendorManifest(vendorManifest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const preprocessVendorManifest = (originalManifest: IVendorManifest): IVendorManifestPreprocessed => {
|
const preprocessVendorManifest = (originalManifest: IRawVendorManifest): IVendorManifestPreprocessed => {
|
||||||
if (Date.now() >= parseInt(originalManifest.VendorInfo.Expiry.$date.$numberLong)) {
|
if (Date.now() >= parseInt(originalManifest.VendorInfo.Expiry.$date.$numberLong)) {
|
||||||
const manifest = structuredClone(originalManifest);
|
const manifest = structuredClone(originalManifest);
|
||||||
const info = manifest.VendorInfo;
|
const info = manifest.VendorInfo;
|
||||||
|
@ -38,7 +38,7 @@ interface IVendorInfoPreprocessed extends Omit<IVendorInfo, "ItemManifest"> {
|
|||||||
ItemManifest: IItemManifestPreprocessed[];
|
ItemManifest: IItemManifestPreprocessed[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IVendorManifest {
|
export interface IRawVendorManifest {
|
||||||
VendorInfo: IVendorInfo;
|
VendorInfo: IVendorInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user