import BaseModel from './BaseModel'; import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose'; /** * 战斗记录接口 */ @index({ roleId: 1, battleId: 1 }) @index({ battleCode: 1 }) export default class BattleRecord extends BaseModel { @prop({ required: true }) roleId: string; // 角色 id @prop({ required: true }) roleName: string; // 角色名称 @prop({ required: true }) battleCode: string; // 关卡记录唯一标识 @prop({ required: true }) battleId: number; // 关卡 id @prop({ required: true }) warName: string; // 关卡 名 @prop({ required: true }) warType: number; // 关卡 类型 @prop({ required: true, default: 0 }) status: number; // 关卡状态 0-挑战中 1-挑战成功 2-挑战失败 @prop({ required: true, default: 0 }) star: number; // 关卡状态 0-挑战中 1-挑战成功 2-挑战失败 @prop({ required: true }) record: { // 使用的武将等记录 heroes: Array ; // 武将id }; public static async getBattleRecordByCode(battleCode: string, lean = true) { const result: BattleRecordType = await BattleRecordModel.findOne({ battleCode }).lean(lean); return result; } public static async getBattleRecordByIdAndStatus(roleId: string, battleId: number, status: number, lean = true) { const result: BattleRecordType = await BattleRecordModel.findOne({ roleId, battleId, status }).lean(lean); return result; } public static async getBattleRecordByIdAndStar(roleId: string, battleId: number, star: number, lean = true) { const result: BattleRecordType = await BattleRecordModel.findOne({ roleId, battleId, star: {$lte: star} }).lean(lean); return result; } public static async updateBattleRecordByCode( battleCode: string, params: object, lean = true) { const result: BattleRecordType = await BattleRecordModel.findOneAndUpdate({ battleCode }, params, {new: true, upsert: true}).lean(lean); return result; } public static async deleteAccount(roleId: string) { let result = await BattleRecordModel.deleteMany({roleId}); return result||{}; } } export const BattleRecordModel = getModelForClass(BattleRecord); export interface BattleRecordType extends Pick, keyof BattleRecord>{}