fix 联调时遇到的问题
This commit is contained in:
@@ -2,9 +2,9 @@ import { Application, BackendSession } from 'pinus';
|
||||
import { DailyRecordModel } from '../../../db/DailyRecord';
|
||||
import { BattleRecordModel } from '../../../db/BattleRecord';
|
||||
import { getGamedata } from '../../../pubUtils/gamedata';
|
||||
import { WAR_TYPE, GONGSHI } from '../../../consts/consts';
|
||||
import { WAR_TYPE, GOLD_COST_RATIO } from '../../../consts/consts';
|
||||
import { STATUS } from '../../../consts/statusCode';
|
||||
import { resResult } from '../../../pubUtils/util';
|
||||
import { resResult, calculateNum } from '../../../pubUtils/util';
|
||||
import { RoleModel } from '../../../db/Role';
|
||||
import { getDailyNum } from '../../../services/dailyBattleService';
|
||||
|
||||
@@ -53,8 +53,7 @@ export class DailyBattleHandler {
|
||||
});
|
||||
}
|
||||
}
|
||||
let checkDailyResult = getDailyNum(refreshResult, timesPerDay, timesCanBuy);
|
||||
|
||||
let checkDailyResult = await getDailyNum(refreshResult, timesPerDay, timesCanBuy);
|
||||
result.push({
|
||||
type, name, ...checkDailyResult,
|
||||
wars
|
||||
@@ -84,7 +83,7 @@ export class DailyBattleHandler {
|
||||
let buyCost = 0;
|
||||
for(let i = 1; i <= count; i++) {
|
||||
let num = buyCount + i;
|
||||
buyCost += eval(GONGSHI.DAILY_REFRESH_NUM_COST);
|
||||
buyCost += calculateNum(GOLD_COST_RATIO.DAILY_REF_NUM, {num}, 50);
|
||||
}
|
||||
let {gold} = await RoleModel.findByRoleId(roleId);
|
||||
if(buyCost > gold) {
|
||||
@@ -94,7 +93,7 @@ export class DailyBattleHandler {
|
||||
let newDailyRecord = await DailyRecordModel.increseBuyCount(roleId, type, count);
|
||||
|
||||
console.log(buyCost);
|
||||
let checkDailyResult = getDailyNum(newDailyRecord, timesPerDay, timesCanBuy);
|
||||
let checkDailyResult = await getDailyNum(newDailyRecord, timesPerDay, timesCanBuy);
|
||||
return resResult(STATUS.SUCCESS, { type, ...checkDailyResult, buyCost});
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,14 @@
|
||||
import { STATUS } from './../../../consts/statusCode';
|
||||
import { TOWER_TASK_CONST, HANG_UP_CONSTS, GONGSHI } from './../../../consts/consts';
|
||||
import { HANG_UP_CONSTS, GOLD_COST_RATIO, TOWER_TASK_CONST } from './../../../consts/consts';
|
||||
import { TowerTaskRecModel } from './../../../db/TowerTaskRec';
|
||||
import { HangUpSpdUpRecModel } from './../../../db/HangUpSpdUpRec';
|
||||
import { HangUpRecordModel } from './../../../db/HangUpRecord';
|
||||
import { RoleModel } from './../../../db/Role';
|
||||
import { TowerRecordModel } from './../../../db/TowerRecord';
|
||||
import { Application, BackendSession } from 'pinus';
|
||||
import { getTaskById, getTaskIdByFloor, getTowerDataByLv } from '../../../pubUtils/gamedata';
|
||||
import { decodeArrayStr, decodeIdCntArrayStr, getRandEelm, resResult, shouldRefresh, getRandomWithWeight } from '../../../pubUtils/util';
|
||||
import { calcuHangUpReward, checkTaskConditions, checkHangUpSpdUpCnt } from '../../../services/battleService';
|
||||
import { getTaskById, getTowerDataByLv } from '../../../pubUtils/gamedata';
|
||||
import { decodeArrayStr, resResult, shouldRefresh, calculateNum } from '../../../pubUtils/util';
|
||||
import { calcuHangUpReward, checkTaskConditions, checkHangUpSpdUpCnt, createCurTasks, treatTask, getRemainTime } from '../../../services/battleService';
|
||||
import { handleFixedReward, handleReward } from '../../../services/rewardService';
|
||||
|
||||
export default function(app: Application) {
|
||||
@@ -68,18 +68,27 @@ export class TowerBattleHandler {
|
||||
|
||||
async checkHangUpRewards(msg: {}, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
const { timeReward, startTime, deltaTime } = await calcuHangUpReward(roleId);
|
||||
const result = await calcuHangUpReward(roleId);
|
||||
if(result.status == -1) {
|
||||
return result.resResult
|
||||
}
|
||||
let {timeReward, startTime, deltaTime} = result.data;
|
||||
return resResult(STATUS.SUCCESS, {startTime, hangUpPassTime: deltaTime, rewards: timeReward.map(cur => {return {id: cur.gid, count: cur.count}})});
|
||||
}
|
||||
|
||||
async recHangUpRewards(msg: {}, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
let roleName = session.get('roleName');
|
||||
const { timeReward, endLv, endTime, deltaTime, needReceiveGoods } = await calcuHangUpReward(roleId);
|
||||
const result = await calcuHangUpReward(roleId);
|
||||
if(result.status == -1) {
|
||||
return result.resResult
|
||||
}
|
||||
let { timeReward, endLv, endTime, deltaTime, needReceiveGoods } = result.data;
|
||||
|
||||
const goods = await handleReward(roleId, roleName, timeReward);
|
||||
await HangUpRecordModel.updateRec(roleId, roleName, endLv, endTime, needReceiveGoods);
|
||||
return resResult(STATUS.SUCCESS, { endTime, hangUpPassTime: deltaTime, ...goods });
|
||||
|
||||
return resResult(STATUS.SUCCESS, { endTime, hangUpPassTime: deltaTime%HANG_UP_CONSTS.MAX_TIME, ...goods });
|
||||
}
|
||||
|
||||
async hangUpSpeedUp(msg: {speedUpCnt: number}, session: BackendSession) {
|
||||
@@ -89,7 +98,11 @@ export class TowerBattleHandler {
|
||||
return resResult(STATUS.WRONG_PARMS);
|
||||
}
|
||||
const curTime = new Date();
|
||||
const { timeReward, endLv, deltaTime, needReceiveGoods } = await calcuHangUpReward(roleId, true, msg.speedUpCnt, curTime);
|
||||
const calResult = await calcuHangUpReward(roleId, true, msg.speedUpCnt, curTime);
|
||||
if(calResult.status == -1) {
|
||||
return calResult.resResult;
|
||||
}
|
||||
let { timeReward, endLv, deltaTime, needReceiveGoods } = calResult.data;
|
||||
|
||||
let result = await checkHangUpSpdUpCnt(roleId, msg.speedUpCnt, curTime);
|
||||
if(result.status == -1) return result.resResult;
|
||||
@@ -117,11 +130,7 @@ export class TowerBattleHandler {
|
||||
for(let i = 1; i <= count; i++) {
|
||||
let num = HANG_UP_CONSTS.MAX_SPD_UP_CNT - originCnt + i;
|
||||
if(num < 0) num = i;
|
||||
try {
|
||||
gold += parseInt(eval(GONGSHI.TOWER_HANG_UP_SPEED_COST));
|
||||
} catch(e) {
|
||||
gold += 0;
|
||||
}
|
||||
gold += calculateNum(GOLD_COST_RATIO.TOWER_HANG_SPDUP, {num}, 50);
|
||||
}
|
||||
return gold
|
||||
}
|
||||
@@ -129,33 +138,54 @@ export class TowerBattleHandler {
|
||||
async getTasks(msg: {}, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
let roleName = session.get('roleName');
|
||||
let { towerLv } = await RoleModel.findByRoleId(roleId);
|
||||
let curTime = new Date();
|
||||
let { towerLv, towerTaskReCnt = 0, towerTaskRefTime = curTime } = await RoleModel.findByRoleId(roleId);
|
||||
let needRefresh = shouldRefresh(towerTaskRefTime, curTime, TOWER_TASK_CONST.REFRESH_TIME);
|
||||
if(needRefresh) {
|
||||
towerTaskReCnt = 0;
|
||||
}
|
||||
let costGold = calculateNum(GOLD_COST_RATIO.TPWER_TASK_REF, {num: towerTaskReCnt}, 200);
|
||||
let curTasks = await TowerTaskRecModel.getCurTasks(roleId);
|
||||
if (!curTasks || curTasks.length == 0) {
|
||||
let taskIds = [];
|
||||
const taskList = getTaskIdByFloor(towerLv)||[];
|
||||
const randomList = taskList.map(taskId => getTaskById(taskId));
|
||||
for(let i = 0; i < TOWER_TASK_CONST.RAND_CNT; i++) {
|
||||
let list = randomList.filter(taskId => !taskIds.includes(taskId));
|
||||
console.log(taskIds, JSON.stringify(list));
|
||||
let {dic: tmp} = getRandomWithWeight(list);
|
||||
if(tmp) {
|
||||
taskIds.push(tmp.taskId);
|
||||
}
|
||||
}
|
||||
|
||||
curTasks = await TowerTaskRecModel.createTasks(roleId, roleName, taskIds);
|
||||
curTasks = await createCurTasks(towerLv, roleId, roleName);
|
||||
}
|
||||
return resResult(STATUS.SUCCESS, { curTasks });
|
||||
let refRemainTime = getRemainTime(curTime);
|
||||
|
||||
return resResult(STATUS.SUCCESS, { curTasks: treatTask(curTasks, curTime), refRemainTime, nextCostGold: costGold });
|
||||
}
|
||||
|
||||
async refreshTasks(msg: {}, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
let roleName = session.get('roleName');
|
||||
let curTime = new Date();
|
||||
let { towerLv, towerTaskReCnt = 0, towerTaskRefTime = curTime } = await RoleModel.findByRoleId(roleId);
|
||||
let needRefresh = shouldRefresh(towerTaskRefTime, curTime, TOWER_TASK_CONST.REFRESH_TIME);
|
||||
if(needRefresh) {
|
||||
towerTaskReCnt = 0;
|
||||
}
|
||||
let costGold = calculateNum(GOLD_COST_RATIO.TPWER_TASK_REF, {num: towerTaskReCnt}, 200);
|
||||
let {gold} = await RoleModel.findByRoleId(roleId);
|
||||
if(costGold > gold) {
|
||||
return resResult(STATUS.TOWER_GOLD_NOT_ENOUGH);
|
||||
}
|
||||
await RoleModel.increaseTowerRefCnt(roleId, needRefresh, curTime);
|
||||
|
||||
await TowerTaskRecModel.refreshTask(roleId); // 刷掉旧的任务
|
||||
let curTasks = await createCurTasks(towerLv, roleId, roleName); // 刷出新的任务
|
||||
|
||||
let nextCostGold = calculateNum(GOLD_COST_RATIO.TPWER_TASK_REF, {num: towerTaskReCnt + 1}, 200);
|
||||
return resResult(STATUS.SUCCESS, { curTasks: treatTask(curTasks, curTime), costGold, nextCostGold});
|
||||
}
|
||||
|
||||
async sendTaskHero(msg: {batchCode: string, tasks: Array<{taskCode: string, heroes: Array<number>}>}, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
|
||||
const curTime = new Date();
|
||||
const curTasks = await TowerTaskRecModel.getCurTasks(roleId); // 当前一批的任务
|
||||
if (!curTasks || curTasks.length == 0) {
|
||||
return resResult(STATUS.TOWER_TASK_NOT_FOUND);
|
||||
}
|
||||
let usedHeroes = [];
|
||||
let usedHeroes = [], tasks = [];
|
||||
const tasksCode = [];
|
||||
const taskMap = new Map<string, any>()
|
||||
curTasks.forEach(task => {
|
||||
@@ -165,6 +195,9 @@ export class TowerBattleHandler {
|
||||
});
|
||||
for (let task of msg.tasks) {
|
||||
let curTask = taskMap.get(task.taskCode); // 数据库中,这个任务的数据
|
||||
if(!curTask) {
|
||||
return resResult(STATUS.TOWER_TASK_MISSING)
|
||||
}
|
||||
let taskInfo = getTaskById(curTask.taskId);
|
||||
if (task.heroes.length > taskInfo.actorNeeded) { // 武将数,从策划表中读取
|
||||
return resResult(STATUS.TOWER_TASK_MAX_HERO);
|
||||
@@ -178,14 +211,14 @@ export class TowerBattleHandler {
|
||||
return resResult(STATUS.TOWER_TASK_HERO_HAS_USED);
|
||||
}
|
||||
}
|
||||
tasks.push({...task, completeTime: taskInfo.completeTime})
|
||||
|
||||
}
|
||||
const curTime = new Date();
|
||||
const recs = await TowerTaskRecModel.sendHeroes(roleId, msg.batchCode, msg.tasks, curTime);
|
||||
const recs = await TowerTaskRecModel.sendHeroes(roleId, msg.batchCode, tasks, curTime,);
|
||||
if (!recs || recs.length === 0) {
|
||||
return resResult(STATUS.TOWER_TASK_SEND_ERR);
|
||||
}
|
||||
return resResult(STATUS.SUCCESS, { tasks: recs });
|
||||
return resResult(STATUS.SUCCESS, { tasks: treatTask(recs, curTime) });
|
||||
}
|
||||
|
||||
async settleTask(msg: {batchCode: string, taskCode: string}, session: BackendSession) {
|
||||
@@ -219,7 +252,7 @@ export class TowerBattleHandler {
|
||||
}
|
||||
}
|
||||
}
|
||||
await TowerTaskRecModel.finishTask(msg.batchCode, compTasks);
|
||||
return resResult(STATUS.SUCCESS, { compTasks, goods });
|
||||
const rec = await TowerTaskRecModel.finishTask(msg.batchCode, compTasks);
|
||||
return resResult(STATUS.SUCCESS, { compTasks: treatTask(rec, curTime), goods });
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user