🐞 fix(gvg): 修复战区问题,不跨服服务器应单列
This commit is contained in:
@@ -6,7 +6,7 @@ import { GVGCityModel } from '../../../db/GVGCity';
|
||||
import { Application, BackendSession, ChannelService, HandlerService, pinus } from "pinus";
|
||||
import { resResult, genCode } from "../../../pubUtils/util";
|
||||
import { GVGLeagueModel } from '../../../db/GVGLeague';
|
||||
import { checkGVGPeriod, getGroupIdOfServer, getGVGConfig, getGVGPeriodData, getGVGServerType } from '../../../services/gvg/gvgService';
|
||||
import { getGroupKey, getGVGConfig, getGVGPeriodData } from '../../../services/gvg/gvgService';
|
||||
import { redisAddBattleScore, battleEndSendMessage, calBattleScoreByCe, checkAreaIsInCity, checkGVGBattleStart, checkMoveStatus, getBattleRanksByCity, getBirthAreaOfCity, getGVGWarId, getOppHeroes, getTechKnifeHurt, getTechReviveMinus, initRobots, pushTeamMoveMessage, getGVGCitiesInfo } from '../../../services/gvg/gvgBattleService';
|
||||
import { getGVGBattleData } from '../../../services/gvg/gvgBattleMemory';
|
||||
import { GVGBattleRecModel } from '../../../db/GVGBattleRec';
|
||||
@@ -66,15 +66,13 @@ export class GVGBattleHandler {
|
||||
let { configId, period } = getGVGPeriodData();
|
||||
// if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD); // TODO 测试临时注
|
||||
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
|
||||
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
||||
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
|
||||
let { leagueCode, name: leagueName } = myLeague;
|
||||
let durability = gameData.gvgTeamDurability.get(index)||0;
|
||||
|
||||
let updateParam: SaveTeamUpdateParam = { index, head, spine, frame, configId, groupId, serverType }
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
let updateParam: SaveTeamUpdateParam = { index, head, spine, frame, configId, groupKey }
|
||||
if(lineup) {
|
||||
let attrByHid = await getHeroesAttributes(roleId);
|
||||
let { isOK, heroes } = await checkBattleHeroesByHid(roleId, lineup.map(cur => cur.actorId));
|
||||
@@ -117,13 +115,11 @@ export class GVGBattleHandler {
|
||||
let { configId, period } = getGVGPeriodData();
|
||||
let { startFightTime, endFightTime } = getFightTimeByPeriod(period);
|
||||
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
|
||||
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
||||
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
|
||||
|
||||
const city = await GVGCityModel.findByCityId(configId, groupId, serverType, cityId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
const city = await GVGCityModel.findByCityId(configId, groupKey, cityId);
|
||||
const { guardLeague: leagueCode = '', guardLeagueName: name = '', guardLeagueIcon: icon = 0, players = [] } = city||{};
|
||||
|
||||
let ourTeamCnt = 0, oppTeamCnt = 0;
|
||||
@@ -171,14 +167,13 @@ export class GVGBattleHandler {
|
||||
let { configId, period } = getGVGPeriodData();
|
||||
// if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD); // TODO 测试临时注
|
||||
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
|
||||
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
||||
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
|
||||
|
||||
// 初始化本城池的守擂机器人
|
||||
await initRobots(configId, groupId, serverType, cityId);
|
||||
await initRobots(configId, groupKey, cityId);
|
||||
|
||||
let teams = await GVGTeamModel.findByRole(roleId, '-_id');
|
||||
// 每赛季初自己的几支队伍恢复耐久、城市、顺便更新一下自己的玩家名、联军
|
||||
@@ -186,7 +181,7 @@ export class GVGBattleHandler {
|
||||
for(let team of teams) {
|
||||
if(team.configId != configId) {
|
||||
let { teamCode, maxDurability } = team;
|
||||
updateArr.push({ teamCode, durability: maxDurability, cityId: 0, areaId: 0, pointId: 0, roleName, guildCode, leagueCode: myLeague.leagueCode, leagueName: myLeague.name, groupId, serverType });
|
||||
updateArr.push({ teamCode, durability: maxDurability, cityId: 0, areaId: 0, pointId: 0, roleName, guildCode, leagueCode: myLeague.leagueCode, leagueName: myLeague.name, groupKey });
|
||||
}
|
||||
if(team.cityId) originCityId = team.cityId;
|
||||
}
|
||||
@@ -196,26 +191,26 @@ export class GVGBattleHandler {
|
||||
if (originCityId != cityId) {
|
||||
let gvgUserData = await GVGUserDataModel.findByRole(configId, myLeague.leagueCode, roleId);
|
||||
if(gvgUserData?.cityId > 0) { // 如果leaveCity没有退出成功,玩家还遗留在上一座城中,做一下处理
|
||||
await GVGCityModel.decreasePlayer(configId, groupId, serverType, gvgUserData.cityId, roleId);
|
||||
await GVGCityModel.decreasePlayer(configId, groupKey, gvgUserData.cityId, roleId);
|
||||
}
|
||||
const roleTeamCnt = await GVGTeamModel.getTeamCntByRole(roleId);
|
||||
let city = await GVGCityModel.increasePlayer(configId, groupId, serverType, cityId, roleId, myLeague.leagueCode, roleTeamCnt);
|
||||
let city = await GVGCityModel.increasePlayer(configId, groupKey, cityId, roleId, myLeague.leagueCode, roleTeamCnt);
|
||||
if(!city) return resResult(STATUS.GVG_BATTLE_CITY_FULL);
|
||||
|
||||
gvgUserData = await GVGUserDataModel.changeCity(configId, myLeague.leagueCode, roleId, cityId);
|
||||
let areaId = getBirthAreaOfCity(city, myLeague.leagueCode);
|
||||
await GVGTeamModel.enterCity(roleId, cityId, areaId, groupId, serverType);
|
||||
await GVGTeamModel.enterCity(roleId, cityId, areaId, groupKey);
|
||||
teams = await GVGTeamModel.findByRole(roleId, '-_id');
|
||||
// 更新内存队伍信息
|
||||
let teamObj = getGVGBattleData(groupId, serverType);
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
teamObj.enterCity(...teams);
|
||||
}
|
||||
|
||||
const recs = await GVGRecModel.findBattleRecByCity(configId, groupId, serverType, cityId);
|
||||
const recs = await GVGRecModel.findBattleRecByCity(configId, groupKey, cityId);
|
||||
const teamResult = teams.map(team => new MyTeamInfo(team));
|
||||
const { ranks, myRank } = await getBattleRanksByCity(configId, groupId, serverType, cityId, myLeague);
|
||||
const { ranks, myRank } = await getBattleRanksByCity(configId, groupKey, cityId, myLeague);
|
||||
await leaveGVGCityTeamChannel(roleId, sid);
|
||||
await addRoleToGVGCityChannel(roleId, groupId, serverType, cityId, sid);
|
||||
await addRoleToGVGCityChannel(roleId, groupKey, cityId, sid);
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
cityId,
|
||||
@@ -235,8 +230,7 @@ export class GVGBattleHandler {
|
||||
const { cityId } = msg;
|
||||
let { configId, period } = getGVGPeriodData();
|
||||
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
|
||||
// 检测是否已经在城池中
|
||||
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
||||
@@ -249,16 +243,16 @@ export class GVGBattleHandler {
|
||||
return resResult(STATUS.GVG_USER_NOT_IN_CITY);
|
||||
}
|
||||
|
||||
const city = await GVGCityModel.decreasePlayer(configId, groupId, serverType, cityId, roleId);
|
||||
const city = await GVGCityModel.decreasePlayer(configId, groupKey, cityId, roleId);
|
||||
if (!city) {
|
||||
return resResult(STATUS.GVG_CITY_NOT_FOUND);
|
||||
}
|
||||
|
||||
// 更新玩家城池和队伍城池
|
||||
gvgUserData = await GVGUserDataModel.changeCity(configId, myLeague.leagueCode, roleId, 0);
|
||||
await GVGTeamModel.enterCity(roleId, 0, 0, groupId, serverType);
|
||||
await GVGTeamModel.enterCity(roleId, 0, 0, groupKey);
|
||||
// 处理内存数据
|
||||
let teamObj = getGVGBattleData(groupId, serverType);
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
teamObj.leaveCity(roleId);
|
||||
|
||||
await leaveGVGAreaChannel(roleId, sid);
|
||||
@@ -277,12 +271,10 @@ export class GVGBattleHandler {
|
||||
|
||||
if(!checkAreaIsInCity(cityId, areaIds)) return resResult(STATUS.GVG_AREA_NOT_IN_CITY);
|
||||
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
let serverNames = await getAllServerName();
|
||||
|
||||
let teamObj = getGVGBattleData(groupId, serverType);
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
let result: GVGAreaInMap[] = [];
|
||||
for(let areaId of areaIds) {
|
||||
let teams = teamObj.findTeamsByArea(areaId);
|
||||
@@ -291,7 +283,7 @@ export class GVGBattleHandler {
|
||||
}
|
||||
// 加入频道
|
||||
await leaveGVGAreaChannel(roleId, sid);
|
||||
await addRoleToAreaChannel(roleId, groupId, serverType, areaIds, sid);
|
||||
await addRoleToAreaChannel(roleId, groupKey, areaIds, sid);
|
||||
|
||||
return resResult(STATUS.SUCCESS, { cityId, areas: result });
|
||||
}
|
||||
@@ -303,14 +295,13 @@ export class GVGBattleHandler {
|
||||
const serverId = session.get('serverId');
|
||||
const { cityId, teamCode } = msg;
|
||||
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
|
||||
let myTeam = await GVGTeamModel.findMyTeamByCode(roleId, teamCode);
|
||||
if(!myTeam) return resResult(STATUS.GVG_TEAM_NOT_FOUND);
|
||||
if(myTeam.cityId != cityId) return resResult(STATUS.GVG_BATTLE_IS_NOT_IN_CITY);
|
||||
|
||||
let teams = await GVGTeamModel.findByAreaId(groupId, serverType, cityId, myTeam.areaId);
|
||||
let teams = await GVGTeamModel.findByAreaId(groupKey, cityId, myTeam.areaId);
|
||||
let points: GVGTeamInListOnPoint[] = [], players: GVGTeamInList[] = [];
|
||||
let pointIds = gameData.gvgPointByAreaId.get(myTeam.areaId)||[];
|
||||
for(let pointId of pointIds) {
|
||||
@@ -326,7 +317,7 @@ export class GVGBattleHandler {
|
||||
}
|
||||
|
||||
await leaveGVGAreaTeamChannel(roleId, sid);
|
||||
await addRoleToAreaTeamChannel(roleId, groupId, serverType, myTeam.areaId, sid);
|
||||
await addRoleToAreaTeamChannel(roleId, groupKey, myTeam.areaId, sid);
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
cityId, areaId: myTeam.areaId, points, players
|
||||
@@ -341,8 +332,7 @@ export class GVGBattleHandler {
|
||||
const serverId = session.get('serverId');
|
||||
const { areaId, cityId, teamCode } = msg;
|
||||
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
|
||||
let team = await GVGTeamModel.findMyTeamByCode(roleId, teamCode);
|
||||
let checkResult = checkMoveStatus(team, cityId, areaId);
|
||||
@@ -351,10 +341,10 @@ export class GVGBattleHandler {
|
||||
team = await GVGTeamModel.startMove(teamCode, areaId, team.areaId);
|
||||
|
||||
// 更新内存数据
|
||||
let teamObj = getGVGBattleData(groupId, serverType);
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
teamObj.move(teamCode, areaId, team.fromAreaId, team.startMoveTime, team.stopMoveTime);
|
||||
|
||||
await addRoleToAreaTeamChannel(roleId, groupId, serverType, areaId, sid);
|
||||
await addRoleToAreaTeamChannel(roleId, groupKey, areaId, sid);
|
||||
await pushTeamMoveMessage(team);
|
||||
return resResult(STATUS.SUCCESS, { areaId, cityId, stopMoveTime: team.stopMoveTime });
|
||||
}
|
||||
@@ -367,8 +357,7 @@ export class GVGBattleHandler {
|
||||
const serverId = session.get('serverId');
|
||||
const { areaId, cityId, teamCode } = msg;
|
||||
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
|
||||
let team = await GVGTeamModel.findMyTeamByCode(roleId, teamCode);
|
||||
if(!team) return resResult(STATUS.GVG_BATTLE_TEAM_NOT_FOUND);
|
||||
@@ -376,11 +365,11 @@ export class GVGBattleHandler {
|
||||
|
||||
team = await GVGTeamModel.stopMove(teamCode, areaId);
|
||||
// 更新内存数据
|
||||
let teamObj = getGVGBattleData(groupId, serverType);
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
teamObj.move(teamCode, areaId, 0, team.startMoveTime, team.stopMoveTime);
|
||||
|
||||
await leaveGVGAreaTeamChannel(roleId, sid);
|
||||
await addRoleToAreaTeamChannel(roleId, groupId, serverType, areaId, sid);
|
||||
await addRoleToAreaTeamChannel(roleId, groupKey, areaId, sid);
|
||||
return resResult(STATUS.SUCCESS, { areaId, cityId, curTeam: new MyTeamInfo(team) });
|
||||
}
|
||||
|
||||
@@ -393,8 +382,7 @@ export class GVGBattleHandler {
|
||||
let { configId, period } = getGVGPeriodData();
|
||||
// if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD); // TODO 测试临时注
|
||||
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
|
||||
let myTeam = await GVGTeamModel.findMyTeamByCode(roleId, teamCode);
|
||||
if(!myTeam) return resResult(STATUS.GVG_TEAM_NOT_FOUND);
|
||||
@@ -406,7 +394,7 @@ export class GVGBattleHandler {
|
||||
if(!point) return resResult(STATUS.GVG_POINT_HAS_SETTLED);
|
||||
const curTeam = await GVGTeamModel.settlePoint(teamCode, pointId);
|
||||
|
||||
let teamObj = getGVGBattleData(groupId, serverType);
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
teamObj.teamSettle(roleId, teamCode, pointId);
|
||||
|
||||
addTeamSettleRec(curTeam);
|
||||
@@ -423,8 +411,7 @@ export class GVGBattleHandler {
|
||||
let { configId, period } = getGVGPeriodData();
|
||||
// if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD); // TODO 测试临时注
|
||||
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
|
||||
let myTeam = await GVGTeamModel.findMyTeamByCode(roleId, teamCode);
|
||||
if(!myTeam) return resResult(STATUS.GVG_TEAM_NOT_FOUND);
|
||||
@@ -432,8 +419,8 @@ export class GVGBattleHandler {
|
||||
if(dicAreaPoint.areaId != myTeam.areaId) return resResult(STATUS.GVG_POINT_NOT_AREA);
|
||||
|
||||
const curTeam = await GVGTeamModel.settlePoint(teamCode, 0);
|
||||
await GVGCityAreaPointModel.leavePoint(configId, groupId, serverType, pointId);
|
||||
let teamObj = getGVGBattleData(groupId, serverType);
|
||||
await GVGCityAreaPointModel.leavePoint(configId, groupKey, pointId);
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
teamObj.teamSettle(roleId, teamCode, pointId);
|
||||
|
||||
return resResult(STATUS.SUCCESS, { curTeam: new MyTeamInfo(curTeam) });
|
||||
@@ -450,20 +437,19 @@ export class GVGBattleHandler {
|
||||
let { configId, period } = getGVGPeriodData();
|
||||
// if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD); // TODO 测试临时注
|
||||
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
|
||||
let { attackTeam, defenseTeam } = await GVGTeamModel.findBattleTeams(teamCode, oppoTeamCode);
|
||||
let checkStatus = checkGVGBattleStart(roleId, attackTeam, defenseTeam);
|
||||
if(checkStatus.code != 0) return resResult(checkStatus);
|
||||
|
||||
const warId = getGVGWarId(defenseTeam);
|
||||
const battleRecord = await GVGBattleRecModel.createRec(configId, groupId, serverType, warId, attackTeam, defenseTeam);
|
||||
const battleRecord = await GVGBattleRecModel.createRec(configId, groupKey, warId, attackTeam, defenseTeam);
|
||||
|
||||
attackTeam = await GVGTeamModel.battleStartLockAttack(teamCode);
|
||||
defenseTeam = await GVGTeamModel.battleStartLockDefense(oppoTeamCode, teamCode);
|
||||
// 内存处理
|
||||
let teamObj = getGVGBattleData(groupId, serverType);
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
teamObj.setTime(attackTeam.teamCode, attackTeam);
|
||||
teamObj.setTime(defenseTeam.teamCode, defenseTeam);
|
||||
let heroes = getOppHeroes(warId, defenseTeam.isRobot, defenseTeam.lineup)
|
||||
@@ -483,9 +469,8 @@ export class GVGBattleHandler {
|
||||
let { attackTeam, defenseTeam } = await GVGTeamModel.findBattleTeams(record.attackTeam.teamCode, record.defenseTeam.teamCode);
|
||||
if(defenseTeam.lockTeamCode != attackTeam.teamCode) return resResult(STATUS.GVG_LOCK_TIME_OUT)
|
||||
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let city = await GVGCityModel.findByCityId(configId, groupId, serverType, cityId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
let city = await GVGCityModel.findByCityId(configId, groupKey, cityId);
|
||||
if (!city) return resResult(STATUS.GVG_CITY_NOT_FOUND);
|
||||
|
||||
// 计算并更新两支队伍耐久
|
||||
@@ -497,7 +482,7 @@ export class GVGBattleHandler {
|
||||
attackTeam = await GVGTeamModel.settlePoint(attackTeam.teamCode, defenseTeam.originPointId);
|
||||
await GVGCityAreaPointModel.settlePoint(cityId, attackTeam.areaId, defenseTeam.originPointId, attackTeam);
|
||||
} else {
|
||||
await GVGCityAreaPointModel.leavePoint(configId, groupId, serverType, defenseTeam.originPointId);
|
||||
await GVGCityAreaPointModel.leavePoint(configId, groupKey, defenseTeam.originPointId);
|
||||
}
|
||||
}
|
||||
if(defenseTeam.curTeamBreak) {
|
||||
@@ -507,11 +492,11 @@ export class GVGBattleHandler {
|
||||
}
|
||||
|
||||
// 更新内存
|
||||
let teamObj = getGVGBattleData(groupId, serverType);
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
teamObj.battleEnd([attackTeam, defenseTeam]);
|
||||
// 更新rec
|
||||
let rec = await GVGBattleRecModel.battleEnd(battleCode, isSuccess);
|
||||
await battleEndSendMessage(groupId, serverType, cityId, defenseTeam, attackTeam);
|
||||
await battleEndSendMessage(groupKey, cityId, defenseTeam, attackTeam);
|
||||
addBattleEndRec(rec);
|
||||
|
||||
return resResult(STATUS.SUCCESS, { curTeam: new MyTeamInfo(attackTeam) });
|
||||
@@ -531,8 +516,7 @@ export class GVGBattleHandler {
|
||||
let { configId, period } = getGVGPeriodData();
|
||||
// if (period != GVG_PERIOD.BATTLE) return resResult(STATUS.GVG_NOT_BATTLE_PERIOD); // TODO 测试临时注
|
||||
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
|
||||
let { attackTeam, defenseTeam } = await GVGTeamModel.findBattleTeams(teamCode, oppoTeamCode);
|
||||
let checkStatus = checkGVGBattleStart(roleId, attackTeam, defenseTeam);
|
||||
@@ -544,7 +528,7 @@ export class GVGBattleHandler {
|
||||
let costResult = await handleGVGCost(roleId, myLeague.leagueCode, sid, [{ id: GVG_ITEM.KNIFE, count: 1 }], [], ITEM_CHANGE_REASON.GVG_USE_ITEM);
|
||||
if(!costResult) return resResult(STATUS.GVG_ITEMS_NOT_ENOUGH);
|
||||
|
||||
let city = await GVGCityModel.findByCityId(configId, groupId, serverType, cityId);
|
||||
let city = await GVGCityModel.findByCityId(configId, groupKey, cityId);
|
||||
if (!city) return resResult(STATUS.GVG_CITY_NOT_FOUND);
|
||||
|
||||
defenseTeam = await GVGTeamModel.battleEndDefense(teamCode, await getTechKnifeHurt(configId, attackTeam.leagueCode), getBirthAreaOfCity(city, defenseTeam.leagueCode), await getTechReviveMinus(configId, defenseTeam.leagueCode));
|
||||
@@ -553,7 +537,7 @@ export class GVGBattleHandler {
|
||||
attackTeam = await GVGTeamModel.settlePoint(attackTeam.teamCode, defenseTeam.originPointId);
|
||||
await GVGCityAreaPointModel.settlePoint(cityId, attackTeam.areaId, defenseTeam.originPointId, attackTeam);
|
||||
} else {
|
||||
await GVGCityAreaPointModel.leavePoint(configId, groupId, serverType, defenseTeam.originPointId);
|
||||
await GVGCityAreaPointModel.leavePoint(configId, groupKey, defenseTeam.originPointId);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -563,10 +547,10 @@ export class GVGBattleHandler {
|
||||
}
|
||||
|
||||
// 更新内存
|
||||
let teamObj = getGVGBattleData(groupId, serverType);
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
teamObj.battleEnd([attackTeam, defenseTeam]);
|
||||
|
||||
await battleEndSendMessage(groupId, serverType, cityId, defenseTeam, attackTeam);
|
||||
await battleEndSendMessage(groupKey, cityId, defenseTeam, attackTeam);
|
||||
|
||||
return resResult(STATUS.SUCCESS, { curTeam: new MyTeamInfo(attackTeam) });
|
||||
}
|
||||
@@ -580,8 +564,7 @@ export class GVGBattleHandler {
|
||||
|
||||
const { teamCode } = msg;
|
||||
let { configId, period } = getGVGPeriodData();
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
|
||||
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
||||
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
|
||||
@@ -607,7 +590,7 @@ export class GVGBattleHandler {
|
||||
team = await GVGTeamModel.reviveTeam(teamCode);
|
||||
|
||||
// 更新内存
|
||||
let teamObj = getGVGBattleData(groupId, serverType);
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
teamObj.battleEnd([team]);
|
||||
|
||||
// 更新成功返回队伍信息
|
||||
@@ -623,15 +606,14 @@ export class GVGBattleHandler {
|
||||
const { type, cityId } = msg;
|
||||
// 根据 type 获取战报
|
||||
let { configId, period } = getGVGPeriodData();
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
|
||||
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
||||
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
|
||||
|
||||
let recs: GVGRecType[] = [];
|
||||
if(type == GVG_REC_TYPE.BATTLE_BY_CITY) {
|
||||
recs = await GVGRecModel.findBattleRecByCity(configId, groupId, serverType, cityId);
|
||||
recs = await GVGRecModel.findBattleRecByCity(configId, groupKey, cityId);
|
||||
} else if (type == GVG_REC_TYPE.BATTLE_BY_LEAGUE) {
|
||||
recs = await GVGRecModel.findBattleRecByLeague(configId, myLeague.leagueCode);
|
||||
} else if (type == GVG_REC_TYPE.BATTLE_BY_ROLE) {
|
||||
@@ -645,11 +627,10 @@ export class GVGBattleHandler {
|
||||
const serverId = session.get('serverId');
|
||||
|
||||
let { configId } = getGVGPeriodData();
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
|
||||
const cities = await GVGCityModel.findByConfig(configId, groupId, serverType);
|
||||
const points = await GVGCityAreaPointModel.findByConfig(configId, groupId, serverType);
|
||||
const cities = await GVGCityModel.findByConfig(configId, groupKey);
|
||||
const points = await GVGCityAreaPointModel.findByConfig(configId, groupKey);
|
||||
|
||||
let result: { cityId: number, guardLeagueName: string, areas: { areaId: number, points: { pointId: number, guardLeagueName: string }[] }[] }[] = [];
|
||||
for(let [ cityId, { areaIds }] of gameData.gvgCity) {
|
||||
@@ -677,18 +658,16 @@ export class GVGBattleHandler {
|
||||
const serverId = session.get('serverId');
|
||||
|
||||
let { configId } = getGVGPeriodData();
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
let cities = await getGVGCitiesInfo(configId, groupKey);
|
||||
|
||||
let cities = await getGVGCitiesInfo(configId, groupId, serverType);
|
||||
|
||||
let r = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK, { configId, groupId, serverType });
|
||||
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 r2 = new Rank(REDIS_KEY.GVG_BATTLE_RANK, { configId, groupId, serverType });
|
||||
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 }
|
||||
|
||||
@@ -22,7 +22,7 @@ import { calBreakGoods, checkHeroIsUsedInOtherVestige, checkVestige, checkVestig
|
||||
import { addGVGReward, combinePushItem, handleGVGCost } from "../../../services/gvg/gvgItemService";
|
||||
import { addGVGActive } from "../../../services/gvg/gvgPrepareService";
|
||||
import { addVestigeBattleEndRec } from "../../../services/gvg/gvgRecService";
|
||||
import { getGroupIdOfServer, getGVGPeriodData, getGVGServerType } from "../../../services/gvg/gvgService";
|
||||
import { getGroupKey, getGVGPeriodData } from "../../../services/gvg/gvgService";
|
||||
import { checkBattleHeroesByHid } from "../../../services/normalBattleService";
|
||||
import { Rank } from "../../../services/rankService";
|
||||
import { getAllServerName } from "../../../services/redisService";
|
||||
@@ -56,19 +56,18 @@ export class GVGProduceHandler {
|
||||
const myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
||||
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
|
||||
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
|
||||
let dicRankMap = gameData.gvgVestige.get(vestigeId);
|
||||
if(!dicRankMap) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
|
||||
let myVestigeRank = await getMyVestigeRank(configId, groupId, serverType, vestigeId, roleId, myLeague);
|
||||
let myVestigeRank = await getMyVestigeRank(configId, groupKey, vestigeId, roleId, myLeague);
|
||||
if(!myVestigeRank) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
|
||||
|
||||
let { rank, lineup, oppRanks, refreshCnt } = myVestigeRank;
|
||||
|
||||
let lineupCe = lineup.reduce((pre, cur) => pre + cur.ce, 0);
|
||||
let oppPlayers = await getOppPlayerByRanks(serverId, groupId, serverType, vestigeId, oppRanks);
|
||||
let oppPlayers = await getOppPlayerByRanks(serverId, groupKey, vestigeId, oppRanks);
|
||||
let usedHeroes = await getVestigeUsedHeroes(roleId, vestigeId);
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
@@ -94,10 +93,9 @@ 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 groupKey = await getGroupKey(serverId);
|
||||
|
||||
let myVestigeRank = await getMyVestigeRank(configId, groupId, serverType, vestigeId, roleId);
|
||||
let myVestigeRank = await getMyVestigeRank(configId, groupKey, vestigeId, roleId);
|
||||
if(!myVestigeRank) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
|
||||
|
||||
for(let { actorId } of heroes) {
|
||||
@@ -172,17 +170,16 @@ 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 groupKey = await getGroupKey(serverId);
|
||||
|
||||
let myVestigeRank = await getMyVestigeRank(configId, groupId, serverType, vestigeId, roleId);
|
||||
let myVestigeRank = await getMyVestigeRank(configId, groupKey, vestigeId, roleId);
|
||||
let refreshCnt = myVestigeRank.refreshCnt||0;
|
||||
if(refreshCnt >= GVG.GVG_REFRESH_TIME) return resResult(STATUS.GVG_VESTIGE_REFESH_CNT_MAX);
|
||||
|
||||
let oppRanks = refreshVestigeOppRanks(myVestigeRank.rank);
|
||||
myVestigeRank = await GVGVestigeRankModel.refreshOpp(roleId, vestigeId, oppRanks );
|
||||
|
||||
let oppPlayers = await getOppPlayerByRanks(serverId, groupId, serverType, vestigeId, myVestigeRank.oppRanks);
|
||||
let oppPlayers = await getOppPlayerByRanks(serverId, groupKey, vestigeId, myVestigeRank.oppRanks);
|
||||
|
||||
// 返回
|
||||
return resResult(STATUS.SUCCESS, { vestigeId, refreshCnt: myVestigeRank.refreshCnt, oppPlayers });
|
||||
@@ -217,20 +214,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);
|
||||
const groupKey = await getGroupKey(serverId);
|
||||
|
||||
let status = await checkVestigeOppStatus(configId, groupId, serverType, vestigeId, roleId, myRank, targetRoleId, rank); // 锁
|
||||
let status = await checkVestigeOppStatus(configId, groupKey, vestigeId, roleId, myRank, targetRoleId, rank); // 锁
|
||||
if(status != VESTIGE_OPP_STATUS.BATTLE) {
|
||||
let oppRanks = refreshVestigeOppRanks(myRank);
|
||||
let oppPlayers = await getOppPlayerByRanks(serverId, groupId, serverType, vestigeId, oppRanks);
|
||||
let oppPlayers = await getOppPlayerByRanks(serverId, groupKey, 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, serverType, vestigeId, rank);
|
||||
await GVGVestigeLockModel.releaseLock(groupKey, vestigeId, rank);
|
||||
return resResult(STATUS.GVG_ITEMS_NOT_ENOUGH);
|
||||
}
|
||||
// 获取征战令对应奖励
|
||||
@@ -240,7 +236,7 @@ export class GVGProduceHandler {
|
||||
// 创建rec
|
||||
const attackInfo = await generateAttackInfo(roleId, myLeague, myRank);
|
||||
const defenseInfo = await generateDefenseInfo(targetRoleId, vestigeId, rank);
|
||||
const rec = await GVGVestigeRecModel.createRec(configId, vestigeId, groupId, serverType, dicRank.warId, attackInfo, defenseInfo, leagueGoods);
|
||||
const rec = await GVGVestigeRecModel.createRec(configId, vestigeId, groupKey, dicRank.warId, attackInfo, defenseInfo, leagueGoods);
|
||||
const oppDetail = await getOppDetailData(rec);
|
||||
|
||||
checkGVGTask(serverId, roleId, sid, configId, myLeague.leagueCode, TASK_TYPE.GVG_VESTIGE, { count: 1 });
|
||||
@@ -257,7 +253,7 @@ export class GVGProduceHandler {
|
||||
// 更新ladderMatchRec
|
||||
let rec = await GVGVestigeRecModel.giveup(roleId, battleCode);
|
||||
if(rec && rec.defenseInfo) {
|
||||
await GVGVestigeLockModel.releaseLock(rec.groupId, rec.serverType, rec.vestigeId, rec.defenseInfo.oldRank);
|
||||
await GVGVestigeLockModel.releaseLock(rec.groupKey, rec.vestigeId, rec.defenseInfo.oldRank);
|
||||
}
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
@@ -302,9 +298,8 @@ export class GVGProduceHandler {
|
||||
if(await checkHeroIsUsedInOtherVestige(roleId, vestigeId, heroes)) return resResult(STATUS.GVG_VESTIGE_HERO_USED);
|
||||
|
||||
// 更新锁
|
||||
const groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let lock = await GVGVestigeLockModel.checkBattleLock(groupId, serverType, vestigeId, rank, roleId);
|
||||
const groupKey = await getGroupKey(serverId);
|
||||
let lock = await GVGVestigeLockModel.checkBattleLock(groupKey, vestigeId, rank, roleId);
|
||||
if(!lock) return resResult(STATUS.GVG_VESTIGE_CHECK_BATTLE_STATUS_ERR);
|
||||
|
||||
// 向vestigerec保存阵容
|
||||
@@ -348,7 +343,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.serverType, rec.vestigeId, rec.defenseInfo.oldRank);
|
||||
await GVGVestigeLockModel.releaseLock(rec.groupKey, rec.vestigeId, rec.defenseInfo.oldRank);
|
||||
// 更新battleRecord
|
||||
await BattleRecordModel.updateBattleRecordByCode(battleCode, { $set: { status: isSuccess? 1: 2 } });
|
||||
|
||||
@@ -367,7 +362,7 @@ export class GVGProduceHandler {
|
||||
score: gameData.gvgVestige.get(rec.vestigeId)?.get(atkData.rank)?.score??0,
|
||||
historyRank: atkData.historyRank,
|
||||
...getVestigeRecStatus(rec),
|
||||
oppPlayers: await getOppPlayerByRanks(serverId, rec.groupId, rec.serverType, rec.vestigeId, atkData.oppRanks),
|
||||
oppPlayers: await getOppPlayerByRanks(serverId, rec.groupKey, rec.vestigeId, atkData.oppRanks),
|
||||
// breakGoods,
|
||||
lineup: atkData.lineup,
|
||||
lineupCe: atkData.lineup.reduce((pre, cur) => pre + cur.ce, 0),
|
||||
@@ -402,12 +397,11 @@ export class GVGProduceHandler {
|
||||
const myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
||||
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
|
||||
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
let serverNames = await getAllServerName();
|
||||
|
||||
const { ranks: leagueRank, myRank: myLeagueRank } = await getVestigeRank(REDIS_KEY.GVG_VESTIGE_LEAGUE, true, { groupId, serverType, day: getDayKeyInfo() }, { leagueCode: myLeague.leagueCode });
|
||||
const { ranks: memberRank, myRank: myMemberRank } = await getVestigeRank(REDIS_KEY.GVG_VESTIGE_MEMBER_ALL, true, { groupId, serverType, day: getDayKeyInfo() }, { roleId }, serverNames);
|
||||
const { ranks: leagueRank, myRank: myLeagueRank } = await getVestigeRank(REDIS_KEY.GVG_VESTIGE_LEAGUE, true, { groupKey, day: getDayKeyInfo() }, { leagueCode: myLeague.leagueCode });
|
||||
const { ranks: memberRank, myRank: myMemberRank } = await getVestigeRank(REDIS_KEY.GVG_VESTIGE_MEMBER_ALL, true, { groupKey, day: getDayKeyInfo() }, { roleId }, serverNames);
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
leagueRank, myLeagueRank, memberRank, myMemberRank
|
||||
@@ -423,13 +417,12 @@ export class GVGProduceHandler {
|
||||
const myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
||||
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
|
||||
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
let serverNames = await getAllServerName();
|
||||
let { configId } = getGVGPeriodData();
|
||||
|
||||
const { ranks, myRank } = await getVestigeRank(REDIS_KEY.GVG_VESTIGE_LEAGUE, false, { groupId, serverType, day: getDayKeyInfo() }, { leagueCode: myLeague.leagueCode }, serverNames);
|
||||
const { ranks: memberRank, myRank: myMemberRank } = await getVestigeRank(REDIS_KEY.GVG_VESTIGE_MEMBER_ALL, false, { groupId, serverType, day: getDayKeyInfo() }, { roleId }, serverNames);
|
||||
const { ranks, myRank } = await getVestigeRank(REDIS_KEY.GVG_VESTIGE_LEAGUE, false, { groupKey, day: getDayKeyInfo() }, { leagueCode: myLeague.leagueCode }, serverNames);
|
||||
const { ranks: memberRank, myRank: myMemberRank } = await getVestigeRank(REDIS_KEY.GVG_VESTIGE_MEMBER_ALL, false, { groupKey, day: getDayKeyInfo() }, { roleId }, serverNames);
|
||||
|
||||
let yesterdayRank = await GVGVestigeLeagueRankModel.getYesterdayRank(myLeague.leagueCode);
|
||||
let canReceiveLeagueRanks = await GVGVestigeLeagueRankModel.getCanReceiveRanks(configId, myLeague.leagueCode);
|
||||
@@ -450,13 +443,12 @@ export class GVGProduceHandler {
|
||||
let serverId = session.get('serverId');
|
||||
|
||||
let { vestigeId } = msg;
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let groupKey = await getGroupKey(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 vestigeRanks = await GVGVestigeRankModel.findRankByVestige(groupKey, vestigeId);
|
||||
let r = new Rank(REDIS_KEY.GVG_VESTIGE_MEMBER, { groupKey, vestigeId });
|
||||
let ranks: VestigeRank[] = [], myRank: VestigeRank;
|
||||
for(let { roleId: targetRoleId, rank, lineup } of vestigeRanks) {
|
||||
let param = <RoleRankInfo>await r.getParam(rank, targetRoleId, [rank]);
|
||||
@@ -531,26 +523,25 @@ export class GVGProduceHandler {
|
||||
let serverId = session.get('serverId');
|
||||
let guildCode = session.get('guildCode');
|
||||
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let groupKey = await getGroupKey(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 myData = await getMyVestigeRank(configId, groupKey, vestigeId, roleId, myLeague)
|
||||
let myRank = myData?.rank||0;
|
||||
|
||||
let targetData = await GVGVestigeRankModel.findByRank(configId, groupId, serverType, vestigeId, rank);
|
||||
let targetData = await GVGVestigeRankModel.findByRank(configId, groupKey, 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 });
|
||||
await savePlayerRank(configId, groupKey, 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 });
|
||||
await savePlayerRank(configId, groupKey, vestigeId, { isRobot: false, newRank: targetData.rank, oldRank: rank, roleId: targetData.roleId, leagueCode: targetData.leagueCode });
|
||||
}
|
||||
|
||||
return resResult(STATUS.SUCCESS);
|
||||
|
||||
@@ -4,7 +4,7 @@ import { GVGLeagueModel } from "../../../db/GVGLeague";
|
||||
import { GVGLeaguePrepareModel } from "../../../db/GVGLeaguePrepare";
|
||||
import { GVGMainData, LeagueContributeInfo, LeagueMemberContributeInfo, LeagueMemberListInfo } from "../../../domain/gvgField/returnData";
|
||||
import { getRandEelm, resResult } from "../../../pubUtils/util";
|
||||
import { calLeagueCe, getGroupIdOfServer, getGVGConfig, getGVGPeriodData, getGVGServerType, getServerTypeByTime } from "../../../services/gvg/gvgService";
|
||||
import { calLeagueCe, getGroupIdOfServer, getGroupKey, getGVGConfig, getGVGPeriodData, getGVGServerType, getServerTypeByTime } from "../../../services/gvg/gvgService";
|
||||
import { autoCreateLeague, checkCanChooseJob, checkCanPrepare, checkLeagueAuth, getMyAuth } from "../../../services/gvg/gvgTeamService";
|
||||
import { getAllServerName } from "../../../services/redisService";
|
||||
import { Contribute, GVGUserDataModel } from "../../../db/GVGUserData";
|
||||
@@ -91,11 +91,8 @@ export class GVGHandler {
|
||||
let { configId, period, countdownTime } = getGVGPeriodData();
|
||||
let { startFightTime, endFightTime } = getFightTimeByPeriod(period);
|
||||
|
||||
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
|
||||
let cities = await getGVGCitiesInfo(configId, groupId, serverType, myLeague);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
let cities = await getGVGCitiesInfo(configId, groupKey, myLeague);
|
||||
let vestiges = await getMyVestiges(serverId, roleId);
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
|
||||
@@ -129,9 +129,9 @@ export class GuildRemote {
|
||||
}
|
||||
}
|
||||
|
||||
public async initCatapult(cityId: number, groupId: number, serverType: number, leagueCode: string, leagueName: string) {
|
||||
public async initCatapult(cityId: number, groupKey: string, leagueCode: string, leagueName: string) {
|
||||
try {
|
||||
return await initCatapult(cityId, groupId, serverType, leagueCode, leagueName);
|
||||
return await initCatapult(cityId, groupKey, leagueCode, leagueName);
|
||||
} catch(e) {
|
||||
errlogger.error(`remote ${__filename} \n ${e.stack}`);
|
||||
}
|
||||
|
||||
@@ -61,24 +61,24 @@ export async function addRoleToGroupShopChannel(roleId: string, sid: string) {
|
||||
await addRoleToChannel(roomId, roleId, sid);
|
||||
}
|
||||
|
||||
export async function addRoleToAreaChannel(roleId: string, groupId: number, serverType: number, areaIds: number[], sid: string) {
|
||||
export async function addRoleToAreaChannel(roleId: string, groupKey: string, areaIds: number[], sid: string) {
|
||||
for(let areaId of areaIds) {
|
||||
const roomId = groupRoomId(CHANNEL_PREFIX.GVG_AREAS, `${groupId}_${serverType}_${areaId}`);
|
||||
const roomId = groupRoomId(CHANNEL_PREFIX.GVG_AREAS, `${groupKey}_${areaId}`);
|
||||
await addRoleToChannel(roomId, roleId, sid);
|
||||
}
|
||||
await addGVGHistoryAreas(roleId, groupId, serverType, areaIds);
|
||||
await addGVGHistoryAreas(roleId, groupKey, areaIds);
|
||||
}
|
||||
|
||||
export async function addRoleToAreaTeamChannel(roleId: string, groupId: number, serverType: number, areaId: number, sid: string) {
|
||||
const roomId = groupRoomId(CHANNEL_PREFIX.GVG_AREA_BY_TEAM, `${groupId}_${serverType}_${areaId}`);
|
||||
export async function addRoleToAreaTeamChannel(roleId: string, groupKey: string, areaId: number, sid: string) {
|
||||
const roomId = groupRoomId(CHANNEL_PREFIX.GVG_AREA_BY_TEAM, `${groupKey}_${areaId}`);
|
||||
await addRoleToChannel(roomId, roleId, sid);
|
||||
await addGVGHistoryAreaTeam(roleId, groupId, serverType, areaId);
|
||||
await addGVGHistoryAreaTeam(roleId, groupKey, areaId);
|
||||
}
|
||||
|
||||
export async function addRoleToGVGCityChannel(roleId: string, groupId: number, serverType: number, cityId: number, sid: string) {
|
||||
const roomId = groupRoomId(CHANNEL_PREFIX.GVG_CITY, `${groupId}_${serverType}_${cityId}`);
|
||||
export async function addRoleToGVGCityChannel(roleId: string, groupKey: string, cityId: number, sid: string) {
|
||||
const roomId = groupRoomId(CHANNEL_PREFIX.GVG_CITY, `${groupKey}_${cityId}`);
|
||||
await addRoleToChannel(roomId, roleId, sid);
|
||||
await addGVGHistoryCityTeam(roleId, groupId, serverType, cityId);
|
||||
await addGVGHistoryCityTeam(roleId, groupKey, cityId);
|
||||
}
|
||||
async function leaveChannel(roomId: string, roleId: string, sid: string) {
|
||||
const channelSid = await channelServer(roomId);
|
||||
@@ -184,20 +184,20 @@ export async function getGroupShopSid() {
|
||||
return channelSid;
|
||||
}
|
||||
|
||||
export async function getGVGAreaChannelSid(groupId: number, serverType: number, areaId: number) {
|
||||
const roomId = groupRoomId(CHANNEL_PREFIX.GVG_AREAS, `${groupId}_${serverType}_${areaId}`);
|
||||
export async function getGVGAreaChannelSid(groupKey: string, areaId: number) {
|
||||
const roomId = groupRoomId(CHANNEL_PREFIX.GVG_AREAS, `${groupKey}_${areaId}`);
|
||||
const channelSid = await channelServer(roomId);
|
||||
return channelSid;
|
||||
}
|
||||
|
||||
export async function getGVGAreaTeamChannelSid(groupId: number, serverType: number, areaId: number) {
|
||||
const roomId = groupRoomId(CHANNEL_PREFIX.GVG_AREA_BY_TEAM, `${groupId}_${serverType}_${areaId}`);
|
||||
export async function getGVGAreaTeamChannelSid(groupKey: string, areaId: number) {
|
||||
const roomId = groupRoomId(CHANNEL_PREFIX.GVG_AREA_BY_TEAM, `${groupKey}_${areaId}`);
|
||||
const channelSid = await channelServer(roomId);
|
||||
return channelSid;
|
||||
}
|
||||
|
||||
export async function getGVGCityTeamChannelSid(groupId: number, serverType: number, cityId: number) {
|
||||
const roomId = groupRoomId(CHANNEL_PREFIX.GVG_CITY, `${groupId}_${serverType}_${cityId}`);
|
||||
export async function getGVGCityTeamChannelSid(groupKey: string, cityId: number) {
|
||||
const roomId = groupRoomId(CHANNEL_PREFIX.GVG_CITY, `${groupKey}_${cityId}`);
|
||||
const channelSid = await channelServer(roomId);
|
||||
return channelSid;
|
||||
}
|
||||
|
||||
@@ -11,17 +11,15 @@ import { getGVGPeriodData } from "./gvgService";
|
||||
const gvgBattleMap: Map<string, GVGBattleData> = new Map();
|
||||
|
||||
class GVGBattleData {
|
||||
public groupId: number; // 战区
|
||||
public serverType: number; // 单服还是跨服
|
||||
public groupKey: string; // 战区
|
||||
|
||||
private teams: Map<string, GVGTeamMem> = new Map(); // 队伍, teamCode => team
|
||||
private rolePoints: Map<string, Map<number, string>> = new Map(); // roleId => pointId[],用于更新玩家的积分
|
||||
private roleToTeam: Map<string, string[]> = new Map(); // roleId => teamCode
|
||||
public areaToTeams: Map<number, Set<string>> = new Map(); // areaId => teamCode set,用于定时下发地图玩家数据
|
||||
|
||||
constructor(groupId: number, serverType: number) {
|
||||
this.groupId = groupId;
|
||||
this.serverType = serverType;
|
||||
constructor(groupKey: string) {
|
||||
this.groupKey = groupKey;
|
||||
}
|
||||
|
||||
public findTeamsByArea(areaId: number) {
|
||||
@@ -158,12 +156,11 @@ class GVGBattleData {
|
||||
}
|
||||
}
|
||||
|
||||
export function getGVGBattleData(groupId: number, serverType: number) {
|
||||
let key = `${groupId}_${serverType}`;
|
||||
if(!gvgBattleMap.has(key)) {
|
||||
gvgBattleMap.set(key, new GVGBattleData(groupId, serverType));
|
||||
export function getGVGBattleData(groupKey: string) {
|
||||
if(!gvgBattleMap.has(groupKey)) {
|
||||
gvgBattleMap.set(groupKey, new GVGBattleData(groupKey));
|
||||
}
|
||||
return gvgBattleMap.get(key);
|
||||
return gvgBattleMap.get(groupKey);
|
||||
}
|
||||
|
||||
export function getGVGBattleMap() {
|
||||
@@ -178,7 +175,7 @@ export async function initTeamToMem() {
|
||||
let teams = await GVGTeamModel.findByConfigId(configId);
|
||||
for(let team of teams) {
|
||||
if(dispatch(team.cityId.toString(), servers)?.id == sid) {
|
||||
let teamObj = getGVGBattleData(team.groupId, team.serverType);
|
||||
let teamObj = getGVGBattleData(team.groupKey);
|
||||
teamObj.enterCity(team);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,15 +47,15 @@ export async function getGVGCities(league: GVGLeagueType) {
|
||||
* 获取当前城池状态
|
||||
* @returns [{cityId: number, guardLeagueCode: string, guardLeagueName: string, teamCnt: number }]
|
||||
*/
|
||||
export async function getGVGCitiesInfo(configId: number, groupId: number, serverType: number, league?: GVGLeagueType) {
|
||||
let cities = await GVGCityModel.findGuardCity(configId, groupId, serverType);
|
||||
export async function getGVGCitiesInfo(configId: number, groupKey: string, league?: GVGLeagueType) {
|
||||
let cities = await GVGCityModel.findGuardCity(configId, groupKey);
|
||||
let result: GVGCityMapInfo[] = [];
|
||||
for(let city of cities) {
|
||||
let obj = new GVGCityMapInfo(city);
|
||||
if(league) {
|
||||
let players = (city.players||[]).filter(cur => cur.leagueCode == league.leagueCode);
|
||||
obj.setTeamCnt(players.length);
|
||||
let r = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK_BY_CITY, { configId, groupId, serverType });
|
||||
let r = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK_BY_CITY, { configId, groupKey });
|
||||
let score = await r.getMyScore({ leagueCode: league.leagueCode });
|
||||
obj.setScore(score||0);
|
||||
}
|
||||
@@ -93,8 +93,8 @@ export function checkMoveStatus(team: GVGTeamType, cityId: number, areaId: numbe
|
||||
return STATUS.SUCCESS;
|
||||
}
|
||||
|
||||
export async function initRobots(configId: number, groupId: number, serverType: number, cityId: number) {
|
||||
let robotTeams = await GVGTeamModel.findRobotTeams(groupId, serverType, cityId);
|
||||
export async function initRobots(configId: number, groupKey: string, cityId: number) {
|
||||
let robotTeams = await GVGTeamModel.findRobotTeams(groupKey, cityId);
|
||||
let updateDicPoints: DicGVGAreaPoint[] = [];
|
||||
let { areaIds = []} = gameData.gvgCity.get(cityId);
|
||||
for(let [_, point] of gameData.gvgAreaPoint) {
|
||||
@@ -105,9 +105,9 @@ export async function initRobots(configId: number, groupId: number, serverType:
|
||||
}
|
||||
}
|
||||
if(updateDicPoints.length > 0) {
|
||||
robotTeams = await GVGTeamModel.initRobots(configId, groupId, serverType, cityId, updateDicPoints);
|
||||
robotTeams = await GVGTeamModel.initRobots(configId, groupKey, cityId, updateDicPoints);
|
||||
// 存入内存
|
||||
let teamObj = getGVGBattleData(groupId, serverType);
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
teamObj.enterCity(...robotTeams);
|
||||
}
|
||||
return robotTeams;
|
||||
@@ -213,14 +213,14 @@ export async function gvgBattleStart() {
|
||||
|
||||
let { configId } = getGVGConfig();
|
||||
let guardCities = await GVGCityModel.findAllGuardCities(configId);
|
||||
for(let { cityId, groupId, serverType, guardLeague, guardLeagueName } of guardCities) {
|
||||
for(let { cityId, groupKey, guardLeague, guardLeagueName } of guardCities) {
|
||||
let sid = dispatch(cityId.toString(), servers)?.id;
|
||||
await pinus.app.rpc.guild.guildRemote.initCatapult.toServer(sid, cityId, groupId, serverType, guardLeague, guardLeagueName);
|
||||
await pinus.app.rpc.guild.guildRemote.initCatapult.toServer(sid, cityId, groupKey, guardLeague, guardLeagueName);
|
||||
}
|
||||
}
|
||||
|
||||
// 每次活动开始初始化投石车
|
||||
export async function initCatapult(cityId: number, groupId: number, serverType: number, leagueCode: string, leagueName: string) {
|
||||
export async function initCatapult(cityId: number, groupKey: string, leagueCode: string, leagueName: string) {
|
||||
let { configId } = getGVGConfig();
|
||||
|
||||
let leaguePrepare = await GVGLeaguePrepareModel.findByLeague(configId, leagueCode);
|
||||
@@ -238,9 +238,9 @@ export async function initCatapult(cityId: number, groupId: number, serverType:
|
||||
let dicArea = gameData.gvgArea.get(areaId);
|
||||
return dicArea && dicArea.areaType == GVG_AREA_TYPE.CATAPULT;
|
||||
});
|
||||
let teams = await GVGTeamModel.initCatapult(configId, groupId, serverType, cityId, leagueCode, leagueName, areaIds, atk, durability);
|
||||
let teams = await GVGTeamModel.initCatapult(configId, groupKey, cityId, leagueCode, leagueName, areaIds, atk, durability);
|
||||
// 处理内存
|
||||
let teamObj = getGVGBattleData(groupId, serverType);
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
teamObj.enterCity(...teams);
|
||||
}
|
||||
}
|
||||
@@ -258,13 +258,13 @@ export async function catapultHurt() {
|
||||
let dicGVGCity = gameData.gvgCity.get(catapult.cityId);
|
||||
let teams = await GVGTeamModel.attackByCatapult(teamCodes, catapult.captapultAtk, dicGVGCity.attackBirth);
|
||||
teamObj.battleEnd(teams);
|
||||
await sendMessageToGVGAreaByTeamWithSuc(teamObj.groupId, teamObj.serverType, catapult.areaId, PUSH_ROUTE.GVG_TEAM_ATTACKED, {
|
||||
await sendMessageToGVGAreaByTeamWithSuc(teamObj.groupKey, catapult.areaId, PUSH_ROUTE.GVG_TEAM_ATTACKED, {
|
||||
cityId: catapult.cityId, areaId: catapult.areaId, attackType: 1, teams: teams.map(team => new GVGTeamInList(team))
|
||||
});
|
||||
for(let team of teams) {
|
||||
await pushTeamBeHurtMessage(team);
|
||||
if(team.curTeamBreak && team.originPointId > 0) {
|
||||
await GVGCityAreaPointModel.leavePoint(configId, teamObj.groupId, teamObj.serverType, team.originPointId);
|
||||
await GVGCityAreaPointModel.leavePoint(configId, teamObj.groupKey, team.originPointId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -273,27 +273,27 @@ export async function catapultHurt() {
|
||||
|
||||
// 战斗积分更新
|
||||
export async function redisAddBattleScore(gvgTeam: GVGTeamType, incScore: number) {
|
||||
let { configId, groupId, serverType, cityId, roleId, isRobot } = gvgTeam;
|
||||
let { configId, groupKey, cityId, roleId, isRobot } = gvgTeam;
|
||||
if(isRobot) return;
|
||||
|
||||
let r = new Rank(REDIS_KEY.GVG_BATTLE_RANK, { configId, groupId, serverType, cityId });
|
||||
let r = new Rank(REDIS_KEY.GVG_BATTLE_RANK, { configId, groupKey, cityId });
|
||||
r.setRankWithRoleInfo(roleId, incScore, Date.now(), null, true);
|
||||
}
|
||||
|
||||
export async function redisAddSettleScore(gvgTeam: GVGTeamType, incScore: number) {
|
||||
let { configId, groupId, serverType, cityId, leagueCode, isRobot } = gvgTeam;
|
||||
let { configId, groupKey, cityId, leagueCode, isRobot } = gvgTeam;
|
||||
if(isRobot) return;
|
||||
|
||||
let r1 = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK, { configId, groupId, serverType });
|
||||
let r1 = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK, { configId, groupKey });
|
||||
r1.setRankWithLeagueInfo(leagueCode, incScore, Date.now(), null, true);
|
||||
|
||||
let r2 = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK_BY_CITY, { configId, groupId, serverType, cityId });
|
||||
let r2 = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK_BY_CITY, { configId, groupKey, cityId });
|
||||
r2.setRankWithLeagueInfo(leagueCode, incScore, Date.now(), null, true);
|
||||
}
|
||||
|
||||
// 获取排行榜
|
||||
export async function getBattleRanksByCity(configId: number, groupId: number, serverType: number, cityId: number, myLeague: GVGLeagueType) {
|
||||
let r = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK_BY_CITY, { configId, groupId, serverType, cityId });
|
||||
export async function getBattleRanksByCity(configId: number, groupKey: string, cityId: number, myLeague: GVGLeagueType) {
|
||||
let r = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK_BY_CITY, { configId, groupKey, cityId });
|
||||
r.setGenerFieldsFun((obj => {
|
||||
if(obj instanceof LeagueRankInfo) {
|
||||
return { rank: obj.rank, leagueCode: obj.code, leagueName: obj.name, score: obj.num }
|
||||
@@ -312,7 +312,7 @@ export async function getBattleRanksByCity(configId: number, groupId: number, se
|
||||
export async function gvgBattleSeconds() {
|
||||
const { configId } = getGVGConfig();
|
||||
const serverNames = await getAllServerName();
|
||||
let keys: { groupId: number, serverType: number, cityId: number }[] = []
|
||||
let keys: { groupKey: string, cityId: number }[] = []
|
||||
for(let [_key, teamObj] of getGVGBattleMap()) {
|
||||
// 每5秒给据点上的人加积分
|
||||
let teams = teamObj.findSettledPoint();
|
||||
@@ -327,16 +327,16 @@ export async function gvgBattleSeconds() {
|
||||
let dicArea = gameData.gvgArea.get(areaId);
|
||||
let teams = teamObj.findTeamsByArea(areaId);
|
||||
let result = teams.map(team => new GVGTeamSpineInMap(team, serverNames));
|
||||
await sendMessageToGVGAreaWithSuc(teamObj.groupId, teamObj.serverType, areaId, PUSH_ROUTE.GVG_AREA_SPINE_CHANGE, { cityId: dicArea.cityId, areaId, spines: result });
|
||||
await sendMessageToGVGAreaWithSuc(teamObj.groupKey, areaId, PUSH_ROUTE.GVG_AREA_SPINE_CHANGE, { cityId: dicArea.cityId, areaId, spines: result });
|
||||
|
||||
let index = keys.findIndex(cur => cur.cityId == dicArea.cityId && cur.groupId == teamObj.groupId && cur.serverType == teamObj.serverType);
|
||||
if(index == -1) keys.push({ groupId: teamObj.groupId, serverType: teamObj.serverType, cityId: dicArea.cityId });
|
||||
let index = keys.findIndex(cur => cur.cityId == dicArea.cityId && cur.groupKey == teamObj.groupKey);
|
||||
if(index == -1) keys.push({ groupKey: teamObj.groupKey, cityId: dicArea.cityId });
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for(let { groupId, serverType, cityId } of keys) {
|
||||
let r = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK_BY_CITY, { configId, groupId, serverType, cityId });
|
||||
for(let { groupKey, cityId } of keys) {
|
||||
let r = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK_BY_CITY, { configId, groupKey, cityId });
|
||||
let rawRanks = await r.getRankByRange();
|
||||
let ranks = rawRanks.map(obj => {
|
||||
if(obj instanceof LeagueRankInfo) {
|
||||
@@ -344,7 +344,7 @@ export async function gvgBattleSeconds() {
|
||||
}
|
||||
return obj
|
||||
})
|
||||
await sendMessageToGVGCityWithSuc(groupId, serverType, cityId, PUSH_ROUTE.GVG_CITY_RANK_UPDATE, { cityId, ranks });
|
||||
await sendMessageToGVGCityWithSuc(groupKey, cityId, PUSH_ROUTE.GVG_CITY_RANK_UPDATE, { cityId, ranks });
|
||||
|
||||
}
|
||||
|
||||
@@ -357,22 +357,22 @@ export async function gvgBattleEnd() {
|
||||
// 城池占领情况
|
||||
let keys = await findKeys(`${REDIS_KEY.GVG_BATTLE_LEAGUE_RANK_BY_CITY}:${configId}:`);
|
||||
let rankKeys = keys.map(key => {
|
||||
let [,, _groupId, _serverType, _cityId] = key.split(':');
|
||||
return { groupId: parseInt(_groupId), serverType: parseInt(_serverType), cityId: parseInt(_cityId) };
|
||||
let [,, groupKey, _cityId] = key.split(':');
|
||||
return { groupKey, cityId: parseInt(_cityId) };
|
||||
}).sort((a, b) => b.cityId - a.cityId);
|
||||
|
||||
for(let { groupId, serverType, cityId } of rankKeys) {
|
||||
for(let { groupKey, cityId } of rankKeys) {
|
||||
let dicCity = gameData.gvgCity.get(cityId);
|
||||
if(!dicCity) continue;
|
||||
|
||||
let r = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK_BY_CITY, { configId, groupId, serverType, cityId });
|
||||
let r = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK_BY_CITY, { configId, groupKey, cityId });
|
||||
let ranks = await r.getRankByRange();
|
||||
// 排名最高占领城池
|
||||
for(let obj of ranks) {
|
||||
let rankInfo = <LeagueRankInfo>obj;
|
||||
let cnt = guardLeagueCnt.get(rankInfo.code)||0;
|
||||
if(cnt < GVG.GVG_CITY_OCCUPIED_NUMBER) {
|
||||
await GVGCityModel.guardCity(configId, groupId, serverType, cityId, rankInfo);
|
||||
await GVGCityModel.guardCity(configId, groupKey, cityId, rankInfo);
|
||||
let dicCityAdd = gameData.gvgCityAdd.get(dicCity.cityType);
|
||||
await sendMailToLeagueByContent(MAIL_TYPE.GVG_GUARD_CITY_REWARD, rankInfo.code, { params: [dicCity.cityName], goods: dicCityAdd.occupyReward });
|
||||
guardLeagueCnt.set(rankInfo.code, cnt + 1);
|
||||
@@ -384,11 +384,8 @@ export async function gvgBattleEnd() {
|
||||
// 联军排行榜发放奖励
|
||||
let leagueKeys = await findKeys(`${REDIS_KEY.GVG_BATTLE_LEAGUE_RANK}:${configId}:`);
|
||||
for(let key of leagueKeys) {
|
||||
let [,, _groupId, _serverType] = key.split(':');
|
||||
let groupId = parseInt(_groupId);
|
||||
let serverType = parseInt(_serverType);
|
||||
|
||||
let r = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK, { configId, groupId, serverType });
|
||||
let [,, groupKey] = key.split(':');
|
||||
let r = new Rank(REDIS_KEY.GVG_BATTLE_LEAGUE_RANK, { configId, groupKey });
|
||||
let ranks = await r.getRankByRange();
|
||||
// 联军排行榜发放奖励
|
||||
for(let _obj of ranks) {
|
||||
@@ -401,10 +398,8 @@ export async function gvgBattleEnd() {
|
||||
// 个人排行榜发放奖励
|
||||
let playerKeys = await findKeys(`${REDIS_KEY.GVG_BATTLE_RANK}:${configId}:`);
|
||||
for(let key of playerKeys) {
|
||||
let [,, _groupId, _serverType] = key.split(':');
|
||||
let groupId = parseInt(_groupId);
|
||||
let serverType = parseInt(_serverType);
|
||||
let r = new Rank(REDIS_KEY.GVG_BATTLE_RANK, { configId, groupId, serverType });
|
||||
let [,, groupKey] = key.split(':');
|
||||
let r = new Rank(REDIS_KEY.GVG_BATTLE_RANK, { configId, groupKey });
|
||||
let ranks = await r.getRankByRange();
|
||||
|
||||
for(let _obj of ranks) {
|
||||
@@ -420,10 +415,10 @@ export async function gvgBattleEnd() {
|
||||
|
||||
// —————————— 推送相关 —————————— //
|
||||
// 推送
|
||||
export async function battleEndSendMessage(groupId: number, serverType: number, cityId: number, defenseTeam: GVGTeamType, attackTeam: GVGTeamType) {
|
||||
export async function battleEndSendMessage(groupKey: string, cityId: number, defenseTeam: GVGTeamType, attackTeam: GVGTeamType) {
|
||||
let areaId = defenseTeam.curTeamBreak? defenseTeam.fromAreaId: defenseTeam.areaId;
|
||||
// 推送伤害
|
||||
await sendMessageToGVGAreaByTeamWithSuc(groupId, serverType, areaId, PUSH_ROUTE.GVG_TEAM_ATTACKED, {
|
||||
await sendMessageToGVGAreaByTeamWithSuc(groupKey, areaId, PUSH_ROUTE.GVG_TEAM_ATTACKED, {
|
||||
cityId, areaId, attackType: 3, teams: [new GVGTeamInList(defenseTeam), new GVGTeamInList(attackTeam)]
|
||||
});
|
||||
await pushTeamBeHurtMessage(defenseTeam, attackTeam);
|
||||
@@ -434,14 +429,14 @@ export async function battleEndSendMessage(groupId: number, serverType: number,
|
||||
export async function pushTeamBeHurtMessage(team: GVGTeamType, replaceTeam?: GVGTeamType) {
|
||||
|
||||
if(team.curTeamBreak && team.originPointId > 0) {
|
||||
await sendMessageToGVGAreaByTeamWithSuc(team.groupId, team.serverType, team.fromAreaId, PUSH_ROUTE.GVG_AREA_POINT_CHANGE, {
|
||||
await sendMessageToGVGAreaByTeamWithSuc(team.groupKey, team.fromAreaId, PUSH_ROUTE.GVG_AREA_POINT_CHANGE, {
|
||||
cityId: team.cityId, areaId: team.fromAreaId, point: new GVGTeamInListOnPoint(team.originPointId, replaceTeam && !replaceTeam.curTeamBreak, replaceTeam)
|
||||
});
|
||||
}
|
||||
|
||||
await pushTeamMoveMessage(team);
|
||||
if(team.isRobot && team.isBroken) {
|
||||
await sendMessageToGVGAreaByTeamWithSuc(team.groupId, team.serverType, team.fromAreaId, PUSH_ROUTE.GVG_PLAYER_LEAVE_AREA, {
|
||||
await sendMessageToGVGAreaByTeamWithSuc(team.groupKey, team.fromAreaId, PUSH_ROUTE.GVG_PLAYER_LEAVE_AREA, {
|
||||
cityId: team.cityId, areaId: team.fromAreaId, teamCode: team.teamCode
|
||||
});
|
||||
}
|
||||
@@ -450,12 +445,12 @@ export async function pushTeamBeHurtMessage(team: GVGTeamType, replaceTeam?: GVG
|
||||
export async function pushTeamMoveMessage(team: GVGTeamType) {
|
||||
if(team.fromAreaId != team.areaId) {
|
||||
if(team.fromAreaId > 0) {
|
||||
await sendMessageToGVGAreaByTeamWithSuc(team.groupId, team.serverType, team.fromAreaId, PUSH_ROUTE.GVG_PLAYER_LEAVE_AREA, {
|
||||
await sendMessageToGVGAreaByTeamWithSuc(team.groupKey, team.fromAreaId, PUSH_ROUTE.GVG_PLAYER_LEAVE_AREA, {
|
||||
cityId: team.cityId, areaId: team.fromAreaId, teamCode: team.teamCode
|
||||
});
|
||||
}
|
||||
if(team.areaId > 0) {
|
||||
await sendMessageToGVGAreaByTeamWithSuc(team.groupId, team.serverType, team.areaId, PUSH_ROUTE.GVG_PLAYER_AREA_ADD, {
|
||||
await sendMessageToGVGAreaByTeamWithSuc(team.groupKey, team.areaId, PUSH_ROUTE.GVG_PLAYER_AREA_ADD, {
|
||||
cityId: team.cityId, areaId: team.fromAreaId, player: new GVGTeamInList(team)
|
||||
});
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ import { Rank } from "../rankService";
|
||||
import { findKeys, getAllServerName, redisClient } from "../redisService";
|
||||
import { combinePushItem } from "./gvgItemService";
|
||||
import { addVestigeLeagueRankRec } from "./gvgRecService";
|
||||
import { getGroupIdOfServer, getGVGServerType } from "./gvgService";
|
||||
import { getGroupIdOfServer, getGroupKey, getGVGServerType } from "./gvgService";
|
||||
|
||||
// 备战期的遗迹和激战期的开始结束战斗时间
|
||||
export function getFightTimeByPeriod(period: GVG_PERIOD, time?: number) {
|
||||
@@ -49,14 +49,14 @@ export function checkFightTime() {
|
||||
|
||||
// 征战中原每天随机的遗迹点
|
||||
export async function getVestiges(serverId: number) {
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
let groupKey = await getGroupKey(serverId);
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
let vestige = await GVGVestigeModel.getVestige(groupId);
|
||||
let vestige = await GVGVestigeModel.getVestige(groupKey);
|
||||
if(!vestige) {
|
||||
let dicGVGVestige = gameData.gvgVestigeByServerType.get(serverType)||[];
|
||||
let cnt = gameData.gvgVestigeCntByServerType.get(serverType)||0;
|
||||
let randResult = getRandEelm(dicGVGVestige, cnt);
|
||||
vestige = await GVGVestigeModel.initTodayVestige(groupId, serverType, randResult);
|
||||
vestige = await GVGVestigeModel.initTodayVestige(groupKey, randResult);
|
||||
}
|
||||
return vestige.vestiges||[];
|
||||
}
|
||||
@@ -98,9 +98,9 @@ function randomRank(min: number, max: number, len: number) {
|
||||
}
|
||||
|
||||
// 根据ranks获取oppPlayer显示数据
|
||||
export async function getOppPlayerByRanks(serverId: number, groupId: number, serverType: number, vestigeId: number, ranks: number[]) {
|
||||
export async function getOppPlayerByRanks(serverId: number, groupKey: string, vestigeId: number, ranks: number[]) {
|
||||
let serverNames = await getAllServerName();
|
||||
let opps = await GVGVestigeRankModel.findByRanks(groupId, serverType, vestigeId, ranks);
|
||||
let opps = await GVGVestigeRankModel.findByRanks(groupKey, 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);
|
||||
@@ -171,19 +171,19 @@ export function isRobot(roleId: string) {
|
||||
return roleId.startsWith('robot');
|
||||
}
|
||||
|
||||
export async function checkVestigeOppStatus(configId: number, groupId: number, serverType: number, vestigeId: number, roleId: string, myRank: number, targetRoleId: string, rank: number) {
|
||||
export async function checkVestigeOppStatus(configId: number, groupKey: string, vestigeId: number, roleId: string, myRank: number, targetRoleId: string, rank: number) {
|
||||
|
||||
let myData = await getMyVestigeRank(configId, groupId, serverType, vestigeId, roleId);
|
||||
let myData = await getMyVestigeRank(configId, groupKey, vestigeId, roleId);
|
||||
if(!myData || myData.rank != myRank) return VESTIGE_OPP_STATUS.MY_RANK_CHANGE;
|
||||
|
||||
if(isRobot(targetRoleId)) {
|
||||
let targetData = await GVGVestigeRankModel.findByRank(configId, groupId, serverType, vestigeId, rank);
|
||||
let targetData = await GVGVestigeRankModel.findByRank(configId, groupKey, vestigeId, rank);
|
||||
if(targetData) return VESTIGE_OPP_STATUS.OPP_RANK_CHANGE;
|
||||
} else {
|
||||
let targetData = await GVGVestigeRankModel.findByRole(vestigeId, targetRoleId);
|
||||
if(targetData?.rank != rank) return VESTIGE_OPP_STATUS.OPP_RANK_CHANGE;
|
||||
}
|
||||
let lockResult = await GVGVestigeLockModel.chooseOppLock(groupId, serverType, vestigeId, rank, configId, roleId, targetRoleId);
|
||||
let lockResult = await GVGVestigeLockModel.chooseOppLock(groupKey, vestigeId, rank, configId, roleId, targetRoleId);
|
||||
if(!lockResult) return VESTIGE_OPP_STATUS.OPP_IS_LOCKED;
|
||||
|
||||
return VESTIGE_OPP_STATUS.BATTLE;
|
||||
@@ -314,7 +314,7 @@ export function calBreakGoods(vestige: number, historyRank: number, rank: number
|
||||
}
|
||||
|
||||
// 玩家当天的驻扎记录,没有的话就创建一个
|
||||
export async function getMyVestigeRank(configId: number, groupId: number, serverType: number, vestigeId: number, roleId: string, myLeague?: GVGLeagueType) {
|
||||
export async function getMyVestigeRank(configId: number, groupKey: string, vestigeId: number, roleId: string, myLeague?: GVGLeagueType) {
|
||||
|
||||
let myVestigeRank = await GVGVestigeRankModel.findByRole(vestigeId, roleId); // 我在这个遗迹的排名
|
||||
if(!myVestigeRank) {
|
||||
@@ -324,31 +324,31 @@ export async function getMyVestigeRank(configId: number, groupId: number, server
|
||||
myLeague = await GVGLeagueModel.findLeagueByGuild(role.guildCode);
|
||||
if(!myLeague) return null
|
||||
}
|
||||
myVestigeRank = await GVGVestigeRankModel.initRank(configId, vestigeId, groupId, serverType, role, myLeague.leagueCode, oppRanks );
|
||||
myVestigeRank = await GVGVestigeRankModel.initRank(configId, vestigeId, groupKey, role, myLeague.leagueCode, oppRanks );
|
||||
}
|
||||
return myVestigeRank;
|
||||
}
|
||||
|
||||
// 保存排行榜
|
||||
export async function saveScoreToRank(rec: GVGVestigeRecType) {
|
||||
await savePlayerRank(rec.configId, rec.groupId, rec.serverType, rec.vestigeId, rec.attackInfo);
|
||||
await savePlayerRank(rec.configId, rec.groupId, rec.serverType, rec.vestigeId, rec.defenseInfo);
|
||||
await savePlayerRank(rec.configId, rec.groupKey, rec.vestigeId, rec.attackInfo);
|
||||
await savePlayerRank(rec.configId, rec.groupKey, rec.vestigeId, rec.defenseInfo);
|
||||
}
|
||||
|
||||
export function getDayKeyInfo() {
|
||||
return moment().format('YYMMDD');
|
||||
}
|
||||
|
||||
export async function savePlayerRank(configId: number, groupId: number, serverType: number, vestigeId: number, playerInfo: Partial<OppPlayerInfo>) {
|
||||
export async function savePlayerRank(configId: number, groupKey: string, vestigeId: number, playerInfo: Partial<OppPlayerInfo>) {
|
||||
if(playerInfo.isRobot) return
|
||||
let dicRankMap = gameData.gvgVestige.get(vestigeId);
|
||||
let newRank = dicRankMap?.get(playerInfo.newRank)?.score||0;
|
||||
let oldRank = dicRankMap?.get(playerInfo.oldRank)?.score||0;
|
||||
let myScore = await GVGVestigeSumRankModel.incScore(playerInfo.roleId, playerInfo.leagueCode, configId, groupId, serverType, newRank - oldRank);
|
||||
let r1 = new Rank(REDIS_KEY.GVG_VESTIGE_MEMBER_ALL, { serverType, groupId, day: getDayKeyInfo() });
|
||||
let myScore = await GVGVestigeSumRankModel.incScore(playerInfo.roleId, playerInfo.leagueCode, configId, groupKey, newRank - oldRank);
|
||||
let r1 = new Rank(REDIS_KEY.GVG_VESTIGE_MEMBER_ALL, { groupKey, day: getDayKeyInfo() });
|
||||
await r1.setRankWithRoleInfo(playerInfo.roleId, myScore.score, myScore.updatedAt.getTime());
|
||||
let leagueScore = await GVGVestigeLeagueRankModel.incScore(configId, playerInfo.leagueCode, groupId, serverType, newRank - oldRank);
|
||||
let r2 = new Rank(REDIS_KEY.GVG_VESTIGE_LEAGUE, { serverType, groupId, day: getDayKeyInfo() });
|
||||
let leagueScore = await GVGVestigeLeagueRankModel.incScore(configId, playerInfo.leagueCode, groupKey, newRank - oldRank);
|
||||
let r2 = new Rank(REDIS_KEY.GVG_VESTIGE_LEAGUE, { groupKey, day: getDayKeyInfo() });
|
||||
await r2.setRankWithLeagueInfo(playerInfo.leagueCode, leagueScore.score, leagueScore.updatedAt.getTime());
|
||||
}
|
||||
|
||||
@@ -389,23 +389,19 @@ export async function saveVestigeRankSchedule() {
|
||||
let day = getDayKeyInfo();
|
||||
let keys = await findKeys(`${REDIS_KEY.GVG_VESTIGE_LEAGUE}:${day}:`);
|
||||
for(let key of keys) {
|
||||
let [,, _groupId, _serverType] = key.split(':');
|
||||
let groupId = parseInt(_groupId);
|
||||
let serverType = parseInt(_serverType);
|
||||
let r = new Rank(REDIS_KEY.GVG_VESTIGE_LEAGUE, { groupId, serverType, day});
|
||||
let [,, groupKey] = key.split(':');
|
||||
let r = new Rank(REDIS_KEY.GVG_VESTIGE_LEAGUE, { groupKey, day});
|
||||
let ranks = await r.getRankByRangeRaw();
|
||||
await GVGVestigeLeagueRankModel.saveRank(groupId, serverType, ranks);
|
||||
await GVGVestigeLeagueRankModel.saveRank(groupKey, ranks);
|
||||
await addVestigeLeagueRankRec(config.configId, ranks);
|
||||
}
|
||||
|
||||
let memberKeys = await findKeys(`${REDIS_KEY.GVG_VESTIGE_MEMBER_ALL}:${day}:`);
|
||||
for(let key of memberKeys) {
|
||||
let [,, _groupId, _serverType] = key.split(':');
|
||||
let groupId = parseInt(_groupId);
|
||||
let serverType = parseInt(_serverType);
|
||||
let r = new Rank(REDIS_KEY.GVG_VESTIGE_MEMBER_ALL, { groupId, serverType, day});
|
||||
let [,, groupKey] = key.split(':');
|
||||
let r = new Rank(REDIS_KEY.GVG_VESTIGE_MEMBER_ALL, { groupKey, day});
|
||||
let ranks = await r.getRankByRangeRaw();
|
||||
await GVGVestigeSumRankModel.saveRank(groupId, serverType, ranks);
|
||||
await GVGVestigeSumRankModel.saveRank(groupKey, ranks);
|
||||
}
|
||||
let playerSumRanks = await GVGVestigeSumRankModel.findAllScores();
|
||||
await GVGUserDataModel.addVestigeScores(config.configId, playerSumRanks);
|
||||
|
||||
@@ -292,4 +292,14 @@ export async function getLeagueRankBox(configId: number, leagueCode: string, rol
|
||||
let canReceivePlayerRanks = await GVGVestigeSumRankModel.getCanReceiveRanks(configId, roleId);
|
||||
let { canReceiveBox } = calVestigeLeagueBoxRewards(canReceiveLeagueRanks, canReceivePlayerRanks);
|
||||
return { canReceiveBox }
|
||||
}
|
||||
|
||||
export async function getGroupKey(serverId: number) {
|
||||
let serverType = await getGVGServerType(serverId);
|
||||
if(serverType == GVG_SERVER_TYPE.SINGLE) {
|
||||
return `s${serverId}`;
|
||||
} else {
|
||||
let groupId = await getGroupIdOfServer(serverId);
|
||||
return `g${groupId}`;
|
||||
}
|
||||
}
|
||||
@@ -61,21 +61,21 @@ export async function sendMessageToGuild(guildCode: string, route: string, data:
|
||||
await pinus.app.rpc.chat.chatRemote.pushMessage.toServer(channelSid, roomId, route, data);
|
||||
}
|
||||
|
||||
export async function sendMessageToGVGAreaWithSuc(groupId: number, serverType: number, areaId: number, route: string, data: any) {
|
||||
let channelSid = await getGVGAreaChannelSid(groupId, serverType, areaId);
|
||||
let roomId = groupRoomId(CHANNEL_PREFIX.GVG_AREAS, `${groupId}_${serverType}_${areaId}`);
|
||||
export async function sendMessageToGVGAreaWithSuc(groupKey: string, areaId: number, route: string, data: any) {
|
||||
let channelSid = await getGVGAreaChannelSid(groupKey, areaId);
|
||||
let roomId = groupRoomId(CHANNEL_PREFIX.GVG_AREAS, `${groupKey}_${areaId}`);
|
||||
await pinus.app.rpc.chat.chatRemote.pushMessage.toServer(channelSid, roomId, route, resResult(STATUS.SUCCESS, data));
|
||||
}
|
||||
|
||||
export async function sendMessageToGVGAreaByTeamWithSuc(groupId: number, serverType: number, areaId: number, route: string, data: any) {
|
||||
let channelSid = await getGVGAreaTeamChannelSid(groupId, serverType, areaId);
|
||||
let roomId = groupRoomId(CHANNEL_PREFIX.GVG_AREA_BY_TEAM, `${groupId}_${serverType}_${areaId}`);
|
||||
export async function sendMessageToGVGAreaByTeamWithSuc(groupKey: string, areaId: number, route: string, data: any) {
|
||||
let channelSid = await getGVGAreaTeamChannelSid(groupKey, areaId);
|
||||
let roomId = groupRoomId(CHANNEL_PREFIX.GVG_AREA_BY_TEAM, `${groupKey}_${areaId}`);
|
||||
await pinus.app.rpc.chat.chatRemote.pushMessage.toServer(channelSid, roomId, route, resResult(STATUS.SUCCESS, data));
|
||||
}
|
||||
|
||||
export async function sendMessageToGVGCityWithSuc(groupId: number, serverType: number, cityId: number, route: string, data: any) {
|
||||
let channelSid = await getGVGCityTeamChannelSid(groupId, serverType, cityId);
|
||||
let roomId = groupRoomId(CHANNEL_PREFIX.GVG_CITY, `${groupId}_${serverType}_${cityId}`);
|
||||
export async function sendMessageToGVGCityWithSuc(groupKey: string, cityId: number, route: string, data: any) {
|
||||
let channelSid = await getGVGCityTeamChannelSid(groupKey, cityId);
|
||||
let roomId = groupRoomId(CHANNEL_PREFIX.GVG_CITY, `${groupKey}_${cityId}`);
|
||||
await pinus.app.rpc.chat.chatRemote.pushMessage.toServer(channelSid, roomId, route, resResult(STATUS.SUCCESS, data));
|
||||
}
|
||||
|
||||
|
||||
@@ -1183,9 +1183,9 @@ export async function setRankRedisFromDb(type: string, args?: { serverId?: numbe
|
||||
}
|
||||
} else if (type == REDIS_KEY.GVG_VESTIGE_MEMBER_ALL) {
|
||||
let ranks = await GVGVestigeSumRankModel.findRankByGroupId();
|
||||
for(let { _id: { groupId, serverType }, arr, roleIds } of ranks) {
|
||||
for(let { _id: groupKey, arr, roleIds } of ranks) {
|
||||
let roles = await RoleModel.findByRoleIds(roleIds, ROLE_SELECT.RANK);
|
||||
let r = new Rank(type, { groupId, serverType, day: getDayKeyInfo() });
|
||||
let r = new Rank(type, { groupKey, day: getDayKeyInfo() });
|
||||
r.setIsInit(true);
|
||||
for(let { roleId, score, updatedAt } of arr) {
|
||||
let role = roles.find(cur => cur.roleId == roleId);
|
||||
@@ -1196,9 +1196,9 @@ export async function setRankRedisFromDb(type: string, args?: { serverId?: numbe
|
||||
}
|
||||
} else if (type == REDIS_KEY.GVG_VESTIGE_LEAGUE) {
|
||||
let ranks = await GVGVestigeLeagueRankModel.findRank();
|
||||
for(let { _id: { groupId, serverType }, arr, leagueCodes } of ranks) {
|
||||
for(let { _id: groupKey, arr, leagueCodes } of ranks) {
|
||||
let leagues = await GVGLeagueModel.findByCodes(leagueCodes);
|
||||
let r = new Rank(type, { groupId, serverType, day: getDayKeyInfo() });
|
||||
let r = new Rank(type, { groupKey, day: getDayKeyInfo() });
|
||||
r.setIsInit(true);
|
||||
for(let { leagueCode, score, updatedAt } of arr) {
|
||||
let league = leagues.find(cur => cur.leagueCode == leagueCode);
|
||||
|
||||
@@ -706,8 +706,8 @@ export async function getGVGHistoryAreas(roleId: string) {
|
||||
return areaIds.split('&');
|
||||
}
|
||||
|
||||
export async function addGVGHistoryAreas(roleId: string, groupId: number, serverType: number, areaIds: number[]) {
|
||||
let key = areaIds.map(areaId => `${groupId}_${serverType}_${areaId}`).join('&');
|
||||
export async function addGVGHistoryAreas(roleId: string, groupKey: string, areaIds: number[]) {
|
||||
let key = areaIds.map(areaId => `${groupKey}_${areaId}`).join('&');
|
||||
const result = await redisClient().hsetAsync(REDIS_KEY.GVG_HISTORY_AREA, roleId, key);
|
||||
return result;
|
||||
}
|
||||
@@ -728,8 +728,8 @@ export async function getGVGHistoryAreaTeam(roleId: string) {
|
||||
return channelName
|
||||
}
|
||||
|
||||
export async function addGVGHistoryAreaTeam(roleId: string, groupId: number, serverType: number, areaId: number) {
|
||||
const result = await redisClient().hsetAsync(REDIS_KEY.GVG_HISTORY_AREA_TEAM, roleId, `${groupId}_${serverType}_${areaId}`);
|
||||
export async function addGVGHistoryAreaTeam(roleId: string, groupKey: string, areaId: number) {
|
||||
const result = await redisClient().hsetAsync(REDIS_KEY.GVG_HISTORY_AREA_TEAM, roleId, `${groupKey}_${areaId}`);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -749,8 +749,8 @@ export async function getGVGHistoryCityTeam(roleId: string) {
|
||||
return channelName
|
||||
}
|
||||
|
||||
export async function addGVGHistoryCityTeam(roleId: string, groupId: number, serverType: number, cityId: number) {
|
||||
const result = await redisClient().hsetAsync(REDIS_KEY.GVG_HISTORY_CITY, roleId, `${groupId}_${serverType}_${cityId}`);
|
||||
export async function addGVGHistoryCityTeam(roleId: string, groupKey: string, cityId: number) {
|
||||
const result = await redisClient().hsetAsync(REDIS_KEY.GVG_HISTORY_CITY, roleId, `${groupKey}_${cityId}`);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -41,7 +41,6 @@ module.exports = {
|
||||
],
|
||||
'guild': [
|
||||
{ 'id': 'guild-server-1', 'host': '127.0.0.1', 'port': 6057, "args": " --inspect=9239" },
|
||||
{ 'id': 'guild-server-2', 'host': '127.0.0.1', 'port': 6058, "args": " --inspect=9240" }
|
||||
],
|
||||
'activity': [
|
||||
{ 'id': 'activity-server-1', 'host': '127.0.0.1', 'port': 6059, "args": " --inspect=9241" },
|
||||
|
||||
Reference in New Issue
Block a user