import BaseModel from './BaseModel'; import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose'; export class HeroesRecord { @prop({ required: true, default: 0 }) hid: number; // 武将id @prop({ required: true, default: 0 }) quality: number; // 品质 @prop({ required: true, default: 0 }) star: number; // 星级 @prop({ required: true, default: 0 }) colorStar: number; // 觉醒 @prop({ required: true, default: 0 }) lv: number; // 等级 @prop({ required: true, default: 0 }) damage: number; // 伤害 @prop({ required: true, default: 0 }) heal: number; // 治疗 @prop({ required: true, default: 0 }) underDamage: number; // 承伤 } export class PlayerInfo { @prop({ required: true }) roleId: string; // 角色 id @prop({ required: true }) roleName: string; // 角色 名 @prop({ required: true, default: 0 }) lv: number; // 等级 @prop({ required: true, default: 0 }) sHid: number; // 形象 @prop({ required: true, default: 0 }) headHid: number; // 头像 @prop({ required: true, default: 0 }) title: number; // 爵位 @prop({ required: true, default: 0 }) ce: number; // 最高五人战力 @prop({ required: true, default: false }) isSuccess: boolean; // 是否胜利 @prop({ required: true, default: 0 }) score: number; // 获得的总积分 @prop({ required: true, type: HeroesRecord, default: [], _id: false }) heroes: HeroesRecord[]; // 获得的总积分 } @index({ roleId1: 1, updatedAt: -1 }) @index({ roleId2: 1, updatedAt: -1 }) export default class PvpRecord extends BaseModel { @prop({ required: true }) roleId1: string; // 角色 id @prop({ required: true }) roleId2: string; // 角色 id @prop({ required: true, default: 0 }) warId: number; // 这一关使用的地图 @prop({ required: true, type: PlayerInfo, default: {}, _id: false }) attackInfo: PlayerInfo; // 攻方信息 @prop({ required: true, type: PlayerInfo, default: {}, _id: false }) defenseInfo: PlayerInfo; // 守方信息 public static async createRec(param: { roleId1: string, roleId2: string, warId: number, attackInfo: PlayerInfo, defenseInfo: PlayerInfo}, lean = true) { const result = await PvpRecordModel.findOneAndUpdate({}, param, { new: true, upsert: true }).lean(); return result; } } export const PvpRecordModel = getModelForClass(PvpRecord); export interface PvpRecordType extends Pick, keyof PvpRecord>{};