镇念塔:修复补发派遣任务奖励问题
This commit is contained in:
@@ -122,13 +122,16 @@ export async function getTasks(roleId: string) {
|
|||||||
if(needRefresh) {
|
if(needRefresh) {
|
||||||
role = await RoleModel.resetTowerCnt(roleId, curTime);
|
role = await RoleModel.resetTowerCnt(roleId, curTime);
|
||||||
const batchCode = genCode(8);
|
const batchCode = genCode(8);
|
||||||
let preTasks = await TowerTaskRecModel.getPreTasks(roleId);
|
let tasksData = await TowerTaskRecModel.getPreTasks(roleId);
|
||||||
if(preTasks && preTasks.length) {
|
let preTasksMap = treatPreTasks(tasksData);
|
||||||
let checkResult = checkTaskRewards(preTasks[0].batchCode, preTasks );
|
for(let [batchCode, preTasks] of preTasksMap) {
|
||||||
if(checkResult) {
|
if(preTasks && preTasks.length) {
|
||||||
await sendMailByContent(MAIL_TYPE.TOWER_TASK_REWARD, roleId, { goods: checkResult.rewards });
|
let checkResult = checkTaskRewards(batchCode, preTasks );
|
||||||
await TowerTaskRecModel.finishTask(preTasks[0].batchCode, preTasks.map(cur => cur.taskCode));
|
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, []); // 新建任务
|
curTasks = await refreshTasks(towerLv, batchCode, roleId, roleName, []); // 新建任务
|
||||||
@@ -146,13 +149,23 @@ export async function getTasks(roleId: string) {
|
|||||||
return {curTasks: treatTask(curTasks, curTime), refRemainTime, nextCostGold}
|
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[]) {
|
export function checkTaskRewards(batchCode: string, tasks: TowerTaskRecType[]) {
|
||||||
const curTime = new Date();
|
const curTime = new Date();
|
||||||
let compTasks: string[] = [];
|
let compTasks: string[] = [];
|
||||||
let rewards: RewardInter[] = [];
|
let rewards: RewardInter[] = [];
|
||||||
for (let task of tasks) {
|
for (let task of tasks) {
|
||||||
if(task.batchCode != batchCode) return false;
|
if ( task.batchCode == batchCode && task.status === TOWER_TASK_STATUS.DOINING) {
|
||||||
if ( task.status === TOWER_TASK_STATUS.DOINING) {
|
|
||||||
let {completeTime, reward, termsForAdd, additionalReward} = gameData.towerTask.get(task.taskId);
|
let {completeTime, reward, termsForAdd, additionalReward} = gameData.towerTask.get(task.taskId);
|
||||||
if (task.sendTime && task.sendTime.getTime() + completeTime * 1000 < curTime.getTime()) {
|
if (task.sendTime && task.sendTime.getTime() + completeTime * 1000 < curTime.getTime()) {
|
||||||
compTasks.push(task.taskCode);
|
compTasks.push(task.taskCode);
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ export class TaskHero {
|
|||||||
*/
|
*/
|
||||||
@index({ roleId: 1, status: 1 })
|
@index({ roleId: 1, status: 1 })
|
||||||
@index({ batchCode: 1 })
|
@index({ batchCode: 1 })
|
||||||
|
@index({ createdAt: -1 })
|
||||||
export default class TowerTaskRec extends BaseModel {
|
export default class TowerTaskRec extends BaseModel {
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
roleId: string; // 角色 id
|
roleId: string; // 角色 id
|
||||||
@@ -71,7 +72,7 @@ export default class TowerTaskRec extends BaseModel {
|
|||||||
|
|
||||||
public static async getPreTasks(roleId: string) {
|
public static async getPreTasks(roleId: string) {
|
||||||
let today = getZeroPointD();
|
let today = getZeroPointD();
|
||||||
const recs: TowerTaskRecType[] = await TowerTaskRecModel.find({ roleId, createdAt: { $lt: today }, status: TOWER_TASK_STATUS.DOINING }).sort({ position: 1}).lean();
|
const recs: TowerTaskRecType[] = await TowerTaskRecModel.find({ roleId, createdAt: { $lt: today }, status: TOWER_TASK_STATUS.DOINING }).sort({ createdAt: -1, position: 1}).lean();
|
||||||
return recs;
|
return recs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user