红点:军团活动推送

This commit is contained in:
luying
2021-06-16 14:49:51 +08:00
parent d794deffad
commit bc2b89042f
5 changed files with 45 additions and 5 deletions

View File

@@ -8,6 +8,7 @@ import { ChannelUser } from '../../../domain/ChannelUser';
import { getWorldChannelSid, groupRoomId } from '../../../services/chatService';
import { reloadResources } from '../../../pubUtils/data';
import { GeneralRankParamRole, GeneralRankParamBattle } from '../../../domain/rank';
import { getAllGuildActivityStatus } from '../../../services/guildActivityService';
export default function (app: Application) {
return new ChatRemote(app);
@@ -35,6 +36,7 @@ export class ChatRemote {
private GUILD_ACTIVITY_END = 'onGuildActivityEnd';
private RACE_ACTIVITY_START = 'onRaceStart';
private RANK_TOP_UPDATE = 'onRankTopUpdated';
private GUILD_ACTIVITY_STATUS_UPDATE = 'onGuildActivityStatus'; // 军团活动状态变化
/**
* 加入世界频道(分服).
@@ -210,4 +212,17 @@ export class ChatRemote {
public async 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 }));
}
}

View File

@@ -31,7 +31,7 @@ import { getEvent } from './eventSercive';
import { getBattleListOfMain } from './normalBattleService';
import { GuildType } from '../db/Guild';
import UserGuild, { UserGuildType } from '../db/UserGuild';
import { setMedianCe } from './guildActivityService';
import { setMedianCe, getAllGuildActivityStatus } from './guildActivityService';
import { getAllOnlineRoles } from './redisService';
import Item from '../db/Item';
import { PvpDefenseModel } from '../db/PvpDefense';
@@ -47,7 +47,7 @@ export async function pushData(role: RoleType, session: FrontendOrBackendSession
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'];
if(guildData.hasGuild) {
modules.push('guild', 'auction', 'train', 'boss', 'wishPool');
modules.push('guild', 'auction', 'train', 'boss', 'wishPool', 'guildActivity');
}
let notIncludeModule: string[] = [];
if(pushType == 'refresh') {
@@ -72,6 +72,7 @@ export async function pushData(role: RoleType, session: FrontendOrBackendSession
let { role, session } = data;
const { roleId, serverId, roleName, guildCode } = role;
let { hasGuild, guild, userGuild, guildResult } = guildData;
console.log('*********', type)
switch(type) {
case 'shop': // 商店
return await getAllShopList(roleId);
@@ -131,6 +132,8 @@ export async function pushData(role: RoleType, session: FrontendOrBackendSession
return await getEvent(role.eventStatus, roleId, roleName);
case 'battle':
return await getBattleListOfMain(role);
case 'guildActivity':
return getAllGuildActivityStatus();
default:
return null;
}

View File

@@ -91,6 +91,15 @@ export function getGuildActivityStatus(id: number) {
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) {
let t = getTimeFun();
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
@@ -314,6 +331,7 @@ export async function sendEndMsgToAll() {
for (let serverId of serverlist) {
let chatSid = await getWorldChannelSid(serverId);
pinus.app.rpc.chat.chatRemote.sendGuildActivityEnd.toServer(chatSid, serverId);
await sendGuildActivityStatus(serverId);
}
}

View File

@@ -383,7 +383,7 @@ export async function readDataBase() {
}
async function setServerList() {
const serverList = await GameModel.getAllServerList();
const serverList = await ServerlistModel.getAllServerList();
await redisClient().delAsync(REDIS_KEY.DB_GAME);
for(let { id, serverType, name } of serverList) {

View File

@@ -19,7 +19,7 @@ import { STATUS } from '../consts/statusCode';
import { getMailContent, sendMail } from './mailService';
import { reportOnline } from '../pubUtils/httpUtil';
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 { DicGuildActivity } from '../pubUtils/dictionary/DicGuildActivity';
import { GuildModel } from '../db/Guild';
@@ -401,6 +401,7 @@ export async function guildActivityStart(dicGuildActivity?: DicGuildActivity) {
return false
}
let servers = await getAllServers(); // 玩家serverId列表
if(dicGuildActivity.id == GUILD_ACTIVITY_TYPE.GATE_ACTIVITY) {
guildActSecondsJobId = scheduleJob('guildActivitySeconds', '*/10 * * * * *', gateActivitySeconds);
// 结束时间
@@ -412,7 +413,6 @@ export async function guildActivityStart(dicGuildActivity?: DicGuildActivity) {
} else if (dicGuildActivity.id == GUILD_ACTIVITY_TYPE.RACE_ACTIVITY) {
// 开始活动
let servers = await getAllServers(); // 玩家serverId列表
let guildServers = pinus.app.getServersByType('guild');
for(let serverId of servers) {
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);
}
for(let serverId of servers) {
await sendGuildActivityStatus(serverId);
}
return true;
}