From 8c6f9066ba0df7df11072e720599bc2067440c08 Mon Sep 17 00:00:00 2001 From: luying Date: Sat, 6 Feb 2021 15:17:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A5=BD=E5=8F=8B=EF=BC=9A=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E6=AD=A6=E5=B0=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/servers/role/handler/friendHandler.ts | 29 ++++++++++++------- shared/db/Hero.ts | 4 +-- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/game-server/app/servers/role/handler/friendHandler.ts b/game-server/app/servers/role/handler/friendHandler.ts index 8d6e626b2..66dc17996 100644 --- a/game-server/app/servers/role/handler/friendHandler.ts +++ b/game-server/app/servers/role/handler/friendHandler.ts @@ -627,28 +627,35 @@ export class FriendHandler { } // 查看对象武将详细 - public async getHeroDetail(msg: { roleId: string, hid: number }, session: BackendSession) { + public async getHeroDetail(msg: { roleId: string, hids: number[] }, session: BackendSession) { // let roleId: string = session.get('roleId'); // let sid: string = session.get('sid'); - let { roleId: hisRoleId, hid } = msg; + let { roleId: hisRoleId, hids } = msg; let role = await RoleModel.findByRoleId(hisRoleId, ROLE_SELECT.ATTR); if(!role) return resResult(STATUS.ROLE_NOT_FOUND); - let hero = await HeroModel.findByHidAndRole(hid, hisRoleId, HERO_SELECT.HERO_DETAIL, true); - if(!hero) return resResult(STATUS.HERO_NOT_FIND); + let heroList = await HeroModel.findByHidRange(hids, hisRoleId, HERO_SELECT.HERO_DETAIL, true); + if(heroList.length <= 0) return resResult(STATUS.HERO_NOT_FIND); - let { roleId, roleName, hName, ce, lv, star, colorStar, quality, job, skins } = hero; - let curSkin = skins.find(cur => cur.enable); - let equips = await EquipModel.findListByHidAndRole(hisRoleId, hid, EQUIP_SELECT.HERO_DETAIL); + let list = new Array(); + for(let {roleId, roleName, hid, hName, ce, lv, star, colorStar, quality, job, skins, ceAttr} of heroList) { - let attributes = getPlayerMainAttribute(hero.ceAttr, role.globalCeAttr); + let curSkin = skins.find(cur => cur.enable); + let equips = await EquipModel.findListByHidAndRole(hisRoleId, hid, EQUIP_SELECT.HERO_DETAIL); + + let attributes = getPlayerMainAttribute(ceAttr, role.globalCeAttr); + + list.push({ + roleId, roleName, hid, hName, ce, lv, star, colorStar, quality, job, + skin: curSkin?curSkin.id: 0, equips, attributes + }); - return { - roleId, roleName, hid, hName, ce, lv, star, colorStar, quality, job, - skin: curSkin?curSkin.id: 0, equips, attributes } + + + return resResult(STATUS.SUCCESS, { list }); } } \ No newline at end of file diff --git a/shared/db/Hero.ts b/shared/db/Hero.ts index 6798bb403..3c0d78279 100644 --- a/shared/db/Hero.ts +++ b/shared/db/Hero.ts @@ -159,8 +159,8 @@ export default class Hero extends BaseModel { return hero; } - public static async findByHidRange(hids: Array, roleId: string, lean = true) { - const hero: HeroType[] = await HeroModel.find({ hid: {$in: hids}, roleId }).lean(lean); + public static async findByHidRange(hids: Array, roleId: string, select?: string, getters = false) { + const hero: HeroType[] = await HeroModel.find({ hid: {$in: hids}, roleId }).select(select).lean({ getters }); return hero; }