奇遇推送优化,不需要每次传app直接使用pinus.app
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { Application, FrontendOrBackendSession } from 'pinus';
|
||||
import { FrontendOrBackendSession, pinus } from 'pinus';
|
||||
import { getGamedata } from '../pubUtils/gamedata';
|
||||
import EventRecord, { EventRecordModel } from '../db/EventRecord';
|
||||
import { RoleModel } from '../db/Role';
|
||||
@@ -37,21 +37,20 @@ export async function checkEventBattle(roleId: string, eventStatus: number, batt
|
||||
/**
|
||||
* 从关卡结算接口调用,保存战斗情况
|
||||
*
|
||||
* @param app
|
||||
* @param session
|
||||
* @param roleId
|
||||
* @param battleId
|
||||
* @param isSuccess
|
||||
* @param battleCode
|
||||
*/
|
||||
export async function setBattleStatus(app: Application, session: FrontendOrBackendSession, roleId: string, battleId: number , isSuccess: boolean, battleCode: string) {
|
||||
export async function setBattleStatus(session: FrontendOrBackendSession, roleId: string, battleId: number , isSuccess: boolean, battleCode: string) {
|
||||
|
||||
let { BATTLE_SUCCESS, BATTLE_FAIL } = EVENT_RECORD_STATUS;
|
||||
let result = await EventRecordModel.setBattleStatus(roleId, battleId, battleCode, isSuccess?BATTLE_SUCCESS:BATTLE_FAIL);
|
||||
if (!result) {
|
||||
return { status: -1, resResult: resResult(STATUS.EVENT_INFO_NOT_FOUND) };
|
||||
}
|
||||
await checkEvent(app, session, true);
|
||||
await checkEvent(session, true);
|
||||
return { status: 0, data: result };
|
||||
}
|
||||
|
||||
@@ -79,58 +78,53 @@ export function getEventTime(now: Date) {
|
||||
/**
|
||||
* 从挑战结算接口调用,挑战完主线某一关,开始刷奇遇关卡
|
||||
*
|
||||
* @param app
|
||||
* @param session
|
||||
*/
|
||||
export async function startEvent(app: Application, session: FrontendOrBackendSession) {
|
||||
export async function startEvent(session: FrontendOrBackendSession) {
|
||||
|
||||
// console.log('*******setEventStatus')
|
||||
let roleId = session.get('roleId');
|
||||
let roleName = session.get('roleName');
|
||||
let serverId = session.get('serverId');
|
||||
let channelName = `server-${serverId}`;
|
||||
let sid = session.get('sid');
|
||||
let event = await refreshEvent(1, roleId, roleName, 0, []); // 刷新初始的一件
|
||||
await RoleModel.setEventStatus(roleId, EVENT_STATUS.STARTING);
|
||||
session.set('eventStatus', EVENT_STATUS.STARTING);
|
||||
session.push('eventStatus', () => {});
|
||||
pushEventMsg(app, roleId, channelName, { event }); // 推送
|
||||
pushEventMsg(sid, roleId, { event }); // 推送
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 从filter调用,用于每次检查时间,获取事件并推送
|
||||
*
|
||||
* @param app
|
||||
* @param session
|
||||
* @param isForce 即使不是12点和18点也强制刷新
|
||||
*/
|
||||
export async function checkEvent(app: Application, session: FrontendOrBackendSession, isForce:boolean = false) {
|
||||
export async function checkEvent(session: FrontendOrBackendSession, isForce:boolean = false) {
|
||||
|
||||
try {
|
||||
|
||||
let roleId = session.get('roleId');
|
||||
let serverId = session.get('serverId');
|
||||
let funcs = session.get('funcs');
|
||||
let sid = session.get('sid');
|
||||
if(roleId) {
|
||||
|
||||
let roleName = session.get('roleName');
|
||||
let channelName = `server-${serverId}`;
|
||||
let eventStatus = session.get('eventStatus')||EVENT_STATUS.WAITING;
|
||||
|
||||
if(funcs && funcs.includes(FUNCS_ID.EVENT) && eventStatus == EVENT_STATUS.WAITING) {
|
||||
await startEvent(app, session);
|
||||
await startEvent(session);
|
||||
} else {
|
||||
let eventTime = session.get('getEventTime')||0;
|
||||
let now = new Date();
|
||||
let t = getEventTime(now);
|
||||
|
||||
let channel = app.get('channelService').getChannel(channelName, false);
|
||||
|
||||
if(!!channel && (eventTime < t || isForce)) { // 第一次登陆后可以刷新了
|
||||
|
||||
if(eventTime < t || isForce) { // 第一次登陆后可以刷新了
|
||||
|
||||
let event = await getEvent(eventStatus, roleId, roleName);
|
||||
if (eventStatus == EVENT_STATUS.STARTING || eventStatus == EVENT_STATUS.OPEN) {
|
||||
pushEventMsg(app, roleId, channelName, { event }); // 推送
|
||||
pushEventMsg(sid, roleId, { event }); // 推送
|
||||
session.set('getEventTime', t);
|
||||
session.push('getEventTime', () => {});
|
||||
}
|
||||
@@ -292,24 +286,18 @@ function randomPosition(positionStr: string, prePoint: Array<number>, curPoint:
|
||||
/**
|
||||
* 推送
|
||||
*
|
||||
* @param app
|
||||
* @param roleId
|
||||
* @param channelName
|
||||
* @param msg
|
||||
*/
|
||||
function pushEventMsg(app: Application, roleId: string, channelName: string, msg: any ) {
|
||||
let channelService = app.get('channelService');
|
||||
function pushEventMsg(sid: string, roleId: string, msg: any ) {
|
||||
let channelService = pinus.app.get('channelService');
|
||||
|
||||
let param = { msg };
|
||||
let channel = channelService.getChannel(channelName, false);
|
||||
if(!!channel) {
|
||||
let tsid = channel.getMember(roleId)['sid'];
|
||||
|
||||
channelService.pushMessageByUids('onSpecialEvent', param, [{
|
||||
uid: roleId,
|
||||
sid: tsid
|
||||
}]);
|
||||
}
|
||||
channelService.pushMessageByUids('onSpecialEvent', param, [{
|
||||
uid: roleId,
|
||||
sid: sid
|
||||
}]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user