fix 联调时遇到的问题

This commit is contained in:
luying
2020-11-05 19:33:39 +08:00
parent ff6b8bcdca
commit bd93d9dc1c
12 changed files with 598 additions and 119 deletions

View File

@@ -1,5 +1,7 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop } from '@typegoose/typegoose';
import { getRefTime } from '../pubUtils/util';
import { TOWER_TASK_CONST } from '../consts/consts';
function genCodeTmp(len) {
const chars = '123456789ABCDEFGHJKLMNPQRSTWXYZabcdefghijklmnopqrstuvwxyz';
@@ -11,13 +13,7 @@ function genCodeTmp(len) {
return code;
}
function getRefTime(curTime = new Date()) {
if (curTime.getHours() < 5) {
curTime.setDate(curTime.getDate() - 1);
}
curTime.setHours(5, 0, 0, 0);
return curTime;
}
/**
* 天梯派遣记录表
@@ -34,6 +30,8 @@ export default class TowerTaskRec extends BaseModel {
batchCode: string; // 本批派遣任务唯一标识
@prop({ required: true, default: 0})
status: number; // 派遣任务当前状态0-可派遣1-已派遣2-已完成3-已领取
@prop({ required: true, default: 1})
refreshStatus: number; // 派遣任务是否显示 0-不显示,被刷新掉了 1-显示
@prop({ required: true, type: Number, default: [] })
heroes: Array<number>; // 此批派遣使用的全部武将
@@ -43,10 +41,13 @@ export default class TowerTaskRec extends BaseModel {
taskCode: string; // 服务器生成的任务唯一编号
@prop({ required: false })
sendTime: Date; // 派遣时间
@prop({ required: false })
completeTime: Date; // 派遣结束时间
public static async getCurTasks(roleId: string, lean = true) {
const refTime = getRefTime();
const recs = await TowerTaskRecModel.find({roleId, createdAt: {$gte: refTime}}).lean(lean);
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);
return recs;
}
@@ -67,13 +68,14 @@ export default class TowerTaskRec extends BaseModel {
return recs;
}
public static async sendHeroes(_roleId: string, batchCode: string, tasks: Array<{taskCode:string, heroes: Array<number>}>, sendTime: Date, lean = true) {
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();
const refTime = getRefTime();
for (let task of tasks) {
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: task.taskCode, createdAt: {$gte: refTime}},
{heroes: task.heroes, status: 1, sendTime},
{batchCode, taskCode: taskCode, createdAt: {$gte: refTime}},
{heroes: heroes, status: 1, sendTime, completeTime: new Date(sendTime.getTime() + completeTime * 1000)},
{new: true}).lean(lean);
recs.push(rec);
@@ -95,6 +97,15 @@ export default class TowerTaskRec extends BaseModel {
return recs;
}
// 刷掉旧任务
public static async refreshTask(roleId: string, lean = true) {
let curTime = new Date();
const refTime = getRefTime(curTime, TOWER_TASK_CONST.REFRESH_TIME);
console.log(refTime)
const recs = await TowerTaskRecModel.updateMany({roleId, createdAt: {$gte: refTime}, refreshStatus: 1}, {refreshStatus: 0}, {new: true}).lean(lean);
return recs;
}
public static async deleteAccount(roleId: string, lean = true) {
let result = await TowerTaskRecModel.deleteMany({roleId}).lean(lean);
return result||{};