优化:抽象推送方法

This commit is contained in:
luying
2022-04-08 20:38:54 +08:00
parent a64faac7cd
commit f486a8d8a5
38 changed files with 475 additions and 1257 deletions

View File

@@ -3,7 +3,7 @@ import { RoleModel } from "../../db/Role";
import { GUILDACTIVITY } from "../../pubUtils/dicParam";
import { gameData, getGuildAuctionRewards, getCityActivityRewards } from "../../pubUtils/data";
import { getCurDay, nowSeconds, getTimeFun } from "../../pubUtils/timeUtil";
import { GUILD_ACTIVITY_STATUS, GET_POINT_WAYS, GUILD_ACTIVITY_TYPE, REDIS_KEY, AUCTION_SOURCE, MAIL_TYPE, CITY_STATUS, DEBUG_MAGIC_WORD, GUILD_POINT_WAYS, TASK_TYPE, AUCTION_TIME, CITY_ACTIVITY_DOOR, ABI_TYPE } from "../../consts";
import { GUILD_ACTIVITY_STATUS, GET_POINT_WAYS, GUILD_ACTIVITY_TYPE, REDIS_KEY, AUCTION_SOURCE, MAIL_TYPE, CITY_STATUS, DEBUG_MAGIC_WORD, GUILD_POINT_WAYS, TASK_TYPE, AUCTION_TIME, CITY_ACTIVITY_DOOR, ABI_TYPE, PUSH_ROUTE } from "../../consts";
import { Record, UserGuildActivityRecModel } from "../../db/UserGuildActivityRec";
import { GateMembersRec, CityParam, Member, WoodenHorse } from "../../domain/battleField/guildActivity";
import { DicGuildActivity } from "../../pubUtils/dictionary/DicGuildActivity";
@@ -27,6 +27,7 @@ import { addActive } from "../guildService";
import { ActivePlayer, GuildRecord, ServerRecordModel } from "../../db/ServerRecords";
import { Attack } from "../../domain/battleField/pvp";
import { getHonourObject } from "../role/rewardService";
import { sendMessageToCityWithSuc, sendMessageToGuildWithSuc, sendMessageToServerWithSuc } from "../pushService";
let gateActivityObj: GateActivityObject;
let cityActivityObj: CityActivityObject;
@@ -143,14 +144,6 @@ export function getGuildActivityByDic(dicGuildActivity: DicGuildActivity) {
}
}
/**
* 军团活动状态变化推送包括开始活动和定时结束活动3种活动都会推送
*/
export async function sendGuildActivityStatus(serverId: number) {
let chatSid = await getWorldChannelSid(serverId);
pinus.app.rpc.chat.chatRemote.sendGuildActivityUpdate.toServer(chatSid, serverId);
}
/**
* 根据每回合上报数据判断军功
* @param aid
@@ -285,11 +278,9 @@ export async function sendAllGuildRanks(aid: number) {
let obj = getGateActivityObj();
let guilds = obj.getGuilds();
for (let [serverId, guildCodes] of guilds) {
// TODO 不需要每个军团都排序一次
for (let guildCode of guildCodes) {
let ranks = await getGateActivityRank(guildCode, serverId);
let chatSid = await getGuildChannelSid(guildCode);
pinus.app.rpc.chat.guildRemote.pushRank.toServer(chatSid, guildCode, ranks);
await sendMessageToGuildWithSuc(guildCode, PUSH_ROUTE.GATE_ACT_RANK, ranks);
}
}
} else if (aid == GUILD_ACTIVITY_TYPE.CITY_ACTIVITY) {
@@ -299,8 +290,7 @@ export async function sendAllGuildRanks(aid: number) {
for (let { serverId, cityId, guildCodes } of cities) {
for (let guildCode of guildCodes) {
let ranks = await getCityActivityRank(guildCode, serverId, cityId);
let chatSid = await getGuildChannelSid(guildCode);
pinus.app.rpc.chat.guildRemote.pushCityActRank.toServer(chatSid, guildCode, ranks);
await sendMessageToGuildWithSuc(guildCode, PUSH_ROUTE.CITY_ACT_RANK, ranks);
}
}
}
@@ -310,7 +300,7 @@ export async function sendAllGuildRanks(aid: number) {
* 活动结算奖励
* @param aid 活动类型
*/
export async function sendGuildActEndMsg(aid: number) {
export async function settleGuildActivityReward(aid: number) {
if (aid == GUILD_ACTIVITY_TYPE.GATE_ACTIVITY) {
let obj = getGateActivityObj();
@@ -343,24 +333,18 @@ export async function sendGuildActEndMsg(aid: number) {
}
// 全服发送结束新号
export async function sendEndMsgToAll() {
export async function sendEndMsgToAllServer() {
let serverlist = await getAllServers();
for (let serverId of serverlist) {
let chatSid = await getWorldChannelSid(serverId);
pinus.app.rpc.chat.chatRemote.sendGuildActivityEnd.toServer(chatSid, serverId);
await sendMessageToServerWithSuc(serverId, PUSH_ROUTE.GUILD_ACTIVITY_END, {});
await sendGuildActivityStatus(serverId);
}
}
/**
* 单个军团城门血条破了之后给他发奖励
* @param guildCode 军团code
*/
// export async function sendSingleGateActEndMsg(guildCode: string, serverId: number) {
// let chatSid = await getGuildChannelSid(guildCode);
// pinus.app.rpc.chat.guildRemote.sendGuildActivityEnd.toServer(chatSid, guildCode);
// await gateActivitySettleReward(guildCode, serverId);
// }
export async function sendGuildActivityStatus(serverId: number) {
let guildActivities = getAllGuildActivityStatus();
await sendMessageToServerWithSuc(serverId, PUSH_ROUTE.GUILD_ACTIVITY_STATUS, { guildActivities });
}
/**
@@ -368,11 +352,10 @@ export async function sendEndMsgToAll() {
* @param guildCode 军团code
*/
export async function sendSingleCityActEndMsg(cityId: number, serverId: number) {
let chatSid = await getCityChannelSid(cityId);
let obj = getCityActivityObj();
let guildCodes = obj.getGuildsInCity(serverId, cityId);
for (let guildCode of guildCodes) {
pinus.app.rpc.chat.guildRemote.sendGuildActivityEnd.toServer(chatSid, guildCode);
await sendMessageToGuildWithSuc(guildCode, PUSH_ROUTE.GUILD_ACTIVITY_END, {});
}
await cityActivitySettleReward(cityId, serverId);
}
@@ -383,8 +366,7 @@ export async function sendSingleCityActEndMsg(cityId: number, serverId: number)
* @param guildCode 军团code
*/
export async function sendSingleRaceActEndMsg(guildCode: string, woodenHorse: WoodenHorse) {
let chatSid = await getGuildChannelSid(guildCode);
pinus.app.rpc.chat.guildRemote.sendGuildActivityEnd.toServer(chatSid, guildCode);
await sendMessageToGuildWithSuc(guildCode, PUSH_ROUTE.GUILD_ACTIVITY_END, {});
await raceActivitySettleReward(guildCode, woodenHorse);
}
@@ -621,6 +603,12 @@ export function getCityStatus(guildCode: string, cityId: number, dic: DicCityAct
return status;
}
export async function sendGuildCityDeclare(cityId: number, declareGuildCode: string, declareCount: number) {
let msg = { cityId, declareGuildCode, declareCount };
await sendMessageToCityWithSuc(cityId, PUSH_ROUTE.GUILD_CITY_DECLARE, msg);
await sendMessageToGuildWithSuc(declareGuildCode, PUSH_ROUTE.GUILD_CITY_DECLARE, msg);
}
/**
* 每秒计算木牛流马状态并下发
* @param serverId 区id
@@ -680,10 +668,8 @@ export async function calWoodenHorseAndSend(serverId: number) {
let curRank = ranks[rank];
let wh = await obj.getWoodenHorse(curRank.code, serverId);
let myGuildRank = new SimpleGuildRankWithTimeParam(curRank.rank, curRank.code, curRank.name, wh);
let chatSid = await getGuildChannelSid(curRank.code);
let events = obj.getEvents(curRank.code, wh ? wh.distance : 0);
pinus.app.rpc.chat.guildRemote.pushRaceHorseUpdate.toServer(chatSid, curRank.code, woodenHorseList, { guildRank, myGuildRank }, events);
await sendMessageToGuildWithSuc(curRank.code, PUSH_ROUTE.GUILD_RACE_UPDATE, { timestamp: Date.now(), woodenHorseList, guildRank, myGuildRank, events });
map.delete(rank);
}
@@ -700,8 +686,7 @@ export async function sendRaceStartMsg(serverId: number) {
let obj = getRaceActivityObj();
obj.startRace(); // 设置开启活动
let chatSid = await getWorldChannelSid(serverId);
pinus.app.rpc.chat.chatRemote.sendRaceActivityStart.toServer(chatSid, serverId);
await sendMessageToServerWithSuc(serverId, PUSH_ROUTE.RACE_START, {});
await calWoodenHorseAndSend(serverId);
}
@@ -747,15 +732,6 @@ export async function raceActivitySettleReward(guildCode: string, woodenHorse: W
obj.deleteFromList(guildCode);
}
/**
* 军团练兵场通关层数后全团发送弹窗礼包
* @param guildCode 军团code
*/
export async function sendPopUpActivityData(guildCode: string, serverId: number, data: any[]) {
let chatSid = await getGuildChannelSid(guildCode);
pinus.app.rpc.chat.guildRemote.sendPopUpActivity.toServer(chatSid, guildCode, data);
}
/**
* !! 注意,这条函数会改变内存中的字典表,仅用于测试中使用
* 改变字典表中的军团活动开始时间&持续时间