修改关卡记录逻辑

This commit is contained in:
luying
2020-09-14 15:38:04 +08:00
parent b6725151d0
commit 693a87cd89
8 changed files with 63 additions and 41 deletions
@@ -1,9 +1,10 @@
import { Application, BackendSession } from 'pinus';
import { BattleRecordModel } from '../../../../../shared/db/BattleRecord';
import { BattleRecordModel } from '../../../db/BattleRecord';
import { getWarById, getGoodById } from '../../../util/gamedata';
import { CounterModel } from '../../../../../shared/db/Counter';
import { HeroModel } from '../../../../../shared/db/Hero';
import { EquipModel } from '../../../../../shared/db/Equip';
import { CounterModel } from '../../../db/Counter';
import { HeroModel } from '../../../db/Hero';
import { EquipModel } from '../../../db/Equip';
import { genCode } from '../../../util/util';
export default function(app: Application) {
return new NormalBattleHandler(app);
@@ -13,9 +14,9 @@ export class NormalBattleHandler {
constructor(private app: Application) {
}
// 进入关卡前,设置status=0
async checkBattle(msg: {battleId: number}, session: BackendSession) {
const { battleId } = msg;
// 进入关卡前,记录信息,生成唯一标识
async checkBattle(msg: {battleId: number, heroes: Array<any> }, session: BackendSession) {
const { battleId, heroes } = msg;
let roleId = session.get('roleId');
let roleName = session.get('roleName');
let warInfo = getWarById(battleId);
@@ -26,40 +27,54 @@ export class NormalBattleHandler {
}
}
const BattleRecord = await BattleRecordModel.updateBattleRecordByRole(roleId, battleId, {
const battleCode = genCode(8);
const BattleRecord = await BattleRecordModel.updateBattleRecordByCode(battleCode, {
$set: {
roleId,
roleName,
battleId,
status: 0,
warName: warInfo.gk_name,
warType: warInfo.war_type
},
$inc: {
count: 1
warType: warInfo.war_type,
record: { heroes }
}
});
}, true);
let {status} = BattleRecord;
let { count, status} = BattleRecord;
return {
code: 200,
data: {
battleId, count, status
battleId, battleCode, status
}
}
}
// 关卡结算,记录使用的武将,获得奖励
async battleEnd(msg: {battleId: number, isSuccess: boolean, heroes: Array<any>, }, session: BackendSession) {
async battleEnd(msg: {battleCode: string, battleId: number, isSuccess: boolean, heroes: Array<any>, }, session: BackendSession) {
const { battleId, isSuccess, heroes } = msg;
const { battleCode, battleId, isSuccess, heroes } = msg;
let roleId = session.get('roleId');
let roleName = session.get('roleName');
let warInfo = getWarById(battleId);
const BattleRecord = await BattleRecordModel.getBattleRecordByRole(roleId, battleId);
const BattleRecord = await BattleRecordModel.getBattleRecordByCode(battleCode, true);
if(!BattleRecord || BattleRecord.status != 0) {
return {
code: 202,
data: '关卡状态错误,未开启挑战'
data: '关卡状态错误'
}
}
let flag = 1; // 对比hero信息
let { record: { heroes: dbHeroes } } = BattleRecord;
for(let hid of heroes) {
if(dbHeroes.indexOf(hid) == -1) flag = 0;
}
if(!flag) {
return {
code: 202,
data: '关卡信息不同'
}
}
@@ -69,9 +84,6 @@ export class NormalBattleHandler {
$set: {
status: 1,
record: { heroes }
},
$inc: {
successCount: 1
}
}
reward = await this.handleReward(roleId, roleName, warInfo.reward);
@@ -80,21 +92,18 @@ export class NormalBattleHandler {
$set: {
status: 2,
record: { heroes }
},
$inc: {
failCount: 1
}
}
reward = [];
}
const result = await BattleRecordModel.updateBattleRecordByRole(roleId, battleId, params);
let {count, status} = result;
const updateResult = await BattleRecordModel.updateBattleRecordByCode(battleCode, params, true);
let { status } = updateResult;
return {
code: 200,
data: {
battleId, count, status,
battleCode, battleId, status,
goods: reward
}
}