pvp数据结构上传
This commit is contained in:
@@ -4,6 +4,7 @@ import Hero, { } from './Hero';
|
||||
import Role, { } from './Role';
|
||||
import PvpDef, { } from './PvpDefense';
|
||||
import { PVP_PLAYER_POS, PVP_POS } from '../consts';
|
||||
import SystemConfig, { } from './SystemConfig';
|
||||
|
||||
class Heroes {
|
||||
@prop({ required: true })
|
||||
@@ -79,7 +80,6 @@ export default class PvpDefense extends BaseModel {
|
||||
roleName: string; // 角色名称
|
||||
@prop({ ref: Role, type: mongoose.Schema.Types.ObjectId })
|
||||
role: Ref<Role>;
|
||||
|
||||
@prop({ required: true, type: Heroes, default: getInitialOppHeros(), _id: false })
|
||||
heroes: Array<Heroes>;
|
||||
@prop({ required: true, default: 0 })
|
||||
@@ -92,8 +92,8 @@ export default class PvpDefense extends BaseModel {
|
||||
defCe: number; //防守ce
|
||||
@prop({ required: true, type: OppPlayers, default: getInitialOppPlayers(), _id: false })
|
||||
oppPlayers: Array<OppPlayers>;
|
||||
@prop({ required: true, default: 0 })
|
||||
map: number;
|
||||
@prop({ ref: SystemConfig, type: mongoose.Schema.Types.ObjectId })
|
||||
map: Ref<SystemConfig>;
|
||||
@prop({ required: true, type: HidScores, default: [] })
|
||||
hidScores: Array<HidScores>;
|
||||
public static async findByRoleId(roleId: string, lean = true) {
|
||||
@@ -102,11 +102,11 @@ 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 }, ce: { $lte: max, $gte: min } }).sort({ updatedAt: -1 }).limit(100).lean(lean);
|
||||
const result: PvpDefenseType[] = await PvpDefenseModel.find({ roleId: { $ne: roleId }, defCe: { $lte: max, $gte: min } }).sort({ updatedAt: -1 }).limit(100).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async createPvpDefense(params: { roleId: string, roleName: string, heroes: Array<any>, ce: number }, lean = true) {
|
||||
public static async createPvpDefense(params: { roleId: string, roleName: string, heroes: Array<any>, 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);
|
||||
@@ -114,26 +114,26 @@ export default class PvpDefense extends BaseModel {
|
||||
|
||||
}
|
||||
|
||||
public static async addHeroToDefense(roleId: string, heroInfo: any, ce: number, lean = true) {
|
||||
public static async addHeroToDefense(roleId: string, heroInfo: any, defCe: number, lean = true) {
|
||||
const defense: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId: roleId }, {
|
||||
$inc: { ce },
|
||||
$inc: { defCe },
|
||||
$push: { heroes: heroInfo }
|
||||
}, { upsert: true, new: true }).lean(lean);
|
||||
return defense;
|
||||
|
||||
}
|
||||
|
||||
public static async removeHeroFromDefense(roleId: string, hid: number, ce: number, lean = true) {
|
||||
public static async removeHeroFromDefense(roleId: string, hid: number, defCe: number, lean = true) {
|
||||
const defense: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId: roleId }, {
|
||||
$inc: { ce: -1 * ce },
|
||||
$inc: { defCe: -1 * defCe },
|
||||
$pull: { heroes: { actorId: hid } }
|
||||
}, { upsert: true, new: true }).lean(lean);
|
||||
return defense;
|
||||
|
||||
}
|
||||
|
||||
public static async updateCe(roleId: string, hid: number, ce: number, lean = true) {
|
||||
const rec: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId, 'heroes.actorId': hid }, { $set: { ce } }).lean(lean);
|
||||
public static async updateCe(roleId: string, hid: number, defCe: number, lean = true) {
|
||||
const rec: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId, 'heroes.actorId': hid }, { $set: { defCe } }).lean(lean);
|
||||
return rec
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user