事件本检查时间刷新并推送
This commit is contained in:
56
shared/db/EventRecord.ts
Normal file
56
shared/db/EventRecord.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
||||
|
||||
/**
|
||||
* 战斗记录接口
|
||||
*/
|
||||
@index({ roleId: 1, type: 1 })
|
||||
|
||||
export default class EventRecord extends BaseModel {
|
||||
@prop({ required: true })
|
||||
roleId: string; // 角色 id
|
||||
@prop({ required: true })
|
||||
roleName: string; // 角色 名
|
||||
@prop({ required: true })
|
||||
eventCode: string; // 这次刷新出的事件的唯一标识
|
||||
@prop({ required: true })
|
||||
eventId: number; // 事件 id
|
||||
@prop({ required: true })
|
||||
type: number; // 事件类型
|
||||
@prop({ required: true, default: 0 })
|
||||
status: number; // 状态 1-已达成 0-未达成 -1-失败
|
||||
@prop({ required: true, default: 0 })
|
||||
battleStatus: number; // 状态 1-成功 -1-失败
|
||||
@prop({ required: true, default: 0 })
|
||||
refTime: number; // 刷新时间
|
||||
@prop({ required: true, default: 0 })
|
||||
battleId: number; // 关卡类型,关卡id
|
||||
@prop({ required: true, default: 0 })
|
||||
turn: number; // 随机的轮数,保证每个event_id都能随机到一次再进行下一轮
|
||||
|
||||
|
||||
public static async getEventRecordByTime(roleId: string, refTime: number, lean=true ) {
|
||||
let data = await EventRecordModel.find({roleId, refTime}).select('eventCode eventId type quality status battleId').lean(lean);
|
||||
return data;
|
||||
}
|
||||
|
||||
public static async getHostoryEventRecord(roleId: string, lean=true) {
|
||||
let latest = await EventRecordModel.findOne({roleId}).sort({turn: -1}).lean();
|
||||
let {turn = 0} = latest||{};
|
||||
let result = await EventRecordModel.find({roleId, turn}).lean(lean);
|
||||
return {history: result, turn};
|
||||
}
|
||||
|
||||
public static async saveEventRecord(eventCode: string, params: {roleId: string, refTime: number, eventId: number, roleName:string, turn: number, type: number, quality: number, battleId?: number } , lean=true ) {
|
||||
let data = await EventRecordModel.findOneAndUpdate({eventCode}, { $set: {...params, status: 0 } }, {upsert: true, new: true}).select('eventCode eventId type quality status battleId').lean(lean);
|
||||
return data;
|
||||
}
|
||||
|
||||
public static async setBattleStatus(roleId: string, battleId: number, refTime: number, battleStatus: number, battleCode: string , lean=true ) {
|
||||
let result = await EventRecordModel.findOneAndUpdate({roleId, battleId, refTime}, {$set:{ battleStatus, battleCode }}).sort({turn: 1}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export const EventRecordModel = getModelForClass(EventRecord);
|
||||
Reference in New Issue
Block a user