🐞 fix(gvg): 联军资源超过等级要求不让收集

This commit is contained in:
luying
2023-06-25 16:31:58 +08:00
parent dfa91782ad
commit c299cb83ec
3 changed files with 27 additions and 2 deletions

View File

@@ -13,7 +13,7 @@ import { nowSeconds } from "../../../pubUtils/timeUtil";
import { resResult } from "../../../pubUtils/util";
import { getGVGCities } from "../../../services/gvg/gvgBattleService";
import { addGVGReward, getProduceCoinCnt, handleGVGCost } from "../../../services/gvg/gvgItemService";
import { addGVGActive, addResource, getCostSeedReward, getItemIdOfSeedType, getLeagueFarmShowResult, getLockFieldCnt, getmyContributeRank, rollbackUnPlantFields, lockField, calFarmOutput, sumOutputByResults, lockMineOrForestry, calMineOutput, calForestryOutput, checkItemCanUserInFarm } from "../../../services/gvg/gvgPrepareService";
import { addGVGActive, addResource, getCostSeedReward, getItemIdOfSeedType, getLeagueFarmShowResult, getLockFieldCnt, getmyContributeRank, rollbackUnPlantFields, lockField, calFarmOutput, sumOutputByResults, lockMineOrForestry, calMineOutput, calForestryOutput, checkItemCanUserInFarm, checkResourceAndLv } from "../../../services/gvg/gvgPrepareService";
import { getGVGConfig, getGVGPeriodData } from "../../../services/gvg/gvgService";
import { sendMailByContent } from "../../../services/mailService";
import { getAllServerName, getRoleOnlineInfo } from "../../../services/redisService";
@@ -182,6 +182,7 @@ export class GVGProduceHandler {
const cities = await getGVGCities(myLeague);
const leaguePrepare = await GVGLeaguePrepareModel.findByLeague(configId, myLeague.leagueCode);
if(!checkResourceAndLv(leaguePrepare, GVG_RESOURCE_TYPE.FOOD)) return resResult(STATUS.GVG_LV_RESOURCE);
const cost: RewardInter[] = [], updateFields: { fieldId: number, seedType: number, index: number, time: number, output: number, outputStr: string }[] = [];
for(let { fieldId, seedType, index } of seeds) {
@@ -319,6 +320,9 @@ export class GVGProduceHandler {
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
const leaguePrepare = await GVGLeaguePrepareModel.findByLeague(configId, myLeague.leagueCode);
if(!checkResourceAndLv(leaguePrepare, GVG_RESOURCE_TYPE.MINERAL)) return resResult(STATUS.GVG_LV_RESOURCE);
const hasItem = await GVGUserItemModel.checkItemCnt(configId, myLeague.leagueCode, roleId, itemId, 1);
if(!hasItem) return resResult(STATUS.GVG_ITEMS_NOT_ENOUGH);
@@ -448,6 +452,9 @@ export class GVGProduceHandler {
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
const leaguePrepare = await GVGLeaguePrepareModel.findByLeague(configId, myLeague.leagueCode);
if(!checkResourceAndLv(leaguePrepare, GVG_RESOURCE_TYPE.MINERAL)) return resResult(STATUS.GVG_LV_RESOURCE);
const hasItem = await GVGUserItemModel.checkItemCnt(configId, myLeague.leagueCode, roleId, itemId, 1);
if(!hasItem) return resResult(STATUS.GVG_ITEMS_NOT_ENOUGH);

View File

@@ -1,7 +1,7 @@
import { BackendSession } from "pinus";
import { GVG_ACTIVE_TYPE, GVG_ITEM, GVG_PERIOD, GVG_RESOURCE_TYPE, GVG_SEED_TYPE, GVG_TECH_TYPE, ITEM_CHANGE_REASON, LEAGUE_JOB, MAIL_TYPE, PUSH_ROUTE } from "../../consts";
import { GVGLeagueFarmModel, GVGLeagueFarmType } from "../../db/GVGLeagueFarm";
import { GVGLeaguePrepareModel, Tech } from "../../db/GVGLeaguePrepare";
import { GVGLeaguePrepareModel, GVGLeaguePrepareType, Tech } from "../../db/GVGLeaguePrepare";
import { GVGUserDailyDataModel, GVGUserDailyDataType } from "../../db/GVGUserDailyData";
import { Contribute, GVGUserDataModel } from "../../db/GVGUserData";
import { GVGUserItemModel } from "../../db/GVGUserItem";
@@ -156,6 +156,23 @@ export async function addResource(myLeague: GVGLeagueType, roleId: string, roleN
return { resources: league.resources, leagueLv: league.lv, myContribute }
}
export function checkResourceAndLv(gvgPrepare: GVGLeaguePrepareType, type: GVG_RESOURCE_TYPE) {
if(!gvgPrepare) return true;
let { lv, resources } = gvgPrepare;
let dicGVGLeagueLv = gameData.gvgLeagueLv.get(lv);
if(!dicGVGLeagueLv) return false;
if(type == GVG_RESOURCE_TYPE.FOOD) {
return resources.food < dicGVGLeagueLv.food;
} else if (type == GVG_RESOURCE_TYPE.MINERAL) {
return resources.mineral < dicGVGLeagueLv.mineral;
} else if (type == GVG_RESOURCE_TYPE.WOOD) {
return resources.wood < dicGVGLeagueLv.wood;
}
return false
}
function getResourceCnt(resourceType: GVG_RESOURCE_TYPE, count: number) {
switch(resourceType) {
case GVG_RESOURCE_TYPE.FOOD: