领取奇遇事件

This commit is contained in:
luying
2020-10-10 16:37:57 +08:00
parent 2a62b31797
commit 7047f01cbf
8 changed files with 514 additions and 91 deletions
+20 -8
View File
@@ -4,7 +4,8 @@ import { index, getModelForClass, prop } from '@typegoose/typegoose';
/**
* 战斗记录接口
*/
@index({ roleId: 1, type: 1 })
@index({ roleId: 1, eventId: 1 })
@index({ roleId: 1, eventCode: 1 })
export default class EventRecord extends BaseModel {
@prop({ required: true })
@@ -17,15 +18,17 @@ export default class EventRecord extends BaseModel {
eventId: number; // 事件 id
@prop({ required: true })
type: number; // 事件类型
@prop({ required: true })
quality: number; // 事件品质
@prop({ required: true, default: 0 })
status: number; // 状态 1-已达成 0-未达成 -1-失败
@prop({ required: true, default: 0 })
battleStatus: number; // 状态 1-成功 -1-失败
status: number; // 状态 0-初始状态 1-挑战成功 2-挑战失败 3-领取成功奖励 4-领取了失败奖励
@prop({ required: true, default: 0 })
refTime: number; // 刷新时间
@prop({ required: true, default: 0 })
battleId: number; // 关卡类型,关卡id
@prop({ required: true, default: 0 })
battleCode: string; // 关卡类型,关卡code
@prop({ required: true, default: 0 })
turn: number; // 随机的轮数,保证每个event_id都能随机到一次再进行下一轮
@@ -34,6 +37,10 @@ export default class EventRecord extends BaseModel {
return data;
}
public static async getEventRecordByCode(roleId: string, eventCode: string, lean=true ) {
let data = await EventRecordModel.findOne({roleId, eventCode}).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||{};
@@ -41,13 +48,18 @@ export default class EventRecord extends BaseModel {
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);
public static async saveEventRecord(eventCode: string, params: {roleId: string, refTime: number, eventId: number, roleName:string, turn: number, type: number, quality: number, battleId?: number, status: number } , lean=true ) {
let data = await EventRecordModel.findOneAndUpdate({eventCode}, { $set: {...params } }, {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);
public static async setBattleStatus(roleId: string, battleId: number, refTime: number, status: number, battleCode: string , lean=true ) {
let result = await EventRecordModel.findOneAndUpdate({roleId, battleId, refTime}, {$set:{ status, battleCode }}).sort({turn: 1}).lean(lean);
return result;
}
public static async setStatusByCode(roleId: string, eventCode: string, status: number , lean=true ) {
let result = await EventRecordModel.findOneAndUpdate({ roleId, eventCode }, {$set:{ status }}).lean(lean);
return result;
}