fix 修复联调时发现的bug

This commit is contained in:
luying
2020-10-27 16:50:16 +08:00
parent a74b659590
commit c25f95942c
5 changed files with 54 additions and 23 deletions

View File

@@ -232,7 +232,7 @@ export class ExpeditionBattleHandler {
let warReward = new WarReward(roleId, roleName, battleId, isSuccess); let warReward = new WarReward(roleId, roleName, battleId, isSuccess);
let reward = await warReward.saveReward(1); let reward = await warReward.saveReward(1);
let actordata = await roleLevelup(roleId, warInfo.kingExp)// 主公升级经验 let actordata = await roleLevelup(roleId, isSuccess?warInfo.kingExp:0);// 主公升级经验
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
expeditionCode, expeditionId, expeditionCode, expeditionId,

View File

@@ -8,7 +8,7 @@ import { checkDaily, checkDailyAndIncrease } from '../../../services/dailyBattle
import { checkTowerWar, towerBattleEnd } from '../../../services/battleService'; import { checkTowerWar, towerBattleEnd } from '../../../services/battleService';
import { WarReward } from '../../../services/warRewardService'; import { WarReward } from '../../../services/warRewardService';
import { getAp, setAp } from '../../../services/actionPointService'; import { getAp, setAp } from '../../../services/actionPointService';
import { setBattleStatus } from '../../../services/eventSercive'; import { setBattleStatus, checkEventBattle } from '../../../services/eventSercive';
import { STATUS } from '../../../consts/statusCode'; import { STATUS } from '../../../consts/statusCode';
import { resResult } from '../../../pubUtils/util'; import { resResult } from '../../../pubUtils/util';
import { HeroModel } from '../../../db/Hero'; import { HeroModel } from '../../../db/Hero';
@@ -53,6 +53,7 @@ export class NormalBattleHandler {
let checkHeroes = checkBattleHeroes(roleId, heroes); let checkHeroes = checkBattleHeroes(roleId, heroes);
if(!checkHeroes) return resResult(STATUS.BATTLE_HERO_NOT_FOUND); if(!checkHeroes) return resResult(STATUS.BATTLE_HERO_NOT_FOUND);
const battleCode = genCode(8); // 关卡唯一值
let dailyNum = {}; let dailyNum = {};
let towerData = {}; let towerData = {};
if(warInfo.warType == WAR_TYPE.DAILY) { if(warInfo.warType == WAR_TYPE.DAILY) {
@@ -63,12 +64,18 @@ export class NormalBattleHandler {
dailyNum = { type: checkResult.type, count: checkResult.count, sum: checkResult.sum }; dailyNum = { type: checkResult.type, count: checkResult.count, sum: checkResult.sum };
} else if (warInfo.warType == WAR_TYPE.TOWER) { } else if (warInfo.warType == WAR_TYPE.TOWER) {
let checkResult = await checkTowerWar(roleId, battleId, heroes); let checkResult = await checkTowerWar(roleId, battleId, heroes);
if(checkResult.status) { if(checkResult.status == -1) {
return checkResult.resResult return checkResult.resResult
} }
towerData = Object.assign(towerData, checkResult.data); towerData = Object.assign(towerData, checkResult.data);
} else if (warInfo.warType == WAR_TYPE.EVENT) {
// 记录事件状态
let checkResult = await checkEventBattle( roleId, session.get('eventStatus'), battleId, battleCode);
if(checkResult.status == -1) {
return checkResult.resResult
}
} }
const battleCode = genCode(8);
const BattleRecord = await BattleRecordModel.updateBattleRecordByCode(battleCode, { const BattleRecord = await BattleRecordModel.updateBattleRecordByCode(battleCode, {
$set: { $set: {
roleId, roleName, battleId, roleId, roleName, battleId,
@@ -204,6 +211,8 @@ export class NormalBattleHandler {
let condition2 = await BattleRecordModel.getBattleRecordByIdAndStar(roleId, battleId, 3); let condition2 = await BattleRecordModel.getBattleRecordByIdAndStar(roleId, battleId, 3);
if(!condition2) warReward.setCondition(1, true); if(!condition2) warReward.setCondition(1, true);
} }
await updateWarStar(roleId, battleId, warInfo.warType, star);
} }
let reward = await warReward.saveReward(1); let reward = await warReward.saveReward(1);
@@ -213,9 +222,7 @@ export class NormalBattleHandler {
}, true); }, true);
let { status } = updateResult; let { status } = updateResult;
await updateWarStar(roleId, battleId, warInfo.warType, star); let actordata = await roleLevelup(roleId, isSuccess?warInfo.kingExp:0);// 主公升级经验
let actordata = await roleLevelup(roleId, warInfo.kingExp)// 主公升级经验
let curHeroes = []; let curHeroes = [];
for(let hid of heroes) { for(let hid of heroes) {

View File

@@ -2,9 +2,30 @@ import { Application, FrontendOrBackendSession } from 'pinus';
import { getGamedata } from '../pubUtils/gamedata'; import { getGamedata } from '../pubUtils/gamedata';
import EventRecord, { EventRecordModel } from '../db/EventRecord'; import EventRecord, { EventRecordModel } from '../db/EventRecord';
import { RoleModel } from '../db/Role'; import { RoleModel } from '../db/Role';
import { genCode, decodeStrSingle, decodeStr, getRandomWithWeight } from '../pubUtils/util'; import { genCode, decodeStrSingle, decodeStr, getRandomWithWeight, resResult } from '../pubUtils/util';
import { EVENT_STATUS, EVENT_RECORD_STATUS, EVENT_TYPE, EVENT_RANDOM_TYPE_ONE_OPEN, EVENT_QUIZ_NUM, EVENT_ANSWER_STATUS } from '../consts/consts'; import { EVENT_STATUS, EVENT_RECORD_STATUS, EVENT_TYPE, EVENT_RANDOM_TYPE_ONE_OPEN, EVENT_QUIZ_NUM, EVENT_ANSWER_STATUS } from '../consts/consts';
import { EVENT_REFRESH_NUM } from '../consts/consts'; import { EVENT_REFRESH_NUM } from '../consts/consts';
import { STATUS } from '../consts/statusCode';
/**
* 从检查接口调用检查是否有这么个战斗顺便保存一下battleCode
*
* @param roleId
* @param eventStatus
* @param battleId
* @param battleCode
*/
export async function checkEventBattle(roleId: string, eventStatus: number, battleId: number, battleCode: string) {
let now = new Date();
let refTime = eventStatus == EVENT_STATUS.OPEN? getEventTime(now): 0;
let result = await EventRecordModel.setBattleCode(roleId, battleId, refTime, battleCode);
if (!result) {
return { status: -1, resResult: resResult(STATUS.EVENT_INFO_NOT_FOUND) };
} else {
return { status: 0, data: result };
}
}
/** /**
* 从关卡结算接口调用,保存战斗情况 * 从关卡结算接口调用,保存战斗情况
@@ -17,14 +38,14 @@ import { EVENT_REFRESH_NUM } from '../consts/consts';
* @param battleCode * @param battleCode
*/ */
export async function setBattleStatus(app: Application, session: FrontendOrBackendSession, roleId: string, battleId: number , isSuccess: boolean, battleCode: string) { export async function setBattleStatus(app: Application, session: FrontendOrBackendSession, roleId: string, battleId: number , isSuccess: boolean, battleCode: string) {
let now = new Date();
let eventStatus = session.get('eventStatus');
let refTime = eventStatus == EVENT_STATUS.OPEN? getEventTime(now): 0;
let { BATTLE_SUCCESS, BATTLE_FAIL } = EVENT_RECORD_STATUS; let { BATTLE_SUCCESS, BATTLE_FAIL } = EVENT_RECORD_STATUS;
let result = await EventRecordModel.setBattleStatus(roleId, battleId, refTime, isSuccess?BATTLE_SUCCESS:BATTLE_FAIL, battleCode); let result = await EventRecordModel.setBattleStatus(roleId, battleId, battleCode, isSuccess?BATTLE_SUCCESS:BATTLE_FAIL);
if (!result) {
return { status: -1, resResult: resResult(STATUS.EVENT_INFO_NOT_FOUND) };
}
await checkEvent(app, session, true); await checkEvent(app, session, true);
return result; return { status: 0, data: result };
} }
/** /**
@@ -34,8 +55,8 @@ export async function setBattleStatus(app: Application, session: FrontendOrBacke
*/ */
export function getEventTime(now: Date) { export function getEventTime(now: Date) {
let curTime = Number(now); let curTime = Number(now);
let todayA = now.setHours(12, 0, 0, 0); // 每天12点 let todayA = now.setHours(12, 0, 0, 0) - 8*60*60*1000; // 每天12点,修复时差
let todayB = now.setHours(18, 0, 0, 0); // 每天18点 let todayB = now.setHours(18, 0, 0, 0) - 8*60*60*1000; // 每天18点,修复时差
let yesterdayB = todayB - 86400000; // 前一天12点 let yesterdayB = todayB - 86400000; // 前一天12点
let t = 0; let t = 0;
if(curTime < todayA) { if(curTime < todayA) {
@@ -45,6 +66,7 @@ export function getEventTime(now: Date) {
} else if (curTime >= todayB) { } else if (curTime >= todayB) {
t = todayB; t = todayB;
} }
console.log('getEventTime', curTime, todayA, todayB, yesterdayB, t);
return t return t
} }

View File

@@ -75,8 +75,14 @@ export default class EventRecord extends BaseModel {
return data; return data;
} }
public static async setBattleStatus(roleId: string, battleId: number, refTime: number, status: number, battleCode: string , lean=true ) { public static async setBattleCode(roleId: string, battleId: number, refTime: number, battleCode: string , lean=true ) {
let result = await EventRecordModel.findOneAndUpdate({roleId, battleId, refTime}, {$set:{ status, battleCode }}).sort({turn: 1}).lean(lean); let result = await EventRecordModel.findOneAndUpdate({roleId, battleId, refTime}, {$set:{ battleCode }}).sort({turn: 1}).lean(lean);
return result;
}
public static async setBattleStatus(roleId: string, battleId: number, battleCode: string, status: number , lean=true ) {
console.log('********', roleId, battleId, battleCode)
let result = await EventRecordModel.findOneAndUpdate({roleId, battleId, battleCode}, {$set:{ status }}).lean(lean);
return result; return result;
} }

View File

@@ -31,12 +31,8 @@
<div class="col-sm-6"> <div class="col-sm-6">
<form id="form"> <form id="form">
<div class="form-group"> <div class="form-group">
<label for="uid">uid (chat)</label> <label for="userCode">userCode</label>
<input type="text" class="form-control" id="uid" name="uid" placeholder="uid" value="asd"> <input type="text" class="form-control" id="userCode" name="userCode" placeholder="userCode" value="test">
</div>
<div class="form-group">
<label for="rid">rid (chat)</label>
<input type="text" class="form-control" id="rid" name="rid" placeholder="rid" value="123">
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="route">接口</label> <label for="route">接口</label>