红点:军团活动推送

This commit is contained in:
luying
2021-06-16 14:50:07 +08:00
parent d794deffad
commit bc2b89042f
5 changed files with 45 additions and 5 deletions
@@ -8,6 +8,7 @@ import { ChannelUser } from '../../../domain/ChannelUser';
import { getWorldChannelSid, groupRoomId } from '../../../services/chatService'; import { getWorldChannelSid, groupRoomId } from '../../../services/chatService';
import { reloadResources } from '../../../pubUtils/data'; import { reloadResources } from '../../../pubUtils/data';
import { GeneralRankParamRole, GeneralRankParamBattle } from '../../../domain/rank'; import { GeneralRankParamRole, GeneralRankParamBattle } from '../../../domain/rank';
import { getAllGuildActivityStatus } from '../../../services/guildActivityService';
export default function (app: Application) { export default function (app: Application) {
return new ChatRemote(app); return new ChatRemote(app);
@@ -35,6 +36,7 @@ export class ChatRemote {
private GUILD_ACTIVITY_END = 'onGuildActivityEnd'; private GUILD_ACTIVITY_END = 'onGuildActivityEnd';
private RACE_ACTIVITY_START = 'onRaceStart'; private RACE_ACTIVITY_START = 'onRaceStart';
private RANK_TOP_UPDATE = 'onRankTopUpdated'; private RANK_TOP_UPDATE = 'onRankTopUpdated';
private GUILD_ACTIVITY_STATUS_UPDATE = 'onGuildActivityStatus'; // 军团活动状态变化
/** /**
* 加入世界频道(分服). * 加入世界频道(分服).
@@ -210,4 +212,17 @@ export class ChatRemote {
public async reloadResources() { public async reloadResources() {
reloadResources(); reloadResources();
} }
/**
* @description 全服推送军团活动状态变化
* @param serverId
*/
public async sendGuildActivityUpdate(serverId: number) {
let roomId = groupRoomId(CHANNEL_PREFIX.WORLD, serverId);
let channel = this.channelService.getChannel(roomId, false);
if (!channel) return;
let guildActivities = getAllGuildActivityStatus();
channel.pushMessage(this.GUILD_ACTIVITY_STATUS_UPDATE, resResult(STATUS.SUCCESS, { guildActivities }));
}
} }
+5 -2
View File
@@ -31,7 +31,7 @@ import { getEvent } from './eventSercive';
import { getBattleListOfMain } from './normalBattleService'; import { getBattleListOfMain } from './normalBattleService';
import { GuildType } from '../db/Guild'; import { GuildType } from '../db/Guild';
import UserGuild, { UserGuildType } from '../db/UserGuild'; import UserGuild, { UserGuildType } from '../db/UserGuild';
import { setMedianCe } from './guildActivityService'; import { setMedianCe, getAllGuildActivityStatus } from './guildActivityService';
import { getAllOnlineRoles } from './redisService'; import { getAllOnlineRoles } from './redisService';
import Item from '../db/Item'; import Item from '../db/Item';
import { PvpDefenseModel } from '../db/PvpDefense'; import { PvpDefenseModel } from '../db/PvpDefense';
@@ -47,7 +47,7 @@ export async function pushData(role: RoleType, session: FrontendOrBackendSession
const guildData = await getGuildEntryData(role, sid, session); const guildData = await getGuildEntryData(role, sid, session);
let modules = ['shop', 'rank', 'mail', 'friend', 'daily', 'expedition', 'tower', 'comBattle', 'dungeon', 'pvp', 'gacha', 'school', 'task', 'chat', 'event', 'battle']; let modules = ['shop', 'rank', 'mail', 'friend', 'daily', 'expedition', 'tower', 'comBattle', 'dungeon', 'pvp', 'gacha', 'school', 'task', 'chat', 'event', 'battle'];
if(guildData.hasGuild) { if(guildData.hasGuild) {
modules.push('guild', 'auction', 'train', 'boss', 'wishPool'); modules.push('guild', 'auction', 'train', 'boss', 'wishPool', 'guildActivity');
} }
let notIncludeModule: string[] = []; let notIncludeModule: string[] = [];
if(pushType == 'refresh') { if(pushType == 'refresh') {
@@ -72,6 +72,7 @@ export async function pushData(role: RoleType, session: FrontendOrBackendSession
let { role, session } = data; let { role, session } = data;
const { roleId, serverId, roleName, guildCode } = role; const { roleId, serverId, roleName, guildCode } = role;
let { hasGuild, guild, userGuild, guildResult } = guildData; let { hasGuild, guild, userGuild, guildResult } = guildData;
console.log('*********', type)
switch(type) { switch(type) {
case 'shop': // 商店 case 'shop': // 商店
return await getAllShopList(roleId); return await getAllShopList(roleId);
@@ -131,6 +132,8 @@ export async function pushData(role: RoleType, session: FrontendOrBackendSession
return await getEvent(role.eventStatus, roleId, roleName); return await getEvent(role.eventStatus, roleId, roleName);
case 'battle': case 'battle':
return await getBattleListOfMain(role); return await getBattleListOfMain(role);
case 'guildActivity':
return getAllGuildActivityStatus();
default: default:
return null; return null;
} }
@@ -91,6 +91,15 @@ export function getGuildActivityStatus(id: number) {
return getGuildActivityByDic(dicGuildActivity); return getGuildActivityByDic(dicGuildActivity);
} }
export function getAllGuildActivityStatus() {
let guildActivities: { status: number, time: number, isOpen: boolean }[] = [];
gameData.guildActivity.forEach(dicGuildActivity => {
let res = getGuildActivityByDic(dicGuildActivity);
guildActivities.push(res);
});
return guildActivities;
}
export function getGuildActivityByDic(dicGuildActivity: DicGuildActivity) { export function getGuildActivityByDic(dicGuildActivity: DicGuildActivity) {
let t = getTimeFun(); let t = getTimeFun();
let startTime = <number>t.getTimeWithHour(dicGuildActivity.startTime, dicGuildActivity.startMinute, dicGuildActivity.startSeconds); let startTime = <number>t.getTimeWithHour(dicGuildActivity.startTime, dicGuildActivity.startMinute, dicGuildActivity.startSeconds);
@@ -118,6 +127,14 @@ 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 * @param aid
@@ -314,6 +331,7 @@ export async function sendEndMsgToAll() {
for (let serverId of serverlist) { for (let serverId of serverlist) {
let chatSid = await getWorldChannelSid(serverId); let chatSid = await getWorldChannelSid(serverId);
pinus.app.rpc.chat.chatRemote.sendGuildActivityEnd.toServer(chatSid, serverId); pinus.app.rpc.chat.chatRemote.sendGuildActivityEnd.toServer(chatSid, serverId);
await sendGuildActivityStatus(serverId);
} }
} }
+1 -1
View File
@@ -383,7 +383,7 @@ export async function readDataBase() {
} }
async function setServerList() { async function setServerList() {
const serverList = await GameModel.getAllServerList(); const serverList = await ServerlistModel.getAllServerList();
await redisClient().delAsync(REDIS_KEY.DB_GAME); await redisClient().delAsync(REDIS_KEY.DB_GAME);
for(let { id, serverType, name } of serverList) { for(let { id, serverType, name } of serverList) {
+6 -2
View File
@@ -19,7 +19,7 @@ import { STATUS } from '../consts/statusCode';
import { getMailContent, sendMail } from './mailService'; import { getMailContent, sendMail } from './mailService';
import { reportOnline } from '../pubUtils/httpUtil'; import { reportOnline } from '../pubUtils/httpUtil';
import { UserModel } from '../db/User'; import { UserModel } from '../db/User';
import { getGuildActivityByDic, setMedianCe, sendEndMsgToAll, autoDeclare } from './guildActivityService'; import { getGuildActivityByDic, setMedianCe, sendEndMsgToAll, autoDeclare, sendGuildActivityStatus } from './guildActivityService';
import { sendUngotDividendJob, startGuildAuction, startWorldAuction, stopAuction } from './auctionService'; import { sendUngotDividendJob, startGuildAuction, startWorldAuction, stopAuction } from './auctionService';
import { DicGuildActivity } from '../pubUtils/dictionary/DicGuildActivity'; import { DicGuildActivity } from '../pubUtils/dictionary/DicGuildActivity';
import { GuildModel } from '../db/Guild'; import { GuildModel } from '../db/Guild';
@@ -401,6 +401,7 @@ export async function guildActivityStart(dicGuildActivity?: DicGuildActivity) {
return false return false
} }
let servers = await getAllServers(); // 玩家serverId列表
if(dicGuildActivity.id == GUILD_ACTIVITY_TYPE.GATE_ACTIVITY) { if(dicGuildActivity.id == GUILD_ACTIVITY_TYPE.GATE_ACTIVITY) {
guildActSecondsJobId = scheduleJob('guildActivitySeconds', '*/10 * * * * *', gateActivitySeconds); guildActSecondsJobId = scheduleJob('guildActivitySeconds', '*/10 * * * * *', gateActivitySeconds);
// 结束时间 // 结束时间
@@ -412,7 +413,6 @@ export async function guildActivityStart(dicGuildActivity?: DicGuildActivity) {
} else if (dicGuildActivity.id == GUILD_ACTIVITY_TYPE.RACE_ACTIVITY) { } else if (dicGuildActivity.id == GUILD_ACTIVITY_TYPE.RACE_ACTIVITY) {
// 开始活动 // 开始活动
let servers = await getAllServers(); // 玩家serverId列表
let guildServers = pinus.app.getServersByType('guild'); let guildServers = pinus.app.getServersByType('guild');
for(let serverId of servers) { for(let serverId of servers) {
let sid = dispatch(serverId.toString(), guildServers); let sid = dispatch(serverId.toString(), guildServers);
@@ -423,6 +423,10 @@ export async function guildActivityStart(dicGuildActivity?: DicGuildActivity) {
// 结束时间 // 结束时间
guildActEndJobId = scheduleJob('guildActivityEnd', Date.now() + dicGuildActivity.duringTime * 1000, raceActivityEnd); guildActEndJobId = scheduleJob('guildActivityEnd', Date.now() + dicGuildActivity.duringTime * 1000, raceActivityEnd);
} }
for(let serverId of servers) {
await sendGuildActivityStatus(serverId);
}
return true; return true;
} }