feat(好友): 展示阵容优化

This commit is contained in:
luying
2023-04-12 11:41:05 +08:00
parent 5a71e19f03
commit fdd06a5fe7
3 changed files with 26 additions and 16 deletions

View File

@@ -688,15 +688,22 @@ export class FriendHandler {
let result: PlayerDetail; let result: PlayerDetail;
let dbHeroes = await HeroModel.findByRole(oppoRoleId); let dbHeroes = await HeroModel.findAndSortByCe(oppoRoleId);
let role = await RoleModel.findByRoleId(oppoRoleId, null, true); let role = await RoleModel.findByRoleId(oppoRoleId, null, true);
if(!role) return resResult(STATUS.ROLE_NOT_FOUND); if(!role) return resResult(STATUS.ROLE_NOT_FOUND);
let { topLineup, topLineupCe, towerLv, showLineup } = role; let { topLineupCe, towerLv, showLineup } = role;
let heroes = new Array<PlayerDetailHero>(); 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) { for (let hid of showLineup) {
let curHero = dbHeroes.find(cur => cur.hid == hid); let curHero = dbHeroes.find(cur => cur.hid == hid);
if (curHero) { if (curHero) {
@@ -705,22 +712,13 @@ export class FriendHandler {
heroes.push(hero); heroes.push(hero);
} }
} }
} else { result.setShowLineup(heroes);
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);
}
}
} }
let ladder = await LadderMatchModel.findByRoleId(oppoRoleId);
result = new PlayerDetail(oppoRoleId, heroes);
result.setPlayer(role); result.setPlayer(role);
result.setCe(topLineupCe); result.setCe(topLineupCe);
let ladder = await LadderMatchModel.findByRoleId(oppoRoleId);
result.setWarStar(role.warStar, ladder?.rank||0, towerLv - 1); result.setWarStar(role.warStar, ladder?.rank||0, towerLv - 1);
return resResult(STATUS.SUCCESS, result); return resResult(STATUS.SUCCESS, result);

View File

@@ -100,6 +100,7 @@ export class EPlace {
@index({ seqId: 1 }) @index({ seqId: 1 })
@index({ roleId: 1, hid: 1 }) @index({ roleId: 1, hid: 1 })
@index({ roleId: 1, ce: -1 })
export default class Hero extends BaseModel { export default class Hero extends BaseModel {
@prop({ required: true }) @prop({ required: true })
@@ -182,6 +183,11 @@ export default class Hero extends BaseModel {
return heros; 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) { public static async findBySeqIdRange(seqIds: Array<number>, roleId: string, lean = true) {
const hero: HeroType[] = await HeroModel.find({ seqId: { $in: seqIds }, roleId }).lean(lean); const hero: HeroType[] = await HeroModel.find({ seqId: { $in: seqIds }, roleId }).lean(lean);
return hero; return hero;

View File

@@ -18,6 +18,7 @@ export class PlayerDetailHero {
quality: number; quality: number;
score: number = 0; score: number = 0;
isDefense: boolean; isDefense: boolean;
ce: number;
setPvpHeroInfo?(hero: PvpEnemies|PvpOtherHeroes) { setPvpHeroInfo?(hero: PvpEnemies|PvpOtherHeroes) {
this.actorId = hero.actorId; this.actorId = hero.actorId;
@@ -38,7 +39,7 @@ export class PlayerDetailHero {
this.colorStar = hero.colorStar; this.colorStar = hero.colorStar;
this.quality = hero.quality; this.quality = hero.quality;
this.skinId = hero.skinId; this.skinId = hero.skinId;
this.ce = hero.ce;
} }
setPvpDefense?(pvpDefense: PvpDefenseType) { setPvpDefense?(pvpDefense: PvpDefenseType) {
@@ -105,6 +106,7 @@ export class PlayerDetail {
defCe?: number = 0; defCe?: number = 0;
heroes: PlayerDetailHero[]; heroes: PlayerDetailHero[];
showLineup: PlayerDetailHero[] = [];
rank?:number = 0; rank?:number = 0;
battle?: PlayerDetailBattle = new PlayerDetailBattle([], 0, 0); battle?: PlayerDetailBattle = new PlayerDetailBattle([], 0, 0);
@@ -115,6 +117,10 @@ export class PlayerDetail {
this.rank = rank; this.rank = rank;
} }
setShowLineup(showLineup: PlayerDetailHero[]) {
this.showLineup = showLineup;
}
setRobot(pvpHistoryOpp: PvpHistoryOppType) { setRobot(pvpHistoryOpp: PvpHistoryOppType) {
if(pvpHistoryOpp.roleName) this.roleName = pvpHistoryOpp.roleName; if(pvpHistoryOpp.roleName) this.roleName = pvpHistoryOpp.roleName;
if(pvpHistoryOpp.lv) this.lv = pvpHistoryOpp.lv; if(pvpHistoryOpp.lv) this.lv = pvpHistoryOpp.lv;