From d5fa352d06431d7cc34c25df8a536ad32f7ac746 Mon Sep 17 00:00:00 2001 From: luying Date: Tue, 14 Mar 2023 15:25:17 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9E=20fix(gvg):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=86=9C=E5=9C=BA=E5=B8=AE=E6=94=B6=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/servers/guild/handler/gvgProduceHandler.ts | 12 ++++++++++-- shared/db/GVGLeagueFarm.ts | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/game-server/app/servers/guild/handler/gvgProduceHandler.ts b/game-server/app/servers/guild/handler/gvgProduceHandler.ts index ddf870296..7ce207a43 100644 --- a/game-server/app/servers/guild/handler/gvgProduceHandler.ts +++ b/game-server/app/servers/guild/handler/gvgProduceHandler.ts @@ -273,6 +273,9 @@ export class GVGProduceHandler { let { configId, period } = getGVGPeriodData(); if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD); + let dicFarm = gameData.gvgResource.get(farmId); + if(!dicFarm) return resResult(STATUS.DIC_DATA_NOT_FOUND); + let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode); if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST); @@ -284,15 +287,20 @@ export class GVGProduceHandler { // 计算产量 const { foodSum, rewardSum, leagueRewardSum, activeSum } = await sumOutputByResults(resultField); // 资源 - await addResource(myLeague, targetRoleId, resultField[0].lockRoleName, GVG_RESOURCE_TYPE.FOOD, foodSum)||{}; + let resourceResult = await addResource(myLeague, targetRoleId, resultField[0].lockRoleName, GVG_RESOURCE_TYPE.FOOD, foodSum)||{}; await sendMailByContent(MAIL_TYPE.HELP_HARVEST, targetRoleId, { sendName: roleName, goods: rewardSum }); // 相关物品 await addGVGReward(targetRoleId, roleName, myLeague.leagueCode, targetOnlineInfo.sid, leagueRewardSum, [], ITEM_CHANGE_REASON.HARVEST) // 活跃 await addGVGActive(myLeague.leagueCode, targetRoleId, GVG_ACTIVE_TYPE.COST_PRODUCE_COIN, activeSum); + const leagueFarm = resultField.filter(cur => cur.farmId == dicFarm.id && cur.unlockTime >= nowSeconds()); // 已种植单位 + const canHarvestFarms = resultField.filter(cur => dicFarm.type == GVG_RESOURCE_TYPE.FOOD && cur.farmId == dicFarm.id && cur.harvestTime > 0 && cur.harvestTime <= nowSeconds()); + let obj = new LeagueFarmListInfo(dicFarm.id, leagueFarm.length, canHarvestFarms.length > 0); + return resResult(STATUS.SUCCESS, { - ...await getLeagueFarmShowResult(myLeague.leagueCode, roleId, farmId), + ...obj, + ...resourceResult }); } diff --git a/shared/db/GVGLeagueFarm.ts b/shared/db/GVGLeagueFarm.ts index 3c0941f49..ab2ddc616 100644 --- a/shared/db/GVGLeagueFarm.ts +++ b/shared/db/GVGLeagueFarm.ts @@ -148,7 +148,7 @@ export default class GVGLeagueFarm extends BaseModel { const result = await GVGLeagueFarmModel.updateMany({ _id: { $in: _ids } }, { $set: { unlockTime: 0, harvestTime: 0, lockRoleId: '', lockRoleName: '', seedType: 0, index: 0 }}, { new: true }); if(result.modifiedCount == 0) return []; - return fieldResult + return fieldResult.map(cur => ({ ...cur, unlockTime: 0, harvestTime: 0, lockRoleId: '', lockRoleName: '', seedType: 0, index: 0 })) } public static async releaseLock(configId: number, leagueCode: string, farmId: number, roleId: string) {