Files
ZYZ/game-server/app/servers/gm/handler/gmHandler.ts
2020-10-19 17:31:45 +08:00

61 lines
2.0 KiB
TypeScript

import {Application, BackendSession} from 'pinus';
import { RoleModel } from '../../../db/Role';
import { getEventTime, refreshEvent } from '../../../services/eventSercive';
import EventRecord, { EventRecordModel } from '../../../db/EventRecord';
import { EVENT_STATUS, EVENT_RECORD_STATUS } from '../../../consts/consts';
import { resResult } from '../../../pubUtils/util';
import { STATUS } from '../../../consts/statusCode';
export default function(app: Application) {
return new GmHandler(app);
}
export class GmHandler {
constructor(private app: Application) {
}
async pushEvent(msg: { uid: number, serverId: number }, session: BackendSession) {
let sid = session.get('sid');
let { uid, serverId } = msg;
console.log(uid, serverId)
let role = await RoleModel.findByUid(uid, serverId);
if(!role) return resResult(STATUS.GM_ROLE_NOT_FOUND);
let {roleId, roleName, eventStatus } = role;
let channelService = this.app.get('channelService');
let channel = channelService.getChannel(roleId, true);
let users = channel.getMembers();
if (users.indexOf(roleId) === -1) {
channel.add(roleId, sid);
}
let now = new Date();
let t = getEventTime(now);
let event: Array<EventRecord>;
if (eventStatus == EVENT_STATUS.STARTING) {
event = await EventRecordModel.getEventRecordByTime(roleId, 0);
} else if( eventStatus == EVENT_STATUS.OPEN ) {
event = await EventRecordModel.getEventRecordByTime(roleId, t);
if(event.length == 0) { // 刷新
const num = 3; // 每次刷3个
event = await refreshEvent(num, roleId, roleName, t);
}
}
let tsid = channel.getMember(roleId)['sid'];
channelService.pushMessageByUids('onSpecialEvent', {
msg: { event }
}, [{
uid: roleId,
sid: tsid
}]);
return resResult(STATUS.SUCCESS, { list: event });
}
}