返回提交历史
Modified
src/controllers/api/getVendorInfoController.ts
+2
-2
Modified
src/controllers/api/postGuildAdvertisementController.ts
+4
-4
Modified
src/services/purchaseService.ts
+3
-4
Modified
src/services/serversideVendorsService.ts
+10
-10
Modified
src/types/vendorTypes.ts
+1
-1
XFEstudio/SpaceNinjaServer
chore: simplify serversideVendorsService's api (#1467)
Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1467 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
62263efd
代码差异
5 个文件
+20
-21
@@ -1,5 +1,5 @@
1
1
import { RequestHandler } from "express";
2
import { getVendorManifestByTypeName, preprocessVendorManifest } from "@/src/services/serversideVendorsService";
2
import { getVendorManifestByTypeName } from "@/src/services/serversideVendorsService";
3
3
4
4
export const getVendorInfoController: RequestHandler = (req, res) => {
5
5
if (typeof req.query.vendor == "string") {
@@ -7,7 +7,7 @@ export const getVendorInfoController: RequestHandler = (req, res) => {
7
7
if (!manifest) {
8
8
throw new Error(`Unknown vendor: ${req.query.vendor}`);
9
9
}
10
res.json(preprocessVendorManifest(manifest));
10
res.json(manifest);
11
11
} else {
12
12
res.status(400).end();
13
13
}
@@ -9,7 +9,7 @@ import {
9
9
} from "@/src/services/guildService";
10
10
import { getInventory } from "@/src/services/inventoryService";
11
11
import { getAccountIdForRequest } from "@/src/services/loginService";
12
import { getVendorManifestByTypeName, preprocessVendorManifest } from "@/src/services/serversideVendorsService";
12
import { getVendorManifestByTypeName } from "@/src/services/serversideVendorsService";
13
13
import { GuildPermission } from "@/src/types/guildTypes";
14
14
import { IPurchaseParams } from "@/src/types/purchaseTypes";
15
15
import { RequestHandler } from "express";
@@ -26,9 +26,9 @@ export const postGuildAdvertisementController: RequestHandler = async (req, res)
26
26
const payload = getJSONfromString<IPostGuildAdvertisementRequest>(String(req.body));
27
27
28
28
// Handle resource cost
29
const vendor = preprocessVendorManifest(
30
getVendorManifestByTypeName("/Lotus/Types/Game/VendorManifests/Hubs/GuildAdvertisementVendorManifest")!
31
);
29
const vendor = getVendorManifestByTypeName(
30
"/Lotus/Types/Game/VendorManifests/Hubs/GuildAdvertisementVendorManifest"
31
)!;
32
32
const offer = vendor.VendorInfo.ItemManifest.find(x => x.StoreItem == payload.PurchaseParams.StoreItem)!;
33
33
if (getVaultMiscItemCount(guild, offer.ItemPrices![0].ItemType) >= offer.ItemPrices![0].ItemCount) {
34
34
addVaultMiscItems(guild, [
@@ -9,7 +9,7 @@ import {
9
9
updateSlots
10
10
} from "@/src/services/inventoryService";
11
11
import { getRandomWeightedRewardUc } from "@/src/services/rngService";
12
import { getVendorManifestByOid, preprocessVendorManifest } from "@/src/services/serversideVendorsService";
12
import { getVendorManifestByOid } from "@/src/services/serversideVendorsService";
13
13
import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
14
14
import { IPurchaseRequest, IPurchaseResponse, SlotPurchase, IInventoryChanges } from "@/src/types/purchaseTypes";
15
15
import { logger } from "@/src/utils/logger";
@@ -53,9 +53,8 @@ export const handlePurchase = async (
53
53
const prePurchaseInventoryChanges: IInventoryChanges = {};
54
54
let seed: bigint | undefined;
55
55
if (purchaseRequest.PurchaseParams.Source == 7) {
56
const rawManifest = getVendorManifestByOid(purchaseRequest.PurchaseParams.SourceId!);
57
if (rawManifest) {
58
const manifest = preprocessVendorManifest(rawManifest);
56
const manifest = getVendorManifestByOid(purchaseRequest.PurchaseParams.SourceId!);
57
if (manifest) {
59
58
let ItemId: string | undefined;
60
59
if (purchaseRequest.PurchaseParams.ExtraPurchaseInfoJson) {
61
60
ItemId = (JSON.parse(purchaseRequest.PurchaseParams.ExtraPurchaseInfoJson) as { ItemId: string })
@@ -3,14 +3,14 @@ import path from "path";
3
3
import { repoDir } from "@/src/helpers/pathHelper";
4
4
import { CRng, mixSeeds } from "@/src/services/rngService";
5
5
import { IMongoDate } from "@/src/types/commonTypes";
6
import { IVendorManifest, IVendorManifestPreprocessed } from "@/src/types/vendorTypes";
6
import { IRawVendorManifest, IVendorManifestPreprocessed } from "@/src/types/vendorTypes";
7
7
import { JSONParse } from "json-with-bigint";
8
8
9
const getVendorManifestJson = (name: string): IVendorManifest => {
9
const getVendorManifestJson = (name: string): IRawVendorManifest => {
10
10
return JSONParse(fs.readFileSync(path.join(repoDir, `static/fixed_responses/getVendorInfo/${name}.json`), "utf-8"));
11
11
};
12
12
13
const vendorManifests: IVendorManifest[] = [
13
const rawVendorManifests: IRawVendorManifest[] = [
14
14
getVendorManifestJson("ArchimedeanVendorManifest"),
15
15
getVendorManifestJson("DeimosEntratiFragmentVendorProductsManifest"),
16
16
getVendorManifestJson("DeimosFishmongerVendorManifest"),
@@ -44,25 +44,25 @@ const vendorManifests: IVendorManifest[] = [
44
44
getVendorManifestJson("ZarimanCommisionsManifestArchimedean")
45
45
];
46
46
47
export const getVendorManifestByTypeName = (typeName: string): IVendorManifest | undefined => {
48
for (const vendorManifest of vendorManifests) {
47
export const getVendorManifestByTypeName = (typeName: string): IVendorManifestPreprocessed | undefined => {
48
for (const vendorManifest of rawVendorManifests) {
49
49
if (vendorManifest.VendorInfo.TypeName == typeName) {
50
return vendorManifest;
50
return preprocessVendorManifest(vendorManifest);
51
51
}
52
52
}
53
53
return undefined;
54
54
};
55
55
56
export const getVendorManifestByOid = (oid: string): IVendorManifest | undefined => {
57
for (const vendorManifest of vendorManifests) {
56
export const getVendorManifestByOid = (oid: string): IVendorManifestPreprocessed | undefined => {
57
for (const vendorManifest of rawVendorManifests) {
58
58
if (vendorManifest.VendorInfo._id.$oid == oid) {
59
return vendorManifest;
59
return preprocessVendorManifest(vendorManifest);
60
60
}
61
61
}
62
62
return undefined;
63
63
};
64
64
65
export const preprocessVendorManifest = (originalManifest: IVendorManifest): IVendorManifestPreprocessed => {
65
const preprocessVendorManifest = (originalManifest: IRawVendorManifest): IVendorManifestPreprocessed => {
66
66
if (Date.now() >= parseInt(originalManifest.VendorInfo.Expiry.$date.$numberLong)) {
67
67
const manifest = structuredClone(originalManifest);
68
68
const info = manifest.VendorInfo;
@@ -38,7 +38,7 @@ interface IVendorInfoPreprocessed extends Omit<IVendorInfo, "ItemManifest"> {
38
38
ItemManifest: IItemManifestPreprocessed[];
39
39
}
40
40
41
export interface IVendorManifest {
41
export interface IRawVendorManifest {
42
42
VendorInfo: IVendorInfo;
43
43
}
44
44