🐞 fix(gvg): 排行榜添加
This commit is contained in:
@@ -7,7 +7,7 @@ import { Application, BackendSession, ChannelService, HandlerService, pinus } fr
|
|||||||
import { resResult, genCode } from "../../../pubUtils/util";
|
import { resResult, genCode } from "../../../pubUtils/util";
|
||||||
import { GVGLeagueModel } from '../../../db/GVGLeague';
|
import { GVGLeagueModel } from '../../../db/GVGLeague';
|
||||||
import { getGroupKey, getGVGConfig, getGVGPeriodData, getGVGServerType } from '../../../services/gvg/gvgService';
|
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 { getGVGBattleData } from '../../../services/gvg/gvgBattleMemory';
|
||||||
import { GVGBattleRecModel } from '../../../db/GVGBattleRec';
|
import { GVGBattleRecModel } from '../../../db/GVGBattleRec';
|
||||||
import { getFightTimeByPeriod } from '../../../services/gvg/gvgFightService';
|
import { getFightTimeByPeriod } from '../../../services/gvg/gvgFightService';
|
||||||
@@ -662,25 +662,21 @@ export class GVGBattleHandler {
|
|||||||
// 排行榜
|
// 排行榜
|
||||||
async getRanks(msg: {}, session: BackendSession) {
|
async getRanks(msg: {}, session: BackendSession) {
|
||||||
const serverId = session.get('serverId');
|
const serverId = session.get('serverId');
|
||||||
|
const guildCode = session.get('guildCode');
|
||||||
|
const roleId = session.get('roleId');
|
||||||
|
|
||||||
let { configId } = getGVGPeriodData();
|
let { configId } = getGVGPeriodData();
|
||||||
let groupKey = await getGroupKey(serverId);
|
let groupKey = await getGroupKey(serverId);
|
||||||
let cities = await getGVGCitiesInfo(configId, groupKey);
|
let cities = await getGVGCitiesInfo(configId, groupKey);
|
||||||
|
|
||||||
let r = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK, { configId, groupKey });
|
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
||||||
let leagueRanksRaw = await r.getRankByRange();
|
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
|
||||||
let leagueRanks = leagueRanksRaw.map(obj => {
|
|
||||||
if(obj instanceof LeagueRankInfo) return { rank: obj.rank, name: obj.name, score: obj.num }
|
|
||||||
});
|
|
||||||
|
|
||||||
let r2 = new Rank(REDIS_KEY.GVG_BATTLE_RANK, { configId, groupKey });
|
let { myRank: myLeagueRank, ranks: leagueRanks } = await getBattleRank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK, { configId, groupKey }, { leagueCode: myLeague.leagueCode });
|
||||||
let memberRanksRaw = await r2.getRankByRange();
|
let { myRank: myMemberRank, ranks: memberRanks } = await getBattleRank(REDIS_KEY.GVG_BATTLE_RANK, { configId, groupKey }, { roleId });
|
||||||
let memberRanks = memberRanksRaw.map(obj => {
|
|
||||||
if(obj instanceof RoleRankInfo) return { rank: obj.rank, name: obj.roleName, score: obj.num }
|
|
||||||
})
|
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, {
|
return resResult(STATUS.SUCCESS, {
|
||||||
cities, leagueRanks, memberRanks
|
cities, leagueRanks, myLeagueRank, memberRanks, myMemberRank
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import { GVGLeaguePrepareModel } from "../../db/GVGLeaguePrepare";
|
|||||||
import { pinus } from "pinus";
|
import { pinus } from "pinus";
|
||||||
import { dispatch } from "../../pubUtils/dispatcher";
|
import { dispatch } from "../../pubUtils/dispatcher";
|
||||||
import { Rank } from "../rankService";
|
import { Rank } from "../rankService";
|
||||||
import { LeagueRankInfo, RoleRankInfo } from "../../domain/rank";
|
import { KeyNameParam, LeagueRankInfo, myIdInter, RoleRankInfo } from "../../domain/rank";
|
||||||
import { findKeys, getAllServerName } from "../redisService";
|
import { findKeys, getAllServerName } from "../redisService";
|
||||||
import { sendMessageToGVGAreaByTeamWithSuc, sendMessageToGVGAreaWithSuc, sendMessageToGVGCityWithSuc, sendMessageToUserWithSuc } from "../pushService";
|
import { sendMessageToGVGAreaByTeamWithSuc, sendMessageToGVGAreaWithSuc, sendMessageToGVGCityWithSuc, sendMessageToUserWithSuc } from "../pushService";
|
||||||
import { sendMailByContent, sendMailToLeagueByContent } from "../mailService";
|
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 }) {
|
export async function initRobots(configId: number, groupKey: string, city: GVGCityType | { cityId: number, guardLeague: string }) {
|
||||||
let { cityId, guardLeague = '' } = city;
|
let { cityId, guardLeague = '' } = city;
|
||||||
if(guardLeague) return [];
|
if(guardLeague) return [];
|
||||||
let robotTeams = await GVGTeamModel.findRobotTeams(groupKey, cityId);
|
let robotTeams = await GVGTeamModel.findRobotTeams(configId, groupKey, cityId);
|
||||||
let updateDicPoints: DicGVGAreaPoint[] = [];
|
let updateDicPoints: DicGVGAreaPoint[] = [];
|
||||||
let { battleAreaIds = []} = gameData.gvgCity.get(cityId);
|
let { battleAreaIds = []} = gameData.gvgCity.get(cityId);
|
||||||
for(let areaId of battleAreaIds) {
|
for(let areaId of battleAreaIds) {
|
||||||
@@ -645,4 +645,23 @@ export async function pushTeamMoveMessage(team: GVGTeamType) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// —————————— 推送相关 end —————————— //
|
// —————————— 推送相关 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 }
|
||||||
|
}
|
||||||
@@ -205,8 +205,8 @@ export default class GVGTeam extends BaseModel {
|
|||||||
return team;
|
return team;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async findRobotTeams(groupKey: string, cityId: number) {
|
public static async findRobotTeams(configId: number, groupKey: string, cityId: number) {
|
||||||
const team: GVGTeamType[] = await GVGTeamModel.find({ groupKey, cityId, isRobot: true }).lean();
|
const team: GVGTeamType[] = await GVGTeamModel.find({ configId, groupKey, cityId, isRobot: true }).lean();
|
||||||
return team;
|
return team;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user