✨ feat(好友): 展示阵容优化
This commit is contained in:
@@ -688,15 +688,22 @@ export class FriendHandler {
|
||||
|
||||
let result: PlayerDetail;
|
||||
|
||||
let dbHeroes = await HeroModel.findByRole(oppoRoleId);
|
||||
let dbHeroes = await HeroModel.findAndSortByCe(oppoRoleId);
|
||||
let role = await RoleModel.findByRoleId(oppoRoleId, null, true);
|
||||
if(!role) return resResult(STATUS.ROLE_NOT_FOUND);
|
||||
|
||||
let { topLineup, topLineupCe, towerLv, showLineup } = role;
|
||||
let { topLineupCe, towerLv, showLineup } = role;
|
||||
|
||||
let heroes = new Array<PlayerDetailHero>();
|
||||
for (let curHero of dbHeroes.slice(0, 18)) {
|
||||
let hero = new PlayerDetailHero();
|
||||
hero.setByDbHero(curHero);
|
||||
heroes.push(hero);
|
||||
}
|
||||
|
||||
if (showLineup && showLineup.length) { // 设置过展示阵容
|
||||
result = new PlayerDetail(oppoRoleId, heroes);
|
||||
if (showLineup) { // 设置过展示阵容
|
||||
let heroes = new Array<PlayerDetailHero>();
|
||||
for (let hid of showLineup) {
|
||||
let curHero = dbHeroes.find(cur => cur.hid == hid);
|
||||
if (curHero) {
|
||||
@@ -705,22 +712,13 @@ export class FriendHandler {
|
||||
heroes.push(hero);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (let { hid } of topLineup) {
|
||||
let curHero = dbHeroes.find(cur => cur.hid == hid);
|
||||
if (curHero) {
|
||||
let hero = new PlayerDetailHero();
|
||||
hero.setByDbHero(curHero);
|
||||
heroes.push(hero);
|
||||
}
|
||||
}
|
||||
result.setShowLineup(heroes);
|
||||
}
|
||||
|
||||
let ladder = await LadderMatchModel.findByRoleId(oppoRoleId);
|
||||
|
||||
result = new PlayerDetail(oppoRoleId, heroes);
|
||||
result.setPlayer(role);
|
||||
result.setCe(topLineupCe);
|
||||
|
||||
let ladder = await LadderMatchModel.findByRoleId(oppoRoleId);
|
||||
result.setWarStar(role.warStar, ladder?.rank||0, towerLv - 1);
|
||||
|
||||
return resResult(STATUS.SUCCESS, result);
|
||||
|
||||
@@ -100,6 +100,7 @@ export class EPlace {
|
||||
|
||||
@index({ seqId: 1 })
|
||||
@index({ roleId: 1, hid: 1 })
|
||||
@index({ roleId: 1, ce: -1 })
|
||||
export default class Hero extends BaseModel {
|
||||
|
||||
@prop({ required: true })
|
||||
@@ -182,6 +183,11 @@ export default class Hero extends BaseModel {
|
||||
return heros;
|
||||
}
|
||||
|
||||
public static async findAndSortByCe(roleId: string) {
|
||||
const heroes: HeroType[] = await HeroModel.find({ roleId }).sort({ ce: -1 }).lean();
|
||||
return heroes
|
||||
}
|
||||
|
||||
public static async findBySeqIdRange(seqIds: Array<number>, roleId: string, lean = true) {
|
||||
const hero: HeroType[] = await HeroModel.find({ seqId: { $in: seqIds }, roleId }).lean(lean);
|
||||
return hero;
|
||||
|
||||
@@ -18,6 +18,7 @@ export class PlayerDetailHero {
|
||||
quality: number;
|
||||
score: number = 0;
|
||||
isDefense: boolean;
|
||||
ce: number;
|
||||
|
||||
setPvpHeroInfo?(hero: PvpEnemies|PvpOtherHeroes) {
|
||||
this.actorId = hero.actorId;
|
||||
@@ -38,7 +39,7 @@ export class PlayerDetailHero {
|
||||
this.colorStar = hero.colorStar;
|
||||
this.quality = hero.quality;
|
||||
this.skinId = hero.skinId;
|
||||
|
||||
this.ce = hero.ce;
|
||||
}
|
||||
|
||||
setPvpDefense?(pvpDefense: PvpDefenseType) {
|
||||
@@ -105,6 +106,7 @@ export class PlayerDetail {
|
||||
defCe?: number = 0;
|
||||
|
||||
heroes: PlayerDetailHero[];
|
||||
showLineup: PlayerDetailHero[] = [];
|
||||
rank?:number = 0;
|
||||
|
||||
battle?: PlayerDetailBattle = new PlayerDetailBattle([], 0, 0);
|
||||
@@ -115,6 +117,10 @@ export class PlayerDetail {
|
||||
this.rank = rank;
|
||||
}
|
||||
|
||||
setShowLineup(showLineup: PlayerDetailHero[]) {
|
||||
this.showLineup = showLineup;
|
||||
}
|
||||
|
||||
setRobot(pvpHistoryOpp: PvpHistoryOppType) {
|
||||
if(pvpHistoryOpp.roleName) this.roleName = pvpHistoryOpp.roleName;
|
||||
if(pvpHistoryOpp.lv) this.lv = pvpHistoryOpp.lv;
|
||||
|
||||
Reference in New Issue
Block a user