连接推送
This commit is contained in:
@@ -18,16 +18,11 @@ import { addRoleToGuildChannel, addRoleToSysChannel, addRoleToWorldChannel, leav
|
||||
import { reportOneOnline, savePlayTime } from '../../../services/authenticateService';
|
||||
import { checkTaskWithRole, } from '../../../services/taskService';
|
||||
import { pushData, everydayRefresh, kickUser } from '../../../services/connectorService';
|
||||
import { pick } from 'lodash';
|
||||
// import { setComBtlOnUserLeave } from '../../../services/comBattleService';
|
||||
import Counter from '../../../db/Counter';
|
||||
import { getExpByLv } from '../../../pubUtils/data';
|
||||
import { reportTAUserSet } from '../../../services/sdkService';
|
||||
import { saveLoginAndOutLog } from '../../../pubUtils/logUtil';
|
||||
import { JewelModel } from '../../../db/Jewel';
|
||||
import { GuildModel } from '../../../db/Guild';
|
||||
import { GuildRecModel } from '../../../db/GuildRec';
|
||||
import { ServerRecordModel } from '../../../db/ServerRecords';
|
||||
|
||||
export default function (app: Application) {
|
||||
new HandlerService(app, {});
|
||||
@@ -74,55 +69,36 @@ export class EntryHandler {
|
||||
await this.addSession(role, session);
|
||||
saveLoginAndOutLog(LOG_TYPE.LOGIN, session);
|
||||
|
||||
// put user into channel
|
||||
// console.log(JSON.stringify(self.app.rpc.battle))
|
||||
// await self.app.rpc.battle.battleRemote.add.route(session)(role.roleId, self.app.get('serverId'), role.serverId, true);
|
||||
addRoleToSysChannel(role.roleId, self.app.get('serverId'), role.serverId);
|
||||
addRoleToWorldChannel(role.roleId, self.app.get('serverId'), role.serverId);
|
||||
await self.app.rpc.chat.chatRemote.addWorldChannel.route(session)(role.roleId, serverId, self.app.get('serverId'));
|
||||
let heros = await HeroModel.findByRole(role.roleId, [], HERO_SELECT.ENTRY, true);
|
||||
let jewels = await JewelModel.findbyRole(role.roleId);
|
||||
let items = await ItemModel.findbyRole(role.roleId);
|
||||
let skins = await SkinModel.findbyRole(role.roleId);
|
||||
reportOneOnline(role.roleId, user.userCode, self.app.get('serverId'), true, user);
|
||||
|
||||
// let r = new Rank(REDIS_KEY.HERO_NUM_RANK, { serverId });
|
||||
// r.setRankWithRoleInfo(role.roleId, role.heroNum, role.heroNumUpdatedAt, role);
|
||||
// let r2 = new Rank(REDIS_KEY.SUM_CE_RANK, { serverId });
|
||||
// r2.setRankWithRoleInfo(role.roleId, role.ce, role.updatedAt.getTime(), role);
|
||||
// let r3 = new Rank(REDIS_KEY.USER_LV, { serverId });
|
||||
// r3.setRankWithRoleInfo(role.roleId, role.lv, role.updatedAt.getTime(), role);
|
||||
|
||||
// 任务
|
||||
checkTaskWithRole(serverId, role.roleId, self.app.get('serverId'), TASK_TYPE.LOGIN_SUM, role);
|
||||
checkTaskWithRole(serverId, role.roleId, self.app.get('serverId'), TASK_TYPE.LOGIN_SERIES, role);
|
||||
// 推送数据
|
||||
pushData(role.hasInit, role, session);
|
||||
|
||||
role['heros'] = heros;
|
||||
role['jewels'] = jewels;
|
||||
role['consumeGoods'] = items;
|
||||
role['skins'] = skins;
|
||||
let ip = session.remoteAddress.ip.replace('::ffff:', '');
|
||||
let apJson = await getAp(role.roleId, ip, role.lv);
|
||||
role['apJson'] = apJson;
|
||||
|
||||
if (!role.showLineup) role.showLineup = role.topLineup.map(cur => cur.hid);
|
||||
role.heads = role.heads.filter(cur => cur.status);
|
||||
role.frames = role.frames.filter(cur => cur.status);
|
||||
role.spines = role.spines.filter(cur => cur.status);
|
||||
|
||||
if (role.hasGuild) {
|
||||
addRoleToGuildChannel(role.roleId, self.app.get('serverId'), role.guildCode);
|
||||
}
|
||||
|
||||
let todayZeroPoint = getZeroPoint();
|
||||
role['todayZeroPoint'] = todayZeroPoint;
|
||||
|
||||
console.log('****** entry after', Date.now());
|
||||
return resResult(STATUS.SUCCESS, { role: pick(role, ENTERY_ROLE_PICK) });
|
||||
return resResult(STATUS.SUCCESS, { todayZeroPoint });
|
||||
}
|
||||
|
||||
async getData(msg: { }, session: FrontendSession) {
|
||||
let ip = session.get('ip');
|
||||
let roleId = session.get('roleId');
|
||||
let role = await RoleModel.findByRoleId(roleId, '-_id', true, true);
|
||||
|
||||
// 推送数据
|
||||
pushData(role.hasInit, role, session);
|
||||
|
||||
let todayZeroPoint = getZeroPoint();
|
||||
return resResult(STATUS.SUCCESS, { todayZeroPoint });
|
||||
}
|
||||
|
||||
async addSession(role: RoleType, session: FrontendSession) {
|
||||
const self = this;
|
||||
@@ -171,7 +147,7 @@ export class EntryHandler {
|
||||
let self = this;
|
||||
let roleId = session.get('roleId');
|
||||
|
||||
let role = await RoleModel.findByRoleId(roleId, null, true, true);
|
||||
let role = await RoleModel.findByRoleId(roleId, '-_id', true, true);
|
||||
if (!role) {
|
||||
return resResult(STATUS.ROLE_NOT_FOUND);
|
||||
}
|
||||
@@ -187,7 +163,6 @@ export class EntryHandler {
|
||||
return resResult(STATUS.SUCCESS, { todayZeroPoint });
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* User log out handler
|
||||
*
|
||||
|
||||
@@ -731,7 +731,6 @@ export class FriendHandler {
|
||||
if (heroList.length <= 0) return resResult(STATUS.HERO_NOT_FIND);
|
||||
|
||||
let jewels = await JewelModel.findMapbyRoleAndHids(hisRoleId, hids);
|
||||
console.log(jewels);
|
||||
|
||||
let list: HeroDetailParam[] = [];
|
||||
for (let hero of heroList) {
|
||||
|
||||
@@ -8,7 +8,7 @@ import { getCurTask, getPvpTask } from './taskService';
|
||||
import { RoleType } from '../db/Role';
|
||||
import { Application, FrontendOrBackendSession, pinus, RpcClient } from 'pinus';
|
||||
import { resResult } from '../pubUtils/util';
|
||||
import { STATUS, PUSH_BATCH, PUSH_INTERVAL, CONSUME_TYPE } from '../consts';
|
||||
import { STATUS, PUSH_BATCH, PUSH_INTERVAL, CONSUME_TYPE, HERO_SELECT } from '../consts';
|
||||
import { getAllShopList } from './shopService';
|
||||
import { getGeneralRank, getRankFirstReward } from './rankService';
|
||||
import { getFriendList, getApplyList } from './friendService';
|
||||
@@ -33,10 +33,47 @@ import { GuildType } from '../db/Guild';
|
||||
import UserGuild, { UserGuildType } from '../db/UserGuild';
|
||||
import { setPreDayActiveData, getAllGuildActivityStatus } from './guildActivity/guildActivityService';
|
||||
import { getAllOnlineRoles } from './redisService';
|
||||
import Item from '../db/Item';
|
||||
import Item, { ItemModel } from '../db/Item';
|
||||
import { PvpDefenseModel } from '../db/PvpDefense';
|
||||
import { getDonation } from './donateService';
|
||||
import { refChallengeCnt } from './pvpService';
|
||||
import { HeroModel } from '../db/Hero';
|
||||
import { JewelModel } from '../db/Jewel';
|
||||
import { SkinModel } from '../db/Skin';
|
||||
import { getAp } from './actionPointService';
|
||||
|
||||
/**
|
||||
* init: 初始的时候是否推送 true-推 false-不推
|
||||
* refresh: 凌晨5点刷新时是否推送 true-推 false-不推
|
||||
* guild: 是否一定有了军团才要推送 true-必须要 false-不用
|
||||
*/
|
||||
const modules = [
|
||||
{ id: 1, type: 'role', init: true, refresh: true, guild: false },
|
||||
{ id: 2, type: 'battle', init: true, refresh: false, guild: false },
|
||||
{ id: 3, type: 'chapter', init: true, refresh: false, guild: false },
|
||||
{ id: 4, type: 'rank', init: false, refresh: false, guild: false },
|
||||
{ id: 5, type: 'mail', init: false, refresh: false, guild: false },
|
||||
{ id: 6, type: 'friend', init: false, refresh: true, guild: false },
|
||||
{ id: 7, type: 'daily', init: false, refresh: true, guild: false },
|
||||
{ id: 8, type: 'expedition', init: false, refresh: true, guild: false },
|
||||
{ id: 9, type: 'tower', init: false, refresh: true, guild: false },
|
||||
{ id: 10, type: 'comBattle', init: false, refresh: true, guild: false },
|
||||
{ id: 11, type: 'dungeon', init: false, refresh: true, guild: false },
|
||||
{ id: 12, type: 'pvp', init: false, refresh: true, guild: false },
|
||||
{ id: 13, type: 'gacha', init: false, refresh: true, guild: false },
|
||||
{ id: 14, type: 'school', init: false, refresh: false, guild: false },
|
||||
{ id: 15, type: 'task', init: false, refresh: true, guild: false },
|
||||
{ id: 16, type: 'chat', init: false, refresh: false, guild: false },
|
||||
{ id: 17, type: 'event', init: false, refresh: true, guild: false },
|
||||
{ id: 18, type: 'guild', init: false, refresh: true, guild: false },
|
||||
{ id: 19, type: 'auction', init: false, refresh: false, guild: true },
|
||||
{ id: 20, type: 'train', init: false, refresh: false, guild: true },
|
||||
{ id: 21, type: 'boss', init: false, refresh: true, guild: true },
|
||||
{ id: 22, type: 'wishPool', init: false, refresh: true, guild: true },
|
||||
{ id: 23, type: 'guildActivity', init: false, refresh: true, guild: true },
|
||||
{ id: 24, type: 'donate', init: false, refresh: true, guild: true },
|
||||
{ id: 25, type: 'shop', init: false, refresh: true, guild: false },
|
||||
]
|
||||
|
||||
export async function pushData(hasInit: boolean, role: RoleType, session: FrontendOrBackendSession, pushType: 'entry' | 'refresh' = 'entry') {
|
||||
try {
|
||||
@@ -46,29 +83,17 @@ export async function pushData(hasInit: boolean, role: RoleType, session: Fronte
|
||||
pushEntryStart(roleId, sid);
|
||||
// 军团
|
||||
const guildData = await getGuildEntryData(role, sid, session);
|
||||
let modules = [];
|
||||
if(!hasInit) {
|
||||
modules.push('lv', 'battle');
|
||||
} else {
|
||||
modules.push('lv', 'battle', 'rank', 'mail', 'friend', 'daily', 'expedition', 'tower', 'comBattle', 'dungeon', 'pvp', 'gacha', 'school', 'task', 'chat', 'event', 'guild');
|
||||
if (guildData.hasGuild) {
|
||||
modules.push('auction', 'train', 'boss', 'wishPool', 'guildActivity', 'donate');
|
||||
for(let { type, init, refresh, guild } of modules) {
|
||||
if(!hasInit && !init) continue;
|
||||
if(pushType == 'refresh' && !refresh) continue;
|
||||
if(guildData.hasGuild && !guild) continue;
|
||||
|
||||
let data = await getModuleData(type, { role, session }, guildData);
|
||||
if (data) {
|
||||
pushEntryData(type, roleId, sid, data);
|
||||
}
|
||||
modules.push('shop')
|
||||
}
|
||||
let notIncludeModule: string[] = [];
|
||||
if (pushType == 'refresh') { // 每天5点刷新的时候不推送
|
||||
notIncludeModule = ['rank', 'mail', 'school', 'auction', 'train', 'chat', 'battle'];
|
||||
}
|
||||
|
||||
for (let type of modules) {
|
||||
if (notIncludeModule.indexOf(type) == -1) {
|
||||
let data = await getModuleData(type, { role, session }, guildData);
|
||||
if (data) {
|
||||
pushEntryData(type, roleId, sid, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
pushEntryEnd(roleId, sid);
|
||||
} catch (e) {
|
||||
console.error(e.stack);
|
||||
@@ -80,8 +105,24 @@ async function getModuleData(type: string, data: { role: RoleType, session: Fron
|
||||
const { roleId, serverId, roleName, guildCode } = role;
|
||||
let { hasGuild, guild, userGuild, guildResult } = guildData;
|
||||
switch (type) {
|
||||
case 'lv':
|
||||
return role.lv;
|
||||
case 'role':
|
||||
let heros = await HeroModel.findByRole(role.roleId, [], HERO_SELECT.ENTRY, true);
|
||||
let jewels = await JewelModel.findbyRole(role.roleId);
|
||||
let items = await ItemModel.findbyRole(role.roleId);
|
||||
let skins = await SkinModel.findbyRole(role.roleId);
|
||||
|
||||
role['heros'] = heros;
|
||||
role['jewels'] = jewels;
|
||||
role['consumeGoods'] = items;
|
||||
role['skins'] = skins;
|
||||
let apJson = await getAp(role.roleId, '', role.lv);
|
||||
role['apJson'] = apJson;
|
||||
|
||||
if (!role.showLineup) role.showLineup = role.topLineup.map(cur => cur.hid);
|
||||
role.heads = role.heads.filter(cur => cur.status);
|
||||
role.frames = role.frames.filter(cur => cur.status);
|
||||
role.spines = role.spines.filter(cur => cur.status);
|
||||
return role;
|
||||
case 'shop': // 商店
|
||||
return await getAllShopList(roleId);
|
||||
case 'rank': // 排名
|
||||
@@ -125,6 +166,7 @@ async function getModuleData(type: string, data: { role: RoleType, session: Fron
|
||||
let trainBoxRewards = await getTrainBoxRewardsResult(guildCode);
|
||||
return { trainInstance, trainBoxRewards }
|
||||
}
|
||||
break;
|
||||
case 'boss':
|
||||
if (hasGuild) {
|
||||
return await getBossInstanceInfo(userGuild, guild);
|
||||
@@ -138,6 +180,7 @@ async function getModuleData(type: string, data: { role: RoleType, session: Fron
|
||||
let { donateFund, reports, donationLv } = await getDonation(code, guild, serverId);
|
||||
return { receiveBoxs, donateFund, reports, donateCnt: donateCnt || 0, donationLv };
|
||||
}
|
||||
break;
|
||||
case 'task':
|
||||
let tasks = await getCurTask(role.roleId, session);
|
||||
let pvpTask = await getPvpTask(role.roleId);
|
||||
|
||||
@@ -18,7 +18,7 @@ export enum ROLE_SELECT {
|
||||
};
|
||||
|
||||
export enum HERO_SELECT {
|
||||
ENTRY = '-attr',
|
||||
ENTRY = '-_id -attr',
|
||||
HERO_DETAIL = 'roleId roleName hid hName ce isReducedCe lv star colorStar quality job skins attr ePlace skinId',
|
||||
// 排行榜中lineup字段
|
||||
RANK_LINEUP = 'seqId roleId hid star colorStar lv quality job ce isReducedCe updatedAt skinId'
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
{ "id": 2, "desc": "军团聊天", "route": "chat.chatHandler.sendGroupMessage", "param": { "channel": "guild" }, "interval": 1000 },
|
||||
{ "id": 3, "desc": "组团聊天", "route": "battle.comBattleHandler.sendTeamMsg", "param": {}, "interval": 1000 },
|
||||
{ "id": 4, "desc": "私聊", "route": "chat.chatHandler.sendPrivateMessage", "param": {}, "interval": 1000 },
|
||||
{ "id": 5, "desc": "发送弹幕", "route": "battle.barrageHandler.sendBarrage", "param": {}, "interval": 1000 }
|
||||
{ "id": 5, "desc": "发送弹幕", "route": "battle.barrageHandler.sendBarrage", "param": {}, "interval": 1000 },
|
||||
{ "id": 6, "desc": "获取信息", "route": "connector.entryHandler.getData", "param": {}, "interval": 1000 },
|
||||
{ "id": 7, "desc": "刷新信息", "route": "connector.entryHandler.refresh", "param": {}, "interval": 1000 }
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user