添加获得对手

This commit is contained in:
luying
2021-01-06 20:25:06 +08:00
parent 524cdc11c7
commit a339b8adcc
4 changed files with 120 additions and 20 deletions

View File

@@ -5,6 +5,11 @@ import Role, { } from './Role';
import PvpDef, { } from './PvpDefense';
import { PVP_PLAYER_POS, PVP_HERO_POS } from '../consts';
interface pvpUpdateInter {
_id?: string;
oppPlayers: OppPlayers[]
}
export class Heroes {
@prop({ required: true })
actorId: number; // 武将id
@@ -53,12 +58,15 @@ export class Robot {
@prop({ required: true })
defCe: number;
@prop({ required: true })
pLv: number;
@prop({ required: true })
warId: number; // 模板的warId
constructor(roleId: string, roleName: string, defCe: number, warId: number) {
constructor(roleId: string, roleName: string, defCe: number, pLv: number, warId: number) {
this.roleId = roleId;
this.roleName = roleName;
this.defCe = defCe;
this.pLv = pLv;
this.warId = warId;
}
}
@@ -93,7 +101,7 @@ export default class PvpDefense extends BaseModel {
heroes: Array<Heroes>;
@prop({ required: true, default: 0 })
score: number;
@prop({ required: true, default: 0 })
@prop({ required: true, default: 1 })
pLv: number;
@prop({ required: true, default: 0 })
hisScore: number; //历史最高积分
@@ -126,7 +134,7 @@ export default class PvpDefense extends BaseModel {
return result;
}
public static async createPvpDefense(params: { roleId: string, roleName: string, heroes: Array<Heroes>, oppPlayers: Array<OppPlayers>, defCe: number }, lean = true) {
public static async createPvpDefense(params: { roleId: string, roleName: string, role: string, heroes: Array<Heroes>, oppPlayers: Array<OppPlayers>, defCe: number }, lean = true) {
const doc = new PvpDefenseModel();
const update = Object.assign(doc.toJSON(), params);
const defense: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId: params.roleId }, update, { upsert: true, new: true }).lean(lean);
@@ -163,12 +171,34 @@ export default class PvpDefense extends BaseModel {
}
public static async findByRoleIdIncludeAll(roleId: string, lean = true) {
const result: PvpDefenseType = await PvpDefenseModel.findOne({ roleId }).populate('role', 'Heroes.hero', 'OppPlayers.oppDef').lean(lean);
const result: PvpDefenseType = await PvpDefenseModel.findOne({ roleId })
.populate('role', 'headHid sHid topFiveCe roleId roleName')
.populate('heroes.hero')
.populate({
path: 'oppPlayers.oppDef',
populate: {
path: 'role',
select: 'headHid sHid topFiveCe roleId roleName'
}
}).lean();
return result;
}
public static async findByTeamLv(min: number, max: number) {
const result: PvpDefenseType[] = await PvpDefenseModel.find({ $gte: { pLv: min }, $lte: { pLv: max } }).lean();
const result: PvpDefenseType[] = await PvpDefenseModel.find({ pLv: { $gte: min, $lte: max } }).lean();
return result;
}
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();
return result;
}
}