战力计算,远征战力筛选
This commit is contained in:
+17
-7
@@ -1,6 +1,7 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, Ref, mongoose } from '@typegoose/typegoose';
|
||||
import Equip from './Equip';
|
||||
import { updateCe } from '../pubUtils/util';
|
||||
|
||||
/**
|
||||
* 英雄表
|
||||
@@ -24,12 +25,14 @@ export default class Hero extends BaseModel {
|
||||
exp: number; // 经验值
|
||||
@prop({ required: true, default: 1 })
|
||||
lv: number; // 武将等级
|
||||
@prop({ required: true, default: 100 })
|
||||
@prop({ required: true, default: 0 })
|
||||
ce: number; // 武将战力
|
||||
@prop({ required: true, default: 0 })
|
||||
historyCe: number; // 武将历史最高战力
|
||||
|
||||
@prop({ required: true })
|
||||
@prop({ required: true, default: 0 })
|
||||
star: number; // 星级
|
||||
@prop({ required: true })
|
||||
@prop({ required: true, default: 0 })
|
||||
fire: number; // 觉醒的火,在满星了之后会继续进行觉醒,显示类似6星1火
|
||||
@prop({ required: true, default: 1 })
|
||||
rank: number; // 阶数
|
||||
@@ -70,26 +73,28 @@ export default class Hero extends BaseModel {
|
||||
const hero = await HeroModel.findOneAndUpdate({ roleId, hid }, {$push: {equips: equipId}}, {new: true}).lean(lean);
|
||||
if (hero) {
|
||||
await Equip.putOn(hero.hid, equipId);
|
||||
await updateCe(roleId, hero )
|
||||
}
|
||||
return hero;
|
||||
}
|
||||
|
||||
public static async createHero(heroInfo: {roleId: string, roleName: string, hid: number, hName: string, seqId: number, lv?:number, ce: number}, lean = true) {
|
||||
public static async createHero(heroInfo: {roleId: string, roleName: string, hid: number, star: number, hName: string, seqId: number, lv?:number, ce: number}, lean = true) {
|
||||
const doc = new HeroModel();
|
||||
const update = Object.assign(doc.toJSON(), heroInfo);
|
||||
delete update._id;
|
||||
const hero = await HeroModel.findOneAndUpdate({roleId: heroInfo.roleId, hid: heroInfo.hid}, update, {upsert: true, new: true}).lean(lean);
|
||||
await updateCe(heroInfo.roleId, hero);
|
||||
return hero;
|
||||
}
|
||||
|
||||
public static async sumTopHeroCe(roleId: string, num: number) {
|
||||
let ce = await HeroModel.aggregate([
|
||||
{ $match : { roleId } },
|
||||
{ $sort: {ce: -1} },
|
||||
{ $sort: {historyCe: -1} },
|
||||
{ $limit: num },
|
||||
{ $group: { _id: null, ce: { $sum: '$ce' } } }
|
||||
{ $group: { _id: null, historyCe: { $sum: '$historyCe' } } }
|
||||
]);
|
||||
return ce.length > 0?ce[0].ce:0;
|
||||
return ce.length > 0?ce[0].historyCe:0;
|
||||
}
|
||||
|
||||
public static async sumHeroCe(roleId: string) {
|
||||
@@ -100,6 +105,11 @@ export default class Hero extends BaseModel {
|
||||
return ce.length > 0?ce[0].ce:0;
|
||||
}
|
||||
|
||||
public static async getTopHero(roleId: string, num: number, lean = true) {
|
||||
const heroes = await HeroModel.find({roleId}).limit(num).sort({ce: -1}).lean(lean);
|
||||
return heroes;
|
||||
}
|
||||
|
||||
public static async deleteAccount(roleId: string, lean = true) {
|
||||
let result = await HeroModel.deleteMany({roleId}).lean(lean);
|
||||
return result||{};
|
||||
|
||||
@@ -4,6 +4,13 @@ import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
||||
import User from './User';
|
||||
import { shouldRefresh } from '../pubUtils/util';
|
||||
|
||||
class TopHero {
|
||||
@prop({ required: true })
|
||||
hid: number; // 武将id
|
||||
@prop({ required: true })
|
||||
ce: number; // 战力
|
||||
}
|
||||
|
||||
/**
|
||||
* 角色字段接口
|
||||
*/
|
||||
@@ -37,6 +44,10 @@ export default class Role extends BaseModel {
|
||||
lv: number; // 主公等级
|
||||
@prop({ required: true, default: 0 })
|
||||
ce: number; // 总战力
|
||||
@prop({ required: true, default: 0 })
|
||||
topFiveCe: number; // 最强5人战力
|
||||
@prop({ required: true, type: TopHero, default: [] })
|
||||
topFive: Array<TopHero>; // 总战力
|
||||
@prop({ required: true, default: 100 })
|
||||
tili: number; // 体力值
|
||||
|
||||
|
||||
Reference in New Issue
Block a user