From 9248286efd8ee48cc6c4bcb8dc29c5b1bdf555a7 Mon Sep 17 00:00:00 2001 From: luying Date: Fri, 15 Jan 2021 16:05:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=98=BE=E7=A4=BA=E6=89=80?= =?UTF-8?q?=E6=9C=89=E6=AD=A6=E5=B0=86=E9=A1=B5=E9=9D=A2=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/services/pvpService.ts | 4 +++- shared/db/Hero.ts | 8 ++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/game-server/app/services/pvpService.ts b/game-server/app/services/pvpService.ts index 79c24d37c..c477378d7 100644 --- a/game-server/app/services/pvpService.ts +++ b/game-server/app/services/pvpService.ts @@ -199,7 +199,7 @@ async function generPlayerOppHis(pvpdefense: PvpDefenseType, mapWarJson: DicWarJ let { heroScores, heroes: defenseHeroes } = pvpdefense; let role = pvpdefense.role; let rankLv = await getMyRank(REDIS_KEY.PVP_RANK, 0, role.roleId); - let dbHeroes = await HeroModel.findByRole(role.roleId); + let dbHeroes = await HeroModel.findByRole(role.roleId, [{field: 'ce', sortBy: -1}]); let heroes = new Array(); let otherHeroes = new Array(); // 阵容外的所有武将信息 for(let dbHero of dbHeroes) { @@ -222,6 +222,8 @@ async function generPlayerOppHis(pvpdefense: PvpDefenseType, mapWarJson: DicWarJ otherHeroes.push(heroInfo); } } + heroes.sort((a, b) => b.score - a.score); + otherHeroes.sort((a, b) => b.score - a.score); let pvpHistoryOpp = await PvpHistoryOppModel.createPvpOpp({ ...pvpdefense, ...role, pos, rankLv, heroes, otherHeroes, roleId, oppRoleId: makeRobotId(pvpdefense.roleId) diff --git a/shared/db/Hero.ts b/shared/db/Hero.ts index 13deccb4a..8f1fff7a3 100644 --- a/shared/db/Hero.ts +++ b/shared/db/Hero.ts @@ -144,8 +144,12 @@ export default class Hero extends BaseModel { @prop({ required: true, type: EPlace, default: getInitialEplace(), _id: false }) ePlace: EPlace[]; // 武将装备引用数组 - public static async findByRole(roleId: string, lean = true) { - const heros: HeroType[] = await HeroModel.find({ roleId }).lean(lean); + public static async findByRole(roleId: string, sort: { field: string, sortBy: number }[] = []) { + let sortParam = {}; + for(let {field, sortBy} of sort) { + sortParam[field] = sortBy; + } + const heros: HeroType[] = await HeroModel.find({ roleId }).sort(sortParam).lean(); return heros; }