diff --git a/game-server/app/servers/guild/handler/gvgFightHandler.ts b/game-server/app/servers/guild/handler/gvgFightHandler.ts index 3d402c3d8..6efedccb5 100644 --- a/game-server/app/servers/guild/handler/gvgFightHandler.ts +++ b/game-server/app/servers/guild/handler/gvgFightHandler.ts @@ -17,7 +17,7 @@ import { GVG } from "../../../pubUtils/dicParam"; import { RewardInter } from "../../../pubUtils/interface"; import { resResult } from "../../../pubUtils/util"; import { isHeroHidden } from "../../../services/dataService"; -import { calBreakGoods, checkHeroIsUsedInOtherVestige, checkVestige, checkVestigeOppStatus, checkVestigeRank, generateAttackHeroInfo, generateAttackInfo, generateDefenseInfo, getDayKeyInfo, getMyVestigeRank, getOppDetailData, getOppPlayerByRanks, getVestigeRecStatus, getVestigeRank, getVestigeUsedHeroes, isRobot, refreshVestigeOppRanks, saveScoreToRank, updateMyVestigeRank, saveVestigeRankSchedule, calVestigeLeagueBoxRewards, checkFightTime } from "../../../services/gvg/gvgFightService"; +import { calBreakGoods, checkHeroIsUsedInOtherVestige, checkVestige, checkVestigeOppStatus, checkVestigeRank, generateAttackHeroInfo, generateAttackInfo, generateDefenseInfo, getDayKeyInfo, getMyVestigeRank, getOppDetailData, getOppPlayerByRanks, getVestigeRecStatus, getVestigeRank, getVestigeUsedHeroes, isRobot, refreshVestigeOppRanks, saveScoreToRank, updateMyVestigeRank, saveVestigeRankSchedule, calVestigeLeagueBoxRewards, checkFightTime, savePlayerRank } from "../../../services/gvg/gvgFightService"; import { addGVGReward, combinePushItem, handleGVGCost } from "../../../services/gvg/gvgItemService"; import { addGVGActive } from "../../../services/gvg/gvgPrepareService"; import { addVestigeBattleEndRec } from "../../../services/gvg/gvgRecService"; @@ -516,4 +516,43 @@ export class GVGProduceHandler { await saveVestigeRankSchedule(); return resResult(STATUS.SUCCESS); } + + async debugSetMyRank(msg: { vestigeId: number, rank: number }, session: BackendSession) { + const { vestigeId, rank } = msg; + + let roleId = session.get('roleId'); + let serverId = session.get('serverId'); + let guildCode = session.get('guildCode'); + + let groupId = await getGroupIdOfServer(serverId); + let serverType = await getGVGServerType(serverId); + let { configId } = getGVGPeriodData(); + + const myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode); + if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST); + + let myData = await getMyVestigeRank(configId, groupId, serverType, vestigeId, roleId, myLeague) + let myRank = myData?.rank||0; + + let targetData = await GVGVestigeRankModel.findByRank(configId, groupId, serverType, vestigeId, rank); + if(targetData) { + myData = await GVGVestigeRankModel.updateByRoleId(vestigeId, roleId, { rank, oldRank: myRank, historyRank: rank }); + targetData = await GVGVestigeRankModel.updateByRoleId(vestigeId, targetData.roleId, { rank: myRank, oldRank: rank }); + } else { + myData = await GVGVestigeRankModel.updateByRoleId(vestigeId, roleId, { rank, oldRank: myRank, historyRank: rank }); + } + await savePlayerRank(configId, groupId, serverType, vestigeId, { isRobot: false, newRank: rank, oldRank: myRank, roleId, leagueCode: myLeague.leagueCode }); + if(targetData) { + await savePlayerRank(configId, groupId, serverType, vestigeId, { isRobot: false, newRank: targetData.rank, oldRank: rank, roleId: targetData.roleId, leagueCode: targetData.leagueCode }); + } + + return resResult(STATUS.SUCCESS); + } + + async debugSetMyOpp(msg: { vestigeId: number, oppRanks: number[] }, session: BackendSession) { + const { vestigeId, oppRanks } = msg; + let roleId = session.get('roleId'); + await GVGVestigeRankModel.updateByRoleId(vestigeId, roleId, { oppRanks }); + return resResult(STATUS.SUCCESS); + } } \ No newline at end of file diff --git a/game-server/app/servers/guild/handler/gvgProduceHandler.ts b/game-server/app/servers/guild/handler/gvgProduceHandler.ts index 6e4c16d4d..3b0f66ef7 100644 --- a/game-server/app/servers/guild/handler/gvgProduceHandler.ts +++ b/game-server/app/servers/guild/handler/gvgProduceHandler.ts @@ -520,4 +520,18 @@ export class GVGProduceHandler { return resResult(STATUS.SUCCESS, resourceResult); } + + // 设置农田的收获时间 + async debugAdjustHarvest(msg: { time: number }, session: BackendSession) { + const guildCode = session.get('guildCode'); + const { time } = msg; + + let { configId } = getGVGPeriodData(); + let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode); + if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST); + + await GVGLeagueFarmModel.setMyHarvestTime(configId, myLeague.leagueCode, time); + + return resResult(STATUS.SUCCESS); + } } \ No newline at end of file diff --git a/game-server/app/services/checkParam.ts b/game-server/app/services/checkParam.ts index dc0ddb20a..a83fbdc10 100644 --- a/game-server/app/services/checkParam.ts +++ b/game-server/app/services/checkParam.ts @@ -1998,6 +1998,9 @@ export function checkRouteParam(route: string, msg: any) { case "guild.gvgFightHandler.debugCalRec": case "guild.gvgFightHandler.debugSaveScore": case "guild.gvgBattleHandler.createCity": + case "guild.gvgProduceHandler.debugAdjustHarvest": + case "guild.gvgFightHandler.debugSetMyRank": + case "guild.gvgFightHandler.debugSetMyOpp": { if (msg.magicWord !== DEBUG_MAGIC_WORD || !isDevelopEnv()) return false; diff --git a/game-server/app/services/gvg/gvgFightService.ts b/game-server/app/services/gvg/gvgFightService.ts index 8e5623063..e81c1b5ee 100644 --- a/game-server/app/services/gvg/gvgFightService.ts +++ b/game-server/app/services/gvg/gvgFightService.ts @@ -166,7 +166,7 @@ export async function checkVestigeOppStatus(configId: number, groupId: number, s if(!myData || myData.rank != myRank) return VESTIGE_OPP_STATUS.MY_RANK_CHANGE; if(isRobot(targetRoleId)) { - let targetData = await GVGVestigeRankModel.findByRank(vestigeId, rank); + let targetData = await GVGVestigeRankModel.findByRank(configId, groupId, serverType, vestigeId, rank); if(targetData) return VESTIGE_OPP_STATUS.OPP_RANK_CHANGE; } else { let targetData = await GVGVestigeRankModel.findByRole(vestigeId, targetRoleId); @@ -328,7 +328,7 @@ export function getDayKeyInfo() { return moment().format('YYMMDD'); } -async function savePlayerRank(configId: number, groupId: number, serverType: number, vestigeId: number, playerInfo: OppPlayerInfo) { +export async function savePlayerRank(configId: number, groupId: number, serverType: number, vestigeId: number, playerInfo: Partial) { if(playerInfo.isRobot) return let dicRankMap = gameData.gvgVestige.get(vestigeId); let newRank = dicRankMap?.get(playerInfo.newRank)?.score||0; @@ -351,7 +351,7 @@ export async function getVestigeRank(redisKey: REDIS_KEY, isSimple: boolean, key if(isSimple) { return { rank: obj.rank, name: obj.name, score: obj.num } } else { - return { ...obj, leader: {...obj.leader, serverName: serverNames[obj.leader.serverId]}}; + return { ...obj, score: obj.num, leader: {...obj.leader, serverName: serverNames[obj.leader.serverId]}}; } } return obj diff --git a/shared/db/GVGLeagueFarm.ts b/shared/db/GVGLeagueFarm.ts index 7a81f7ef4..87c05c479 100644 --- a/shared/db/GVGLeagueFarm.ts +++ b/shared/db/GVGLeagueFarm.ts @@ -176,6 +176,11 @@ export default class GVGLeagueFarm extends BaseModel { { new: true }).lean(); return result; } + + public static async setMyHarvestTime(configId: number, leagueCode: string, time: number) { + console.log(configId, leagueCode, nowSeconds(), time) + await GVGLeagueFarmModel.updateMany({ configId, leagueCode, harvestTime: { $gt: nowSeconds() } }, { $set: { harvestTime: nowSeconds() + time }}); + } } export const GVGLeagueFarmModel = getModelForClass(GVGLeagueFarm);