任务:埋点48/71

This commit is contained in:
luying
2021-04-19 13:17:17 +08:00
parent 9f4f346447
commit 4bd4513ae6
11 changed files with 186 additions and 37 deletions
@@ -1,12 +1,13 @@
import { Application, BackendSession } from 'pinus';
import { getGamedata } from '../../../pubUtils/gamedata';
import { EventRecordModel } from '../../../db/EventRecord';
import { RoleModel } from '../../../db/Role';
import { EVENT_STATUS, EVENT_RECORD_STATUS, EVENT_ANSWER_STATUS } from '../../../consts';
import { EVENT_STATUS, EVENT_RECORD_STATUS, EVENT_ANSWER_STATUS, TASK_TYPE } from '../../../consts';
import { checkEvent, checkEventStatus, getEventSuccessStatus, getEvent, checkQuiz } from '../../../services/eventSercive';
import { handleFixedReward } from '../../../services/rewardService';
import { handleFixedReward, addItems } from '../../../services/rewardService';
import { STATUS } from '../../../consts/statusCode';
import { resResult } from '../../../pubUtils/util';
import { checkTask } from '../../../services/taskService';
import { gameData } from '../../../pubUtils/data';
export default function(app: Application) {
return new EventBattleHandler(app);
@@ -100,17 +101,16 @@ export class EventBattleHandler {
if(dataEventId != eventId) {
return resResult(STATUS.EVENT_WRONG_ID);
}
let dicEvent = getGamedata('dic_zyz_event');
let curEvent = dicEvent.find(cur => cur.eventID == eventId);
if(!curEvent) {
let dicEvent = gameData.event.get(eventId);
if(!dicEvent) {
return resResult(STATUS.EVENT_INFO_NOT_FOUND);
}
// 保存状态
let result = await EventRecordModel.setStatusByCode(roleId, eventCode, isSuccess?EVENT_RECORD_STATUS.SUCCESS_RECEIVED:EVENT_RECORD_STATUS.FAIL_RECEIVED);
// 保存奖励
let rewardStr = isSuccess?curEvent.winReward:curEvent.loseReward;
let goods = await handleFixedReward(roleId, roleName, sid, rewardStr, 1);
let reward = isSuccess?dicEvent.winReward:dicEvent.loseReward;
let goods = await addItems(roleId, roleName, sid, reward);
if(eventStatus == EVENT_STATUS.STARTING) { // 如果是第一次开启的挑战,保存成开启状态
await RoleModel.setEventStatus(roleId, EVENT_STATUS.OPEN);
// 第一场时间挑战完,开始正常刷新事件,所以刷新时间也重置起来
@@ -119,6 +119,8 @@ export class EventBattleHandler {
}
// 推送消息刷新
await checkEvent(session, true);
// 任务
await checkTask(roleId, sid, TASK_TYPE.BATTLE_EVENT, 1, true, { eventType: dicEvent.eventType })
return resResult(STATUS.SUCCESS, {
isSuccess,
eventCode: result.eventCode,
@@ -7,13 +7,14 @@ import { ExpeditionPointModel } from '../../../db/ExpeditionPoint';
import { RoleModel } from '../../../db/Role';
import { calculateSumCE, genCode } from '../../../pubUtils/util';
import { getPointRewardStatus, getResetRemainCnt, findOrCreateEnemies } from '../../../services/expeditionService';
import { EXPEDITION_CONST, EXPEDITION_WAR_RECORD_STATUS, LINEUP_NUM } from '../../../consts';
import { EXPEDITION_CONST, EXPEDITION_WAR_RECORD_STATUS, LINEUP_NUM, TASK_TYPE } from '../../../consts';
import { WarReward } from '../../../services/warRewardService';
import { handleFixedReward } from '../../../services/rewardService';
import { getAp, setAp } from '../../../services/actionPointService';
import { STATUS } from '../../../consts/statusCode';
import { resResult } from '../../../pubUtils/util';
import { checkBattleHeroes, roleLevelup } from '../../../services/normalBattleService';
import { checkTaskWithWar } from '../../../services/taskService';
export default function(app: Application) {
return new ExpeditionBattleHandler(app);
@@ -146,7 +147,7 @@ export class ExpeditionBattleHandler {
* 记录我军数据,生成战斗唯一表示,记录状态
*/
async checkBattle(msg: { expeditionCode: string, expeditionId: number, battleId: number, heroes: Array<number> }, session: BackendSession) {
const { expeditionCode, expeditionId, battleId, heroes } = msg;
const { expeditionCode, expeditionId, battleId, heroes: seqIds } = msg;
let roleId = session.get('roleId');
let roleName = session.get('roleName');
let warInfo = getWarById(battleId);
@@ -167,8 +168,8 @@ export class ExpeditionBattleHandler {
if(!preBattle) return resResult(STATUS.BATTLE_NEED_PREVIOUS_GK);
}
let checkHeroes = await checkBattleHeroes(roleId, heroes);
if(!checkHeroes) return resResult(STATUS.BATTLE_HERO_NOT_FOUND);
let { isOK, heroes } = await checkBattleHeroes(roleId, seqIds);
if(!isOK) return resResult(STATUS.BATTLE_HERO_NOT_FOUND);
let expeditionWarRecord = await ExpeditionWarRecordModel.getRecordByCodeAndId(expeditionCode, expeditionId);
if(!expeditionWarRecord ) {
@@ -185,7 +186,7 @@ export class ExpeditionBattleHandler {
status: 0,
warName: warInfo.gk_name,
warType: warInfo.warType,
record: { heroes }
record: { heroes, seqIds }
}
}, true);
@@ -226,9 +227,9 @@ export class ExpeditionBattleHandler {
}
let flag = 1; // 对比hero信息
let { record: { heroes: dbHeroes } } = BattleRecord;
let { record: { heroes: dbHeroes, seqIds: dbSeqIds } } = BattleRecord;
for(let {dataId} of heroes) {
if(dbHeroes.indexOf(dataId) == -1) flag = 0;
if(dbSeqIds.indexOf(dataId) == -1) flag = 0;
}
if(!flag) {
return resResult(STATUS.BATTLE_INFO_VALIDATE_ERR);
@@ -268,6 +269,7 @@ export class ExpeditionBattleHandler {
// 更新下一关状态
await ExpeditionWarRecordModel.updateStatus(expeditionCode, expeditionId + 1, EXPEDITION_WAR_RECORD_STATUS.WAITING);
}
await checkTaskWithWar(roleId, sid, TASK_TYPE.BATTLE_WITH_HERO, battleId, dbHeroes, 1, star);
return resResult(STATUS.SUCCESS, {
expeditionCode, expeditionId,
@@ -3,7 +3,7 @@ import { BattleRecordModel } from '../../../db/BattleRecord';
import { BattleSweepRecordModel } from '../../../db/BattleSweepRecord';
import { getWarById, } from '../../../pubUtils/gamedata';
import { genCode } from '../../../pubUtils/util';
import { WAR_TYPE, EVENT_STATUS, FUNC_OPT_TYPE, MSG_SOURCE, REDIS_KEY } from '../../../consts';
import { WAR_TYPE, EVENT_STATUS, FUNC_OPT_TYPE, MSG_SOURCE, REDIS_KEY, TASK_TYPE } from '../../../consts';
import { checkDaily, checkDailyAndIncrease } from '../../../services/dailyBattleService';
import { checkTowerWar, towerBattleEnd } from '../../../services/battleService';
import { WarReward } from '../../../services/warRewardService';
@@ -20,6 +20,7 @@ import { gameData } from '../../../pubUtils/data';
import { pushMysteryFirstMsg, pushTowerMsg, pushVestigeFirstMsg } from '../../../services/chatService';
import { nowSeconds } from '../../../pubUtils/timeUtil';
import { Rank } from '../../../services/rankService';
import { checkTaskWithWar, checkTaskInBattleEnd } from '../../../services/taskService';
export default function(app: Application) {
return new NormalBattleHandler(app);
@@ -31,7 +32,7 @@ export class NormalBattleHandler {
// 获取关卡列表
async checkBattle(msg: {battleId: number, heroes: Array<number> }, session: BackendSession) {
const { battleId, heroes } = msg;
const { battleId, heroes: seqIds } = msg;
let roleId = session.get('roleId');
let roleName = session.get('roleName');
let warInfo = getWarById(battleId);
@@ -56,8 +57,8 @@ export class NormalBattleHandler {
if(preBattle == -1) return resResult(STATUS.BATTLE_NEED_PREVIOUS_GK);
}
let checkHeroes = await checkBattleHeroes(roleId, heroes);
if(!checkHeroes) return resResult(STATUS.BATTLE_HERO_NOT_FOUND);
let { isOK, heroes } = await checkBattleHeroes(roleId, seqIds);
if(!isOK) return resResult(STATUS.BATTLE_HERO_NOT_FOUND);
const battleCode = genCode(8); // 关卡唯一值
let dailyNum = {};
@@ -96,7 +97,7 @@ export class NormalBattleHandler {
status: 0,
warName: warInfo.gk_name,
warType: warInfo.warType,
record: { heroes }
record: { heroes, seqIds }
}
}, true);
@@ -175,9 +176,9 @@ export class NormalBattleHandler {
}
let flag = 1; // 对比hero信息
let { record: { heroes: dbHeroes } } = BattleRecord;
for(let hid of heroes) {
if(dbHeroes.indexOf(hid) == -1) flag = 0;
let { record: { heroes: dbHeroes, seqIds: dbSeqIds } } = BattleRecord;
for(let seqId of dbSeqIds) {
if(dbSeqIds.indexOf(seqId) == -1) flag = 0;
}
if(!flag) {
return resResult(STATUS.BATTLE_INFO_VALIDATE_ERR);
@@ -268,6 +269,7 @@ export class NormalBattleHandler {
let actordata = await roleLevelup(roleId, isSuccess?warInfo.kingExp:0, session);// 主公升级经验
await checkTaskInBattleEnd(roleId, sid, battleId, dbHeroes, star);
// 返回值:
// towerStatus: false-本层未通过, true-本层已通过
return resResult(STATUS.SUCCESS, {
@@ -339,6 +341,9 @@ export class NormalBattleHandler {
$inc: { count }
});
// 任务
await checkTaskWithWar(roleId, sid, TASK_TYPE.BATTLE_MAIN_SWEEP, warInfo, [], count, 0);
return resResult(STATUS.SUCCESS, {
battleId, count,
battleGoods: result,
@@ -10,7 +10,7 @@ import { getTaskById, getTowerDataByLv } from '../../../pubUtils/gamedata';
import { decodeArrayStr, resResult, shouldRefresh, calculateNum, getRefTime, genCode } from '../../../pubUtils/util';
import { calcuHangUpReward, checkTaskConditions, checkHangUpSpdUpCnt, createCurTasks, treatTask, getRemainTime, getTasksReward, getTaskStatus, getDoingOrWaitingTasks } from '../../../services/battleService';
import { handleFixedReward, addItems, handleCost } from '../../../services/rewardService';
import { checkBattleHeroes } from '../../../services/normalBattleService';
import { checkBattleHeroesByHid } from '../../../services/normalBattleService';
import { getGoldObject } from '../../../pubUtils/itemUtils';
import { Rank } from '../../../services/rankService';
@@ -241,7 +241,7 @@ export class TowerBattleHandler {
if (task.heroes.length !== taskInfo.actorNeeded) { // 武将数,从策划表中读取
return resResult(STATUS.TOWER_TASK_MAX_HERO);
}
let hasHero = await checkBattleHeroes(roleId, task.heroes);
let hasHero = await checkBattleHeroesByHid(roleId, task.heroes);
if(!hasHero) return resResult(STATUS.BATTLE_HERO_NOT_FOUND);
if (tasksCode.indexOf(task.taskCode) === -1) {
return resResult(STATUS.TOWER_TASK_CODE_NOT_FOUND);