From 1bb47dd95884f82bfb07b3cc167e7ad55041b4a0 Mon Sep 17 00:00:00 2001 From: luying Date: Wed, 1 Mar 2023 21:12:43 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9E=20fix(gvg):=20=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=E6=A6=9C=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../servers/guild/handler/gvgBattleHandler.ts | 20 ++++++--------- .../app/services/gvg/gvgBattleService.ts | 25 ++++++++++++++++--- shared/db/GVGTeam.ts | 4 +-- 3 files changed, 32 insertions(+), 17 deletions(-) diff --git a/game-server/app/servers/guild/handler/gvgBattleHandler.ts b/game-server/app/servers/guild/handler/gvgBattleHandler.ts index 91fe11304..573dc02a0 100644 --- a/game-server/app/servers/guild/handler/gvgBattleHandler.ts +++ b/game-server/app/servers/guild/handler/gvgBattleHandler.ts @@ -7,7 +7,7 @@ import { Application, BackendSession, ChannelService, HandlerService, pinus } fr import { resResult, genCode } from "../../../pubUtils/util"; import { GVGLeagueModel } from '../../../db/GVGLeague'; import { getGroupKey, getGVGConfig, getGVGPeriodData, getGVGServerType } from '../../../services/gvg/gvgService'; -import { redisAddBattleScore, battleEndSendMessage, calBattleScoreByCe, checkAreaIsInCity, checkGVGBattleStart, checkMoveStatus, getBattleRanksByCity, getBirthAreaOfCity, getGVGWarId, getOppHeroes, getTechKnifeHurt, getTechReviveMinus, initRobots, pushTeamMoveMessage, getGVGCitiesInfo, leaveCity, refreshTeams, checkEnterCityTime, generNewLineup } from '../../../services/gvg/gvgBattleService'; +import { redisAddBattleScore, battleEndSendMessage, calBattleScoreByCe, checkAreaIsInCity, checkGVGBattleStart, checkMoveStatus, getBattleRanksByCity, getBirthAreaOfCity, getGVGWarId, getOppHeroes, getTechKnifeHurt, getTechReviveMinus, initRobots, pushTeamMoveMessage, getGVGCitiesInfo, leaveCity, refreshTeams, checkEnterCityTime, generNewLineup, getBattleRank } from '../../../services/gvg/gvgBattleService'; import { getGVGBattleData } from '../../../services/gvg/gvgBattleMemory'; import { GVGBattleRecModel } from '../../../db/GVGBattleRec'; import { getFightTimeByPeriod } from '../../../services/gvg/gvgFightService'; @@ -662,25 +662,21 @@ export class GVGBattleHandler { // 排行榜 async getRanks(msg: {}, session: BackendSession) { const serverId = session.get('serverId'); + const guildCode = session.get('guildCode'); + const roleId = session.get('roleId'); let { configId } = getGVGPeriodData(); let groupKey = await getGroupKey(serverId); let cities = await getGVGCitiesInfo(configId, groupKey); - let r = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK, { configId, groupKey }); - let leagueRanksRaw = await r.getRankByRange(); - let leagueRanks = leagueRanksRaw.map(obj => { - if(obj instanceof LeagueRankInfo) return { rank: obj.rank, name: obj.name, score: obj.num } - }); + let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode); + if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST); - let r2 = new Rank(REDIS_KEY.GVG_BATTLE_RANK, { configId, groupKey }); - let memberRanksRaw = await r2.getRankByRange(); - let memberRanks = memberRanksRaw.map(obj => { - if(obj instanceof RoleRankInfo) return { rank: obj.rank, name: obj.roleName, score: obj.num } - }) + let { myRank: myLeagueRank, ranks: leagueRanks } = await getBattleRank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK, { configId, groupKey }, { leagueCode: myLeague.leagueCode }); + let { myRank: myMemberRank, ranks: memberRanks } = await getBattleRank(REDIS_KEY.GVG_BATTLE_RANK, { configId, groupKey }, { roleId }); return resResult(STATUS.SUCCESS, { - cities, leagueRanks, memberRanks + cities, leagueRanks, myLeagueRank, memberRanks, myMemberRank }) } diff --git a/game-server/app/services/gvg/gvgBattleService.ts b/game-server/app/services/gvg/gvgBattleService.ts index 3dce63730..cd1e0f675 100644 --- a/game-server/app/services/gvg/gvgBattleService.ts +++ b/game-server/app/services/gvg/gvgBattleService.ts @@ -15,7 +15,7 @@ import { GVGLeaguePrepareModel } from "../../db/GVGLeaguePrepare"; import { pinus } from "pinus"; import { dispatch } from "../../pubUtils/dispatcher"; import { Rank } from "../rankService"; -import { LeagueRankInfo, RoleRankInfo } from "../../domain/rank"; +import { KeyNameParam, LeagueRankInfo, myIdInter, RoleRankInfo } from "../../domain/rank"; import { findKeys, getAllServerName } from "../redisService"; import { sendMessageToGVGAreaByTeamWithSuc, sendMessageToGVGAreaWithSuc, sendMessageToGVGCityWithSuc, sendMessageToUserWithSuc } from "../pushService"; import { sendMailByContent, sendMailToLeagueByContent } from "../mailService"; @@ -117,7 +117,7 @@ export function checkMoveStatus(team: GVGTeamType, cityId: number, areaId: numbe export async function initRobots(configId: number, groupKey: string, city: GVGCityType | { cityId: number, guardLeague: string }) { let { cityId, guardLeague = '' } = city; if(guardLeague) return []; - let robotTeams = await GVGTeamModel.findRobotTeams(groupKey, cityId); + let robotTeams = await GVGTeamModel.findRobotTeams(configId, groupKey, cityId); let updateDicPoints: DicGVGAreaPoint[] = []; let { battleAreaIds = []} = gameData.gvgCity.get(cityId); for(let areaId of battleAreaIds) { @@ -645,4 +645,23 @@ export async function pushTeamMoveMessage(team: GVGTeamType) { } } } -// —————————— 推送相关 end —————————— // \ No newline at end of file +// —————————— 推送相关 end —————————— // + +// 外面页面上的排行榜 +export async function getBattleRank(redisKey: REDIS_KEY, keyParam: KeyNameParam, myId: myIdInter) { + let r = new Rank(redisKey, keyParam); + r.setGenerFieldsFun((obj => { + if(obj instanceof LeagueRankInfo) return { rank: obj.rank, name: obj.name, score: obj.num } + if(obj instanceof RoleRankInfo) return { rank: obj.rank, name: obj.roleName, score: obj.num } + })); + + let { ranks, myRank } = await r.getRankListWithMyRank(myId); + if (!myRank) { + if(redisKey == REDIS_KEY.GVG_BATTLE_RANK) { + myRank = await r.generMyRankWithRole(myId.roleId, 0, 0); + } else if (redisKey == REDIS_KEY.GVG_BATTLE_LEAGUE_RANK) { + myRank = await r.generMyRankWithLeague(myId.leagueCode, 0, 0); + } + } + return { ranks, myRank } +} \ No newline at end of file diff --git a/shared/db/GVGTeam.ts b/shared/db/GVGTeam.ts index 4507f4c06..fab3bf767 100644 --- a/shared/db/GVGTeam.ts +++ b/shared/db/GVGTeam.ts @@ -205,8 +205,8 @@ export default class GVGTeam extends BaseModel { return team; } - public static async findRobotTeams(groupKey: string, cityId: number) { - const team: GVGTeamType[] = await GVGTeamModel.find({ groupKey, cityId, isRobot: true }).lean(); + public static async findRobotTeams(configId: number, groupKey: string, cityId: number) { + const team: GVGTeamType[] = await GVGTeamModel.find({ configId, groupKey, cityId, isRobot: true }).lean(); return team; }