红点:军团活动推送

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
+5 -2
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;
}
@@ -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);
}
}
+1 -1
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) {
+6 -2
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;
}