返回提交历史
Modified
src/controllers/api/guildTechController.ts
+33
-1
XFEstudio/XFESpaceNinjaServer
feat: cancel personal tech project (#1679)
Closes #1665 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1679 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
ed217bae
代码差异
1 个文件
+33
-1
@@ -28,7 +28,7 @@ import { IInventoryChanges } from "@/src/types/purchaseTypes";
28
28
import { config } from "@/src/services/configService";
29
29
import { GuildPermission, ITechProjectClient } from "@/src/types/guildTypes";
30
30
import { GuildMember } from "@/src/models/guildModel";
31
import { toMongoDate } from "@/src/helpers/inventoryHelpers";
31
import { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers";
32
32
import { logger } from "@/src/utils/logger";
33
33
import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
34
34
@@ -305,6 +305,38 @@ export const guildTechController: RequestHandler = async (req, res) => {
305
305
guild.ActiveDojoColorResearch = data.RecipeType;
306
306
await guild.save();
307
307
res.end();
308
} else if (data.Action == "Cancel" && data.CategoryItemId) {
309
const personalTechProjectIndex = inventory.PersonalTechProjects.findIndex(x =>
310
x.CategoryItemId?.equals(data.CategoryItemId)
311
);
312
const personalTechProject = inventory.PersonalTechProjects[personalTechProjectIndex];
313
inventory.PersonalTechProjects.splice(personalTechProjectIndex, 1);
314
315
const meta = ExportDojoRecipes.research[personalTechProject.ItemType];
316
const contributedCredits = meta.price - personalTechProject.ReqCredits;
317
const inventoryChanges = updateCurrency(inventory, contributedCredits * -1, false);
318
inventoryChanges.MiscItems = [];
319
for (const ingredient of meta.ingredients) {
320
const reqItem = personalTechProject.ReqItems.find(x => x.ItemType == ingredient.ItemType);
321
if (reqItem) {
322
const contributedItems = ingredient.ItemCount - reqItem.ItemCount;
323
inventoryChanges.MiscItems.push({
324
ItemType: ingredient.ItemType,
325
ItemCount: contributedItems
326
});
327
}
328
}
329
addMiscItems(inventory, inventoryChanges.MiscItems);
330
331
await inventory.save();
332
res.json({
333
action: "Cancel",
334
isPersonal: true,
335
inventoryChanges: inventoryChanges,
336
personalTech: {
337
ItemId: toOid(personalTechProject._id)
338
}
339
});
308
340
} else if (data.Action == "Rush" && data.CategoryItemId) {
309
341
const inventoryChanges: IInventoryChanges = {
310
342
...updateCurrency(inventory, 20, true),