diff --git a/game-server/app/servers/guild/handler/guildBossHandler.ts b/game-server/app/servers/guild/handler/guildBossHandler.ts index 50b356d1d..2522b7c09 100644 --- a/game-server/app/servers/guild/handler/guildBossHandler.ts +++ b/game-server/app/servers/guild/handler/guildBossHandler.ts @@ -112,13 +112,13 @@ export class GuildHandler { return resResult(STATUS.GUILD_SCRIPT_IS_BATTLED); } - let { code: bossCode, warId, ranks, bossHp } = bossInstance; + let { code: bossCode, warId, ranks, bossHp, encourageCnt } = bossInstance; const battleCode = genCode(8); // 关卡唯一值 await BattleRecordModel.updateBattleRecordByCode(battleCode, { $set: { roleId, roleName, battleId: warId, status: 0, - record: { heroes: [], bossInstanceCode: bossCode, bossHp: bossHp }, + record: { heroes: [], bossInstanceCode: bossCode, bossHp: bossHp, encourageCnt }, } }, true); const serverId: number = parseInt(session.get('serverId')); @@ -135,6 +135,24 @@ export class GuildHandler { return resResult(STATUS.SUCCESS, { battleCode, bossCode: bossInstance.code, myChallengeCnt: newMyChallengeCnt }); } + async getBossInstanceByBattleCode(msg: guildInter & { battleCode: string }, session: BackendSession) { + const { battleCode, myUserGuild: userGuild } = msg; + let result = { + status: 0, + bossInfo: null + }; + let battleRecord = await BattleRecordModel.getBattleRecordByCode(battleCode); + if(battleRecord && battleRecord.record && battleRecord.record.bossInstanceCode) { + let bossInstance = await BossInstanceModel.findByCode(battleRecord.record.bossInstanceCode); + if(bossInstance) { + let info = await getBossInstanceInfoByData(bossInstance, userGuild); + result.status = bossInstance.status; + result.bossInfo = info.bossInfo && { ...info.bossInfo, encourageCnt: battleRecord.record.encourageCnt } + } + } + return resResult(STATUS.SUCCESS, result); + } + async action(msg: guildInter & { bossCode: string, damage: number, battleCode: string }, session: BackendSession) { const { battleCode, damage, myUserGuild: userGuild, bossCode } = msg; const roleId: string = session.get('roleId'); diff --git a/game-server/app/services/guildBossService.ts b/game-server/app/services/guildBossService.ts index 56b851e67..a4c348fbb 100644 --- a/game-server/app/services/guildBossService.ts +++ b/game-server/app/services/guildBossService.ts @@ -38,10 +38,10 @@ export async function getBossInstanceInfoByData(bossInstance: BossInstanceType, let bossInfo = null; if(bossInstance) { - let { warId, ranks, bossHp, bossTotalHp, bossLv, encourageCnt } = bossInstance; + let { code, warId, ranks, bossHp, bossTotalHp, bossLv, encourageCnt } = bossInstance; let dicBossBase = gameData.bossBaseByBossLv.get(bossLv); let rankInfo = getRanks(ranks, userGuild.roleId); - bossInfo = { warId, ...rankInfo, bossHp, bossTotalHp, bossLv, encourageCnt, encourageMax: dicBossBase.encourageSum }; + bossInfo = { bossCode: code, warId, ...rankInfo, bossHp, bossTotalHp, bossLv, encourageCnt, encourageMax: dicBossBase.encourageSum }; } return { status, bossInfo, ...refObj } } diff --git a/shared/consts/constModules/guildConst.ts b/shared/consts/constModules/guildConst.ts index 7190d084c..ed3b0a32a 100644 --- a/shared/consts/constModules/guildConst.ts +++ b/shared/consts/constModules/guildConst.ts @@ -163,6 +163,7 @@ export const GUILD_ROUTE_OPERATE = [ { route: 'guild.raceActivityHandler.useItem', operate: GUILD_OPERATE.RACE_ACTIVITY, type: GUILD_AUTH_CHECK_TYPE.CHECK_SELF_WITH_SESSION }, { route: 'guild.raceActivityHandler.battleEnd', operate: GUILD_OPERATE.RACE_ACTIVITY, type: GUILD_AUTH_CHECK_TYPE.CHECK_SELF_WITH_SESSION }, { route: 'guild.guildBossHandler.encourage', operate: GUILD_OPERATE.BOSS_BATTLE, type: GUILD_AUTH_CHECK_TYPE.CHECK_SELF }, + { route: 'guild.guildBossHandler.getBossInstanceByBattleCode', operate: GUILD_OPERATE.BOSS_BATTLE, type: GUILD_AUTH_CHECK_TYPE.CHECK_SELF }, ]; diff --git a/shared/db/BattleRecord.ts b/shared/db/BattleRecord.ts index a223b3f07..48ac7e251 100644 --- a/shared/db/BattleRecord.ts +++ b/shared/db/BattleRecord.ts @@ -35,6 +35,8 @@ class Record { bossHp?: number; @prop({ required: false }) bossDamage?: number; // boss本造成的伤害 + @prop({ required: false }) + encourageCnt?: number; } export default class BattleRecord extends BaseModel {