feat(gvg): 玩家驻扎排行榜

This commit is contained in:
luying
2023-02-17 10:58:45 +08:00
parent 92191cbcca
commit fc2a86ad81
16 changed files with 190 additions and 61 deletions
@@ -1,5 +1,5 @@
import { Application, BackendSession, ChannelService, HandlerService, pinus } from "pinus";
import { GVG_ACTIVE_TYPE, GVG_ITEM, GVG_PERIOD, ITEM_CHANGE_REASON, STATUS, VESTIGE_OPP_STATUS, VESTIGE_STATUS, WAR_TYPE } from "../../../consts";
import { GVG_ACTIVE_TYPE, GVG_ITEM, GVG_PERIOD, ITEM_CHANGE_REASON, REDIS_KEY, ROLE_SELECT, STATUS, VESTIGE_OPP_STATUS, VESTIGE_STATUS, WAR_TYPE } from "../../../consts";
import { BattleRecordModel } from "../../../db/BattleRecord";
import { GVGLeagueModel } from "../../../db/GVGLeague";
import { GVGUserItemModel } from "../../../db/GVGUserItem";
@@ -8,7 +8,8 @@ import { GVGVestigeRankModel } from "../../../db/GVGVestigeRank";
import { GVGVestigeRecModel, GVGVestigeRecUpdate } from "../../../db/GVGVestigeRec";
import { HeroModel } from "../../../db/Hero";
import { RoleModel } from "../../../db/Role";
import { GVGVestigeOppLineup } from "../../../domain/gvgField/returnData";
import { GVGVestigeOppLineup, VestigeRank } from "../../../domain/gvgField/returnData";
import { RoleRankInfo } from "../../../domain/rank";
import { getRemoteRplFilePath, getRemoteRplPrefix } from "../../../pubUtils/battleUtils";
import { gameData } from "../../../pubUtils/data";
import { GVG } from "../../../pubUtils/dicParam";
@@ -17,8 +18,9 @@ import { isHeroHidden } from "../../../services/dataService";
import { calBreakGoods, checkHeroIsUsedInOtherVestige, checkVestige, checkVestigeOppStatus, checkVestigeRank, generateAttackHeroInfo, generateAttackInfo, generateDefenseInfo, getOppDetailData, getOppPlayerByRanks, getVestigeRecStatus, getVestigeUsedHeroes, isRobot, refreshVestigeOppRanks, updateMyVestigeRank } from "../../../services/gvg/gvgFightService";
import { addGVGReward, handleGVGCost } from "../../../services/gvg/gvgItemService";
import { addGVGActive } from "../../../services/gvg/gvgPrepareService";
import { getGroupIdOfServer, getGVGPeriodData } from "../../../services/gvg/gvgService";
import { getGroupIdOfServer, getGVGPeriodData, getGVGServerType } from "../../../services/gvg/gvgService";
import { checkBattleHeroesByHid } from "../../../services/normalBattleService";
import { Rank } from "../../../services/rankService";
import { getAllServerName } from "../../../services/redisService";
export default function (app: Application) {
@@ -45,6 +47,8 @@ export class GVGProduceHandler {
return resResult(STATUS.GVG_VESTIGE_ERR);
}
let groupId = await getGroupIdOfServer(serverId);
let serverType = await getGVGServerType(serverId);
let dicRankMap = gameData.gvgVestige.get(vestigeId);
if(!dicRankMap) return resResult(STATUS.DIC_DATA_NOT_FOUND);
@@ -52,13 +56,13 @@ export class GVGProduceHandler {
if(!myVestigeRank) {
let role = await RoleModel.findByRoleId(roleId, 'roleId');
let oppRanks = refreshVestigeOppRanks(-1);
myVestigeRank = await GVGVestigeRankModel.initRank(configId, vestigeId, groupId, role, oppRanks );
myVestigeRank = await GVGVestigeRankModel.initRank(configId, vestigeId, groupId, serverType, role, oppRanks );
}
let { rank, lineup, oppRanks, refreshCnt } = myVestigeRank;
let score = dicRankMap?.get(rank)||0;
let lineupCe = lineup.reduce((pre, cur) => pre + cur.ce, 0);
let oppPlayers = await getOppPlayerByRanks(serverId, groupId, vestigeId, oppRanks);
let oppPlayers = await getOppPlayerByRanks(serverId, groupId, serverType, vestigeId, oppRanks);
let usedHeroes = await getVestigeUsedHeroes(roleId, vestigeId);
return resResult(STATUS.SUCCESS, {
@@ -82,12 +86,13 @@ export class GVGProduceHandler {
let { configId, period } = getGVGPeriodData();
if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
let groupId = await getGroupIdOfServer(serverId);
let serverType = await getGVGServerType(serverId);
let myVestigeRank = await GVGVestigeRankModel.findByRole(vestigeId, roleId); // 我在这个遗迹的排名
if(!myVestigeRank) {
let role = await RoleModel.findByRoleId(roleId, 'roleId');
let oppRanks = refreshVestigeOppRanks(-1);
myVestigeRank = await GVGVestigeRankModel.initRank(configId, vestigeId, groupId, role, oppRanks );
myVestigeRank = await GVGVestigeRankModel.initRank(configId, vestigeId, groupId, serverType, role, oppRanks );
}
for(let { actorId } of heroes) {
@@ -155,12 +160,13 @@ export class GVGProduceHandler {
let { configId, period } = getGVGPeriodData();
if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
let groupId = await getGroupIdOfServer(serverId);
let serverType = await getGVGServerType(serverId);
let myVestigeRank = await GVGVestigeRankModel.findByRole(vestigeId, roleId); // 我在这个遗迹的排名
if(!myVestigeRank) {
let role = await RoleModel.findByRoleId(roleId, 'roleId');
let oppRanks = refreshVestigeOppRanks(-1);
myVestigeRank = await GVGVestigeRankModel.initRank(configId, vestigeId, groupId, role, oppRanks );
myVestigeRank = await GVGVestigeRankModel.initRank(configId, vestigeId, groupId, serverType, role, oppRanks );
}
let refreshCnt = myVestigeRank.refreshCnt||0;
@@ -169,7 +175,7 @@ export class GVGProduceHandler {
let oppRanks = refreshVestigeOppRanks(myVestigeRank.rank);
myVestigeRank = await GVGVestigeRankModel.refreshOpp(roleId, vestigeId, oppRanks );
let oppPlayers = await getOppPlayerByRanks(serverId, groupId, vestigeId, myVestigeRank.oppRanks);
let oppPlayers = await getOppPlayerByRanks(serverId, groupId, serverType, vestigeId, myVestigeRank.oppRanks);
// 返回
return resResult(STATUS.SUCCESS, { vestigeId, refreshCnt: myVestigeRank.refreshCnt, oppPlayers });
@@ -200,18 +206,19 @@ export class GVGProduceHandler {
const hasItem = await GVGUserItemModel.checkItemCnt(configId, myLeague.leagueCode, roleId, GVG_ITEM.FIGHT_COIN, 1);
if(!hasItem) return resResult(STATUS.GVG_ITEMS_NOT_ENOUGH);
const groupId = await getGroupIdOfServer(serverId);
let serverType = await getGVGServerType(serverId);
let status = await checkVestigeOppStatus(configId, groupId, vestigeId, roleId, myRank, targetRoleId, rank); // 锁
let status = await checkVestigeOppStatus(configId, groupId, serverType, vestigeId, roleId, myRank, targetRoleId, rank); // 锁
if(status != VESTIGE_OPP_STATUS.BATTLE) {
let oppRanks = refreshVestigeOppRanks(myRank);
let oppPlayers = await getOppPlayerByRanks(serverId, groupId, vestigeId, oppRanks);
let oppPlayers = await getOppPlayerByRanks(serverId, groupId, serverType, vestigeId, oppRanks);
return resResult(STATUS.SUCCESS, { status, oppPlayers });
}
// 扣征战令
const costResult = await handleGVGCost(roleId, myLeague.leagueCode, sid, [{ id: GVG_ITEM.FIGHT_COIN, count: 1 }], [], ITEM_CHANGE_REASON.GVG_VESTIGE_START);
if(!costResult) {
await GVGVestigeLockModel.releaseLock(groupId, vestigeId, rank);
await GVGVestigeLockModel.releaseLock(groupId, serverType, vestigeId, rank);
return resResult(STATUS.GVG_ITEMS_NOT_ENOUGH);
}
// 获取征战令对应奖励
@@ -221,7 +228,7 @@ export class GVGProduceHandler {
// 创建rec
const attackInfo = await generateAttackInfo(roleId, myRank);
const defenseInfo = await generateDefenseInfo(targetRoleId, vestigeId, rank);
const rec = await GVGVestigeRecModel.createRec(configId, vestigeId, groupId, dicRank.warId, attackInfo, defenseInfo, leagueGoods);
const rec = await GVGVestigeRecModel.createRec(configId, vestigeId, groupId, serverType, dicRank.warId, attackInfo, defenseInfo, leagueGoods);
const oppDetail = await getOppDetailData(rec);
return resResult(STATUS.SUCCESS, {
@@ -237,7 +244,7 @@ export class GVGProduceHandler {
// 更新ladderMatchRec
let rec = await GVGVestigeRecModel.giveup(roleId, battleCode);
if(rec && rec.defenseInfo) {
await GVGVestigeLockModel.releaseLock(rec.groupId, rec.vestigeId, rec.defenseInfo.oldRank);
await GVGVestigeLockModel.releaseLock(rec.groupId, rec.serverType, rec.vestigeId, rec.defenseInfo.oldRank);
}
return resResult(STATUS.SUCCESS, {
@@ -283,7 +290,8 @@ export class GVGProduceHandler {
// 更新锁
const groupId = await getGroupIdOfServer(serverId);
let lock = await GVGVestigeLockModel.checkBattleLock(groupId, vestigeId, rank, roleId);
let serverType = await getGVGServerType(serverId);
let lock = await GVGVestigeLockModel.checkBattleLock(groupId, serverType, vestigeId, rank, roleId);
if(!lock) return resResult(STATUS.GVG_VESTIGE_CHECK_BATTLE_STATUS_ERR);
// 向vestigerec保存阵容
@@ -327,7 +335,7 @@ export class GVGProduceHandler {
// 更新vestigeRec
rec = await GVGVestigeRecModel.battleEnd(battleCode, isSuccess, endTime, atkData?.rank, defData?.rank||rec.attackInfo.oldRank);
// 更新锁
await GVGVestigeLockModel.releaseLock(rec.groupId, rec.vestigeId, rec.defenseInfo.oldRank);
await GVGVestigeLockModel.releaseLock(rec.groupId, rec.serverType, rec.vestigeId, rec.defenseInfo.oldRank);
// 更新battleRecord
await BattleRecordModel.updateBattleRecordByCode(battleCode, { $set: { status: isSuccess? 1: 2 } });
@@ -345,7 +353,7 @@ export class GVGProduceHandler {
score: gameData.gvgVestige.get(rec.vestigeId)?.get(atkData.rank)?.score,
historyRank: atkData.historyRank,
...getVestigeRecStatus(rec),
oppPlayers: await getOppPlayerByRanks(serverId, rec.groupId, rec.vestigeId, atkData.oppRanks),
oppPlayers: await getOppPlayerByRanks(serverId, rec.groupId, rec.serverType, rec.vestigeId, atkData.oppRanks),
breakGoods,
lineup: atkData.lineup,
lineupCe: atkData.lineup.reduce((pre, cur) => pre + cur.ce, 0),
@@ -382,6 +390,44 @@ export class GVGProduceHandler {
// 玩家排行
async getPlayerRank(msg: { vestigeId: number }, session: BackendSession) {
let roleId = session.get('roleId');
let serverId = session.get('serverId');
let { vestigeId } = msg;
let groupId = await getGroupIdOfServer(serverId);
let serverType = await getGVGServerType(serverId);
let dicRankMap = gameData.gvgVestige.get(vestigeId);
let serverNames = await getAllServerName();
let vestigeRanks = await GVGVestigeRankModel.findRankByVestige(groupId, serverType, vestigeId);
let r = new Rank(REDIS_KEY.GVG_VESTIGE_MEMBER, { groupId, serverType, vestigeId });
let ranks: VestigeRank[] = [], myRank: VestigeRank;
for(let { roleId, rank, lineup } of vestigeRanks) {
let param = <RoleRankInfo>await r.getParam(rank, roleId, [rank]);
if(!param) {
let role = await RoleModel.findByRoleId(roleId, ROLE_SELECT.RANK);
await r.generParamAndSet(REDIS_KEY.USER_INFO, { roleId }, { role });
param = <RoleRankInfo>await r.getParam(rank, roleId, [rank]);
}
let lineupCe = lineup.reduce((pre, cur) => pre + cur.ce, 0);
let serverName = serverNames[param.serverId];
let score = dicRankMap?.get(param.rank)?.score||0;
let obj = new VestigeRank();
obj.setByRankParam(param, serverName, lineupCe, score);
if(obj.roleId == roleId) myRank = obj;
ranks.push(obj);
}
if(!myRank) {
let obj = new VestigeRank();
let role = await RoleModel.findByRoleId(roleId, ROLE_SELECT.RANK);
obj.setByRole(role, serverNames[serverId]);
myRank = obj;
}
return resResult(STATUS.SUCCESS, {
vestigeId,
ranks, myRank
})
}
@@ -69,7 +69,7 @@ export class GVGProduceHandler {
const { type } = msg;
let { configId, period } = getGVGPeriodData();
if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
// if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
@@ -102,7 +102,7 @@ export class GVGProduceHandler {
const { farmId } = msg;
let { configId, period } = getGVGPeriodData();
if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
// if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
@@ -142,7 +142,7 @@ export class GVGProduceHandler {
const { farmId } = msg;
let { period } = getGVGPeriodData();
if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
// if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
@@ -165,7 +165,7 @@ export class GVGProduceHandler {
const { farmId, seeds } = msg;
let { configId, period } = getGVGPeriodData();
if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
// if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
@@ -213,7 +213,7 @@ export class GVGProduceHandler {
const { farmId, fieldIds } = msg;
let { configId, period } = getGVGPeriodData();
if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
// if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
@@ -265,7 +265,7 @@ export class GVGProduceHandler {
const { farmId, fieldId } = msg;
let { configId, period } = getGVGPeriodData();
if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
// if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
@@ -300,7 +300,7 @@ export class GVGProduceHandler {
if(!checkItemCanUserInFarm(farmId, itemId)) return resResult(STATUS.GVG_ITEM_CANNOT_USE);
let { configId, period } = getGVGPeriodData();
if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
// if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
@@ -330,7 +330,7 @@ export class GVGProduceHandler {
const { farmId, fieldId, result } = msg;
let { configId, period } = getGVGPeriodData();
if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
// if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
@@ -387,7 +387,7 @@ export class GVGProduceHandler {
const { farmId } = msg;
let { configId, period } = getGVGPeriodData();
if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
// if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
@@ -427,7 +427,7 @@ export class GVGProduceHandler {
if(!checkItemCanUserInFarm(farmId, itemId)) return resResult(STATUS.GVG_ITEM_CANNOT_USE);
let { configId, period } = getGVGPeriodData();
if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
// if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
@@ -457,7 +457,7 @@ export class GVGProduceHandler {
const { farmId, fieldId, result } = msg;
let { configId, period } = getGVGPeriodData();
if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
// if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
@@ -72,9 +72,11 @@ function randomRank(min: number, max: number, len: number) {
}
// 根据ranks获取oppPlayer显示数据
export async function getOppPlayerByRanks(serverId: number, groupId: number, vestigeId: number, ranks: number[]) {
export async function getOppPlayerByRanks(serverId: number, groupId: number, serverType: number, vestigeId: number, ranks: number[]) {
let serverNames = await getAllServerName();
let opps = await GVGVestigeRankModel.findByRanks(groupId, vestigeId, ranks);
let opps = await GVGVestigeRankModel.findByRanks(groupId, serverType, vestigeId, ranks);
let roleIds = opps.map(cur => cur.roleId);
let roles = await RoleModel.findByRoleIds(roleIds, 'roleId roleName head frame spine heads frames spines title lv guildName serverId updatedAt')
let dicRankMap = gameData.gvgVestige.get(vestigeId);
if(!dicRankMap) return [];
let result: GVGVestigeOppPlayer[] = [];
@@ -83,7 +85,8 @@ export async function getOppPlayerByRanks(serverId: number, groupId: number, ves
let opp = opps.find(cur => cur.rank == rank);
let dicCurRank = dicRankMap.get(rank);
if(opp) {
let role = <RoleType>opp.role;
let role = roles.find(cur => cur.roleId == opp.roleId);
if(!role) continue;
let lineupce = opp.lineup.reduce((pre, cur) => pre + cur.ce, 0);
obj.setByRole(role, serverNames, lineupce, dicCurRank?.score||0);
} else {
@@ -142,13 +145,13 @@ export function isRobot(roleId: string) {
return roleId.startsWith('robot');
}
export async function checkVestigeOppStatus(configId: number, groupId: number, vestigeId: number, roleId: string, myRank: number, targetRoleId: string, rank: number) {
export async function checkVestigeOppStatus(configId: number, groupId: number, serverType: number, vestigeId: number, roleId: string, myRank: number, targetRoleId: string, rank: number) {
let myData = await GVGVestigeRankModel.findByRole(vestigeId, roleId);
if(!myData) {
let role = await RoleModel.findByRoleId(roleId, 'roleId');
let oppRanks = refreshVestigeOppRanks(-1);
myData = await GVGVestigeRankModel.initRank(configId, vestigeId, groupId, role, oppRanks );
myData = await GVGVestigeRankModel.initRank(configId, vestigeId, groupId, serverType, role, oppRanks );
}
if(myData?.rank != myRank) return VESTIGE_OPP_STATUS.MY_RANK_CHANGE;
@@ -159,7 +162,7 @@ export async function checkVestigeOppStatus(configId: number, groupId: number, v
let targetData = await GVGVestigeRankModel.findByRole(vestigeId, targetRoleId);
if(targetData?.rank != rank) return VESTIGE_OPP_STATUS.OPP_RANK_CHANGE;
}
let lockResult = await GVGVestigeLockModel.chooseOppLock(groupId, vestigeId, rank, configId, roleId, targetRoleId);
let lockResult = await GVGVestigeLockModel.chooseOppLock(groupId, serverType, vestigeId, rank, configId, roleId, targetRoleId);
if(!lockResult) return VESTIGE_OPP_STATUS.OPP_IS_LOCKED;
return VESTIGE_OPP_STATUS.BATTLE;
+1 -1
View File
@@ -145,7 +145,7 @@ export async function setGVGServerGroup() {
const servers = await ServerlistModel.findByEnv(pinus.app.get('env'));
const serverGroups = await GVGServerGroupModel.findByTime(nowSeconds());
pinus.app.set('gvgServerGroup', servers.map(obj => {
let server = serverGroups.find(cur => cur.serverId == obj.serverId);
let server = serverGroups.find(cur => cur.serverId == obj.id);
return { serverId: obj.id, groupId: server? server.groupId: obj.groupId }
}));
}
@@ -20,8 +20,6 @@ import { sendMessageToUserWithSuc } from './pushService';
import { SkinType } from '../db/Skin';
import { LadderMatchModel } from '../db/LadderMatch';
import { ArtifactModelType } from '../db/Artifact';
import { GVGLeagueModel } from '../db/GVGLeague';
import { GVGVestigeRankModel } from '../db/GVGVestigeRank';
interface Param {
isInitRole?: boolean,
@@ -443,7 +441,6 @@ export async function calculateCes(type: HERO_SYSTEM_TYPE, roleId: string, serve
let hero = await HeroModel.updateHeroInfo(roleId, hid, { ce });
await PvpDefenseModel.updateCe(roleId, hid, ce); // 更新pvp防守阵战力
await LadderMatchModel.updateCe(roleId, hid, ce);
await GVGVestigeRankModel.updateCe(roleId, hid, ce);
pushHeros.push({ hid, ce: hero.ce, incHeroCe: inc });
}
}
+3 -2
View File
@@ -16,6 +16,7 @@ import { ActivityTimeLimitRankModel } from "../db/ActivityTimeLimitRank";
import { sendMessageToServerWithSuc } from "./pushService";
import { LadderMatchModel } from "../db/LadderMatch";
import { completeRanks } from "./ladderService";
import { GVGVestigeRankModel } from "../db/GVGVestigeRank";
/**
@@ -757,7 +758,7 @@ export class Rank {
let param: RoleRankInfo | GuildRankInfo;
if (this.infoKey == REDIS_KEY.USER_INFO) {
if (this.key != REDIS_KEY.LADDER && nowSeconds() - userInfo.updatedAt > 2 * 30 * 24 * 60 * 60) {
if (this.key != REDIS_KEY.LADDER && this.key != REDIS_KEY.GVG_VESTIGE_MEMBER && nowSeconds() - userInfo.updatedAt > 2 * 30 * 24 * 60 * 60) {
return null;
}
param = new RoleRankInfo(userInfo);
@@ -992,7 +993,7 @@ async function setRankFirst(rankFirstRec: RankFirstType) {
* @param type 排行榜类型
* @param serverId 分服
*/
export async function setRankRedisFromDb(type: string, args?: { serverId?: number }) {
export async function setRankRedisFromDb(type: string, args?: { serverId?: number, groupId?: number }) {
if (type == REDIS_KEY.TOWER_RANK) {
let serverId = args.serverId;
let ranks = await RoleModel.getRank('tower', serverId, ROLE_SELECT.RANK);
+4 -2
View File
@@ -16,6 +16,8 @@ import { RoleModel, RoleType } from '../db/Role';
import { GuildType } from '../db/Guild';
import { ActivityGroupModel } from '../db/ActivityGroup';
import { LadderMatchModel, LadderMatchType } from '../db/LadderMatch';
import { GVGServerGroupModel } from '../db/GVGServerGroup';
import { nowSeconds } from '../pubUtils/timeUtil';
/**
* 在服务重新启动时,将信息存入redis
@@ -52,7 +54,7 @@ export async function initAllRank() {
await setRankRedisFromDb(REDIS_KEY.PVP_RANK, {});
for(let {id} of serverList) {
await initRank(id);
await initRankByServerId(id);
await initActivitiesRank(id)
}
}
@@ -62,7 +64,7 @@ export async function initAllRank() {
*
* @param serverId 服务器
*/
export async function initRank(serverId: number) {
export async function initRankByServerId(serverId: number) {
// console.log('*****', 'initRank')
await setRankRedisFromDb(REDIS_KEY.TOWER_RANK, { serverId });
await setRankRedisFromDb(REDIS_KEY.GUILD_ACTIVE_RANK, { serverId });