后台添加推送奇遇事件功能
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
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 });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user