fix pvp刷新对手时保存数据

This commit is contained in:
luying
2021-01-14 15:58:18 +08:00
parent f3c76b8d6d
commit 5823a1b3eb
11 changed files with 372 additions and 221 deletions
+9 -22
View File
@@ -2,8 +2,8 @@ import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, Ref, mongoose } from '@typegoose/typegoose';
import Hero, { } from './Hero';
import Role, { } from './Role';
import PvpDef, { } from './PvpDefense';
import { PVP_PLAYER_POS, PVP_HERO_POS } from '../consts';
import PvpHistoryOpp from './PvpHistoryOpp';
export interface pvpUpdateInter {
_id?: string;
@@ -91,14 +91,12 @@ export class Robot {
export class OppPlayers {
@prop({ required: true })
roleId: string;
@prop({ ref: 'PvpDefense', type: mongoose.Schema.Types.ObjectId })
oppDef: Ref<PvpDef>;
@prop({ ref: 'PvpHistoryOpp', type: mongoose.Schema.Types.ObjectId })
oppDef: Ref<PvpHistoryOpp>;
@prop({ required: true })
pos: number;
@prop({ required: true })
isRobot: boolean;
@prop({ required: true, type: Robot, default: null, _id: false })
robot: Robot
}
export class HeroScores {
@@ -136,7 +134,7 @@ export default class PvpDefense extends BaseModel {
isDefaultHero: boolean;
@prop({ required: true, default: 0 })
refOppCnt: number; // 刷新对手总次数,消耗可根据消耗表算出
@prop({ required: true, default: 0 })
@prop({ required: true, default: new Date() })
refOppTime: Date; // 刷新对手时间
@prop({ required: true, default: 0 })
challengeCnt: number; // 可挑战次数
@@ -159,7 +157,7 @@ export default class PvpDefense extends BaseModel {
public static async findByScale(roleId: string, min: number, max: number, lean = true) {
const result: PvpDefenseType[] = await PvpDefenseModel.find({ roleId: { $ne: roleId }, defCe: { $lte: max, $gte: min } })
.populate('role', 'headHid sHid topFiveCe roleId roleName')
.populate('role', 'headHid sHid topFiveCe roleId roleName lv')
.populate('heroes.hero')
.sort({ updatedAt: -1 }).limit(100).lean(lean);
return result;
@@ -203,15 +201,9 @@ export default class PvpDefense extends BaseModel {
public static async findByRoleIdIncludeAll(roleId: string) {
const result: PvpDefenseType = await PvpDefenseModel.findOne({ roleId })
.populate('role', 'headHid sHid topFiveCe roleId roleName')
.populate('role', 'headHid sHid topFiveCe roleId roleName lv')
.populate('heroes.hero')
.populate({
path: 'oppPlayers.oppDef',
populate: {
path: 'role heroes.hero',
select: 'headHid sHid topFiveCe roleId roleName hid ceAttr globalCeAttr'
}
}).lean();
.populate('oppPlayers.oppDef', 'oppRoleId pos roleName headHid sHid rankLv pLv defCe heroes').lean();
return result;
}
@@ -223,13 +215,8 @@ export default class PvpDefense extends BaseModel {
public static async updateInfoAndInclude(roleId: string, update: pvpUpdateInter) {
delete update._id;
let result: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({roleId}, {$set:update}, {new: true})
.populate({
path: 'oppPlayers.oppDef',
populate: {
path: 'role',
select: 'headHid sHid topFiveCe roleId roleName'
}
}).lean();
.populate('role', 'headHid sHid topFiveCe roleId roleName lv')
.populate('oppPlayers.oppDef', 'oppRoleId pos roleName headHid sHid rankLv pLv defCe').lean();
return result;
}
public static async updateInfo(roleId: string, update: pvpUpdateInter, lean = true) {