红点:军团活动推送
This commit is contained in:
@@ -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 }));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user