feat(gvg): 添加推送

This commit is contained in:
luying
2023-02-16 22:07:58 +08:00
parent 605ee869a9
commit 2eea5d86d9
15 changed files with 319 additions and 103 deletions

View File

@@ -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);
}
}