✨ feat(gvg): 添加推送

This commit is contained in:
luying
2023-02-17 11:00:25 +08:00
parent 605ee869a9
commit 2eea5d86d9
15 changed files with 319 additions and 103 deletions
@@ -11,7 +11,7 @@ import { COM_BTL_QUALITY, HERO_SELECT, DEBUG_MAGIC_WORD, REDIS_KEY, TASK_TYPE, E
import { nowSeconds, getZeroPoint } from '../../../pubUtils/timeUtil';
import { rmRoleFromQueue, roleLeave, getRoleOnlineInfo, roleLogin, getOnlineRoleByUserCode } from '../../../services/redisService';
import { addRoleToGuildChannel, addRoleToSysChannel, addRoleToWorldChannel, leaveGroupShopChannel, leaveGuildAuctionChannel, leaveGuildChannel, leaveSysChannel, leaveWorldAuctionChannel, leaveWorldChannel } from '../../../services/chatService';
import { addRoleToGuildChannel, addRoleToSysChannel, addRoleToWorldChannel, leaveGroupShopChannel, leaveGuildAuctionChannel, leaveGuildChannel, leaveGVGAreaChannel, leaveGVGAreaTeamChannel, leaveSysChannel, leaveWorldAuctionChannel, leaveWorldChannel } from '../../../services/chatService';
import { reportOneOnline, savePlayTime } from '../../../services/authenticateService';
import { checkTaskInEntry, } from '../../../services/task/taskService';
import { pushData, kickUser, getModuleData, assignServer, leaveServer } from '../../../services/connectorService';
@@ -213,12 +213,18 @@ export class EntryHandler {
let channelService = this.app.get('channelService');
let channel = channelService.getChannel(roleId, true);
channel.leave(roleId, sid);
await leaveSysChannel(roleId, sid, serverId);
await leaveWorldChannel(roleId, sid, serverId);
await leaveGuildChannel(roleId, sid, guildCode);
await leaveGuildAuctionChannel(roleId, sid, guildCode);
await leaveWorldAuctionChannel(roleId, sid, serverId);
await leaveGroupShopChannel(roleId, sid);
try {
await leaveSysChannel(roleId, sid, serverId);
await leaveWorldChannel(roleId, sid, serverId);
await leaveGuildChannel(roleId, sid, guildCode);
await leaveGuildAuctionChannel(roleId, sid, guildCode);
await leaveWorldAuctionChannel(roleId, sid, serverId);
await leaveGroupShopChannel(roleId, sid);
await leaveGVGAreaChannel(roleId, sid);
await leaveGVGAreaTeamChannel(roleId, sid);
} catch(e) {
console.error(e);
}
RoleModel.updateRoleInfo(roleId, { quitTime: nowSeconds() });
// if(teamCode) { // 如果有寻宝中的队伍,那么等于战败
// setComBtlOnUserLeave(roleId, teamCode)
@@ -4,11 +4,11 @@ import { GVGAreaInMap, GVGTeamInList, GVGTeamInListOnPoint, GVGTeamSpineInMap, L
import { GVGTeamModel, GVGTeamType, GVGTeamUpdate } from '../../../db/GVGTeam';
import { GVGUserDataModel } from '../../../db/GVGUserData';
import { GVGCityModel } from '../../../db/GVGCity';
import { Application, BackendSession, ChannelService, HandlerService } from "pinus";
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 { addBattleRankScore, calBattleScoreByCe, checkAreaIsInCity, checkGVGBattleStart, checkMoveStatus, getBattleRanks, getBirthAreaOfCity, getGVGWarId, getOppHeroes, initRobots, teamBreak } from '../../../services/gvg/gvgBattleService';
import { addBattleRankScore, calBattleScoreByCe, checkAreaIsInCity, checkGVGBattleStart, checkMoveStatus, getBattleRanks, getBirthAreaOfCity, getGVGWarId, getOppHeroes, initRobots, pushTeamMoveMessage, teamBreak } from '../../../services/gvg/gvgBattleService';
import { getGVGBattleData } from '../../../services/gvg/gvgBattleMemory';
import { nowSeconds } from '../../../pubUtils/timeUtil';
import { GVGBattleRecModel } from '../../../db/GVGBattleRec';
@@ -19,11 +19,12 @@ import { checkBattleHeroesByHid } from '../../../services/normalBattleService';
import { pick } from 'underscore';
import { SaveTeamParam, SaveTeamUpdateParam } from '../../../domain/gvgField/gvgDb';
import { GVG_PERIOD, PUSH_ROUTE, STATUS } from '../../../consts';
import { sendMessageToUserWithSuc } from '../../../services/pushService';
import { sendMessageToGVGAreaByTeamWithSuc, sendMessageToUserWithSuc } from '../../../services/pushService';
import { GVGHeroInfo } from '../../../domain/dbGeneral';
import { ArtifactModel } from '../../../db/Artifact';
import { getHeroesAttributes } from '../../../services/playerCeService';
import { gvgBattleEndSchedule, gvgBattleStartSchedule } from '../../../services/timeTaskService';
import { addRoleToAreaChannel, addRoleToAreaTeamChannel, leaveGVGAreaChannel, leaveGVGAreaTeamChannel } from '../../../services/chatChannelService';
export default function (app: Application) {
new HandlerService(app, {});
@@ -218,6 +219,7 @@ export class GVGBattleHandler {
async leaveCity(msg: { cityId: number }, session: BackendSession) {
const roleId = session.get('roleId');
const sid = session.get('sid');
const guildCode = session.get('guildCode');
const serverId = session.get('serverId');
const { cityId } = msg;
@@ -249,11 +251,16 @@ export class GVGBattleHandler {
let teamObj = getGVGBattleData(groupId, serverType);
teamObj.leaveCity(roleId);
await leaveGVGAreaChannel(roleId, sid);
await leaveGVGAreaTeamChannel(roleId, sid);
return resResult(STATUS.SUCCESS);
}
// 获取区域上的队伍
async getAreaTeams(msg: { cityId: number, areaIds: number[] }, session: BackendSession) {
const roleId = session.get('roleId');
const sid = session.get('sid');
const serverId = session.get('serverId');
const { cityId, areaIds } = msg;
@@ -271,6 +278,9 @@ export class GVGBattleHandler {
let spines = teams.map(team => new GVGTeamSpineInMap(team, serverNames));
result.push({ areaId, spines })
}
// 加入频道
await leaveGVGAreaChannel(roleId, sid);
await addRoleToAreaChannel(roleId, groupId, serverType, areaIds, sid);
return resResult(STATUS.SUCCESS, { cityId, areas: result });
}
@@ -278,6 +288,7 @@ export class GVGBattleHandler {
// 点击自己的编队获取区域列表
async getAreaOfMyTeam(msg: { cityId: number, teamCode: string }, session: BackendSession) {
const roleId = session.get('roleId');
const sid = session.get('sid');
const serverId = session.get('serverId');
const { cityId, teamCode } = msg;
@@ -302,6 +313,10 @@ export class GVGBattleHandler {
players.push(obj);
}
}
await leaveGVGAreaTeamChannel(roleId, sid);
await addRoleToAreaTeamChannel(roleId, groupId, serverType, myTeam.areaId, sid);
return resResult(STATUS.SUCCESS, {
cityId, areaId: myTeam.areaId, points, players
});
@@ -327,6 +342,7 @@ export class GVGBattleHandler {
let teamObj = getGVGBattleData(groupId, serverType);
teamObj.move(teamCode, areaId, team.fromAreaId, team.startMoveTime, team.stopMoveTime);
await pushTeamMoveMessage(team);
return resResult(STATUS.SUCCESS, { areaId, cityId, stopMoveTime: team.stopMoveTime });
}
@@ -466,10 +482,8 @@ export class GVGBattleHandler {
teamObj.battleEnd([attackTeam, defenseTeam]);
// 更新rec
await GVGBattleRecModel.battleEnd(battleCode, isSuccess);
// TODO 完善推送
if(!defenseTeam.isRobot) {
sendMessageToUserWithSuc(defenseTeam.roleId, PUSH_ROUTE.GVG_TEAM_ATTACKED, { cityId, areaId: defenseTeam.areaId, teams: [defenseTeam] });
}
return resResult(STATUS.SUCCESS, { curTeam: new MyTeamInfo(attackTeam) });
}
@@ -510,12 +524,12 @@ export class GVGBattleHandler {
}
async debugStartSchedule() {
await gvgBattleStartSchedule();
await pinus.app.rpc.systimer.systimerRemote.gvgBattleStartSchedule.broadcast();
return resResult(STATUS.SUCCESS);
}
async debugEndSchedule() {
await gvgBattleEndSchedule();
await pinus.app.rpc.systimer.systimerRemote.gvgBattleEndSchedule.broadcast();
return resResult(STATUS.SUCCESS);
}
}
@@ -1,5 +1,5 @@
import { Application, ChannelService } from 'pinus';
import { guildActivityStart, gateActivityEnd, cityActivityEnd, raceActivityEnd, guildActivitySchedule, auctionSchedule, initMaintenance, stopMaintenance, initAutoCreateServer, addMailsToSchedule, updateTimeLimitRank, setLadderCountDown, cancelLadderCountDown, initSumSchedule, setPvpSeasonSchedule, initGVGConfigSchedule } from '../../../services/timeTaskService';
import { guildActivityStart, gateActivityEnd, cityActivityEnd, raceActivityEnd, guildActivitySchedule, auctionSchedule, initMaintenance, stopMaintenance, initAutoCreateServer, addMailsToSchedule, updateTimeLimitRank, setLadderCountDown, cancelLadderCountDown, initSumSchedule, setPvpSeasonSchedule, initGVGConfigSchedule, gvgBattleStartSchedule, gvgBattleEndSchedule } from '../../../services/timeTaskService';
import PvpDefenseType from '../../../db/PvpDefense';
import { DicGuildActivity } from '../../../pubUtils/dictionary/DicGuildActivity';
import { reloadResources } from '../../../pubUtils/data';
@@ -258,4 +258,20 @@ export class SystimerRemote {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
public async gvgBattleStartSchedule() {
try {
await gvgBattleStartSchedule();
} catch(e) {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
public async gvgBattleEndSchedule() {
try {
await gvgBattleEndSchedule();
} catch(e) {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
}