镇念塔:修复补发派遣任务奖励问题

This commit is contained in:
luying
2022-09-26 15:25:04 +08:00
parent ab86797e71
commit fe29577ebf
2 changed files with 24 additions and 10 deletions
+22 -9
View File
@@ -122,13 +122,16 @@ export async function getTasks(roleId: string) {
if(needRefresh) {
role = await RoleModel.resetTowerCnt(roleId, curTime);
const batchCode = genCode(8);
let preTasks = await TowerTaskRecModel.getPreTasks(roleId);
if(preTasks && preTasks.length) {
let checkResult = checkTaskRewards(preTasks[0].batchCode, preTasks );
if(checkResult) {
await sendMailByContent(MAIL_TYPE.TOWER_TASK_REWARD, roleId, { goods: checkResult.rewards });
await TowerTaskRecModel.finishTask(preTasks[0].batchCode, preTasks.map(cur => cur.taskCode));
};
let tasksData = await TowerTaskRecModel.getPreTasks(roleId);
let preTasksMap = treatPreTasks(tasksData);
for(let [batchCode, preTasks] of preTasksMap) {
if(preTasks && preTasks.length) {
let checkResult = checkTaskRewards(batchCode, preTasks );
if(checkResult) {
await sendMailByContent(MAIL_TYPE.TOWER_TASK_REWARD, roleId, { goods: checkResult.rewards });
await TowerTaskRecModel.finishTask(batchCode, preTasks.map(cur => cur.taskCode));
};
}
}
curTasks = await refreshTasks(towerLv, batchCode, roleId, roleName, []); // 新建任务
@@ -146,13 +149,23 @@ export async function getTasks(roleId: string) {
return {curTasks: treatTask(curTasks, curTime), refRemainTime, nextCostGold}
}
function treatPreTasks(tasks: TowerTaskRecType[]) {
let map = new Map<string, TowerTaskRecType[]>();
for(let task of tasks) {
if(!map.has(task.batchCode)) {
map.set(task.batchCode, []);
}
map.get(task.batchCode).push(task);
}
return map
}
export function checkTaskRewards(batchCode: string, tasks: TowerTaskRecType[]) {
const curTime = new Date();
let compTasks: string[] = [];
let rewards: RewardInter[] = [];
for (let task of tasks) {
if(task.batchCode != batchCode) return false;
if ( task.status === TOWER_TASK_STATUS.DOINING) {
if ( task.batchCode == batchCode && task.status === TOWER_TASK_STATUS.DOINING) {
let {completeTime, reward, termsForAdd, additionalReward} = gameData.towerTask.get(task.taskId);
if (task.sendTime && task.sendTime.getTime() + completeTime * 1000 < curTime.getTime()) {
compTasks.push(task.taskCode);