fix pvp刷新对手时保存数据
This commit is contained in:
+9
-22
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user