import BaseModel from './BaseModel'; import { index, getModelForClass, prop } from '@typegoose/typegoose'; /** * 远征记录 */ @index({ expeditionCode: 1, expeditionId: 1 }) export default class ExpeditionWarRecord extends BaseModel { @prop({ required: true, default: '' }) roleId: string; // 角色 id @prop({ required: true, default: '' }) expeditionCode: string; // 远征的唯一标识 @prop({ required: true, default: 0 }) expeditionId: number; // 远征序号 @prop({ required: true, default: 0 }) battleId: number; // 相关关卡id @prop({ required: true, default: '' }) battleCode: string; // 关联关卡唯一值 @prop({ required: true, default: 0 }) battleStatus: number; // 是否通过 @prop({ required: true, default: false }) received: boolean; // 本关战胜后宝箱是否领取 @prop({ required: true, default: false }) reward: string; // 领取的宝箱奖励 @prop({ required: true, default: 0 }) enemyFrom: number; // 敌军数据来源:1-配表的敌军队,2-玩家 @prop({ required: true, default: '' }) enemyId: string; // 敌军队伍id或玩家id @prop({ required: true, default: [] }) enemies: Array; // 敌军数据 public static async getRecordByCode(expeditionCode: string, lean = true) { const result = await ExpeditionWarRecordModel.find({ expeditionCode }).select('expeditionId battleId battleCode battleStatus received').sort({expeditionId: 1}).lean(lean); return result; } public static async getRecordByCodeAndId(expeditionCode: string, expeditionId: number, lean = true) { const result = await ExpeditionWarRecordModel.findOne({ expeditionCode, expeditionId }).select('expeditionId battleId battleCode battleStatus received enemyFrom enemies').lean(lean); return result; } public static async saveRecord(expeditionCode: string, expeditionId: number, params: {roleId: string, battleId: number, enemyFrom: number, enemyId: string, enemies: Array}, lean = true) { const doc = new ExpeditionWarRecordModel(); const update = Object.assign(doc.toJSON(), params, {expeditionCode, expeditionId}); const result = await ExpeditionWarRecordModel.findOneAndUpdate({ expeditionCode, expeditionId }, update, {new: true, upsert: true}).select('expeditionId battleId battleCode battleStatus received enemyFrom enemies').lean(lean); return result; } } export const ExpeditionWarRecordModel = getModelForClass(ExpeditionWarRecord);