天梯派遣刷新逻辑

This commit is contained in:
luying
2020-11-11 17:09:54 +08:00
parent 7fa9fe99ee
commit 76e8157ad3
7 changed files with 126 additions and 89 deletions

View File

@@ -31,7 +31,7 @@ export default class TowerTaskRec extends BaseModel {
@prop({ required: true, default: 0})
status: number; // 派遣任务当前状态0-可派遣1-已派遣2-已完成3-已领取
@prop({ required: true, default: 1})
refreshStatus: number; // 派遣任务是否显示 0-不显示,被刷新掉了 1-显示
refreshStatus: number; // 派遣任务是否显示 -1-刷掉 0-隐藏 1-显示
@prop({ required: true, type: Number, default: [] })
heroes: Array<number>; // 此批派遣使用的全部武将
@@ -45,18 +45,15 @@ export default class TowerTaskRec extends BaseModel {
completeTime: Date; // 派遣结束时间
public static async getCurTasks(roleId: string, lean = true) {
let curTime = new Date();
const refTime = getRefTime(curTime, TOWER_TASK_CONST.REFRESH_TIME);
const recs = await TowerTaskRecModel.find({roleId, createdAt: {$gte: refTime}, refreshStatus: 1}).sort({createdAt: 1}).lean(lean);
const recs = await TowerTaskRecModel.find({roleId, refreshStatus: 1}).sort({createdAt: 1}).lean(lean);
return recs;
}
public static async createTasks(roleId: string, roleName: string, taskIds: Array<number>/*, lean = true*/) {
const batchCode = genCodeTmp(8);
public static async createTasks(roleId: string, roleName: string, batchCode: string, taskIds: Array<number>, refreshStatus: number) {
const tasksData = taskIds.map(id => {
const taskModel = new TowerTaskRecModel();
const taskCode = genCodeTmp(6);
const taskData = Object.assign(taskModel.toJSON(), {batchCode, taskId: id, taskCode, roleId, roleName});
const taskData = Object.assign(taskModel.toJSON(), {batchCode, taskId: id, taskCode, roleId, roleName, refreshStatus});
return taskData;
});
const recs = await TowerTaskRecModel.insertMany(tasksData, {ordered: false});
@@ -70,11 +67,9 @@ export default class TowerTaskRec extends BaseModel {
public static async sendHeroes(_roleId: string, batchCode: string, tasks: Array<{taskCode:string, heroes: Array<number>, completeTime: number}>, sendTime: Date, lean = true) {
let recs = new Array();
let curTime = new Date();
const refTime = getRefTime(curTime, TOWER_TASK_CONST.REFRESH_TIME);
for (let {taskCode, heroes, completeTime} of tasks) {
const rec = await TowerTaskRecModel.findOneAndUpdate(
{batchCode, taskCode: taskCode, createdAt: {$gte: refTime}},
{batchCode, taskCode: taskCode, refreshStatus: 1},
{heroes: heroes, status: 1, sendTime, completeTime: new Date(sendTime.getTime() + completeTime * 1000)},
{new: true}).lean(lean);
@@ -84,25 +79,24 @@ export default class TowerTaskRec extends BaseModel {
}
public static async finishTask(batchCode: string, tasks: Array<string>, lean = true) {
let recs = new Array();
// const refTime = getRefTime();
for (let task of tasks) {
const rec = await TowerTaskRecModel.findOneAndUpdate(
{batchCode, taskCode: task},
{status: 3},
{new: true}).lean(lean);
recs.push(rec);
}
const recs = await TowerTaskRecModel.updateMany({batchCode, taskCode: {$in:tasks}}, {status: 3, refreshStatus: -1}).lean(lean);
return recs;
}
// 刷掉旧任务
public static async refreshTask(roleId: string, lean = true) {
let curTime = new Date();
const refTime = getRefTime(curTime, TOWER_TASK_CONST.REFRESH_TIME);
// 将隐藏的任务显示出来 0=>1
public static async showTask(roleId: string, bactchCode: string, num: number, lean = true) {
const recs = await TowerTaskRecModel.updateMany({roleId, refreshStatus: 0}, {bactchCode, refreshStatus: 1}).sort({createdAt: 1}).limit(num).lean(lean);
return recs;
}
// 刷掉旧任务 1=>-1
public static async hideTask(roleId: string, taskIds: Array<string>, lean = true) {
// console.log(refTime)
const recs = await TowerTaskRecModel.updateMany({roleId, createdAt: {$gte: refTime}, refreshStatus: 1}, {refreshStatus: 0}, {new: true}).lean(lean);
const recs = await TowerTaskRecModel.updateMany({roleId, taskCode: {$in: taskIds}, refreshStatus: 1}, {refreshStatus: -1}).lean(lean);
return recs;
}
public static async updateBatchCode(roleId: string, taskIds: Array<string>, batchCode: string, lean = true) {
const recs = await TowerTaskRecModel.updateMany({roleId, taskCode: {$in: taskIds}}, {batchCode}).lean(lean);
return recs;
}