增加任务执行后的通知
This commit is contained in:
parent
1a48086d5c
commit
7d3d28d2c6
@ -3,6 +3,7 @@ import { BlockChain } from 'chain/BlockChain'
|
|||||||
import { MAX_BATCH_REQ_COUNT, ZERO_BYTES32 } from 'common/Constants'
|
import { MAX_BATCH_REQ_COUNT, ZERO_BYTES32 } from 'common/Constants'
|
||||||
import { dbconn } from 'decorators/dbconn'
|
import { dbconn } from 'decorators/dbconn'
|
||||||
import { MailQueue } from 'queue/mail.queue'
|
import { MailQueue } from 'queue/mail.queue'
|
||||||
|
import { TaskSvr } from 'service/task.service'
|
||||||
import { generateRandomBytes32 } from 'utils/wallet.util'
|
import { generateRandomBytes32 } from 'utils/wallet.util'
|
||||||
|
|
||||||
import { BaseModule } from './Base'
|
import { BaseModule } from './Base'
|
||||||
@ -66,6 +67,9 @@ export class ChainTaskClass extends BaseModule {
|
|||||||
@prop({ type: String, required: true, default: [] })
|
@prop({ type: String, required: true, default: [] })
|
||||||
public tasks!: Array<string>
|
public tasks!: Array<string>
|
||||||
|
|
||||||
|
@prop({ type: mongoose.Schema.Types.Mixed })
|
||||||
|
public notify: any
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检查是否所有的任务都已完成(成功或重试次数达到上限)
|
* 检查是否所有的任务都已完成(成功或重试次数达到上限)
|
||||||
* 调用时机
|
* 调用时机
|
||||||
@ -103,11 +107,16 @@ export class ChainTaskClass extends BaseModule {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (record.allEnd) {
|
if (record.allEnd) {
|
||||||
setImmediate(async function () {
|
record.endTime = Date.now()
|
||||||
// TODO:: 通知前端
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
await record.save()
|
await record.save()
|
||||||
|
if (record.allEnd) {
|
||||||
|
setImmediate(async function () {
|
||||||
|
let result = new TaskSvr().sendResultNotify(record)
|
||||||
|
record.notify = result
|
||||||
|
await record.save()
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async checkScheduleStatus(chainTaskId: string) {
|
public static async checkScheduleStatus(chainTaskId: string) {
|
||||||
|
@ -55,6 +55,7 @@ export class ScheduleConfirmEventClass extends BaseModule {
|
|||||||
await new TaskSvr().parseOneSchedule(id)
|
await new TaskSvr().parseOneSchedule(id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return record
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,10 +44,13 @@ export class ScheduleExecutedEventClass extends BaseModule {
|
|||||||
$inc: { version: 1 },
|
$inc: { version: 1 },
|
||||||
}
|
}
|
||||||
|
|
||||||
return ScheduleExecutedEvent.insertOrUpdate(
|
let record = await ScheduleExecutedEvent.insertOrUpdate(
|
||||||
{ transactionHash: event.transactionHash, scheduleId: event.returnValues.id },
|
{ transactionHash: event.transactionHash, scheduleId: event.returnValues.id },
|
||||||
data,
|
data,
|
||||||
)
|
)
|
||||||
|
if (record.version === 1) {
|
||||||
|
}
|
||||||
|
return record
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ import { EventSyncSvr } from 'service/event.sync.service'
|
|||||||
import { NftTransferEvent } from 'models/NftTransferEvent'
|
import { NftTransferEvent } from 'models/NftTransferEvent'
|
||||||
import { FtTransferEvent } from 'models/FtTransferEvent'
|
import { FtTransferEvent } from 'models/FtTransferEvent'
|
||||||
import { ScheduleConfirmEvent } from 'models/ScheduleConfirmEvent'
|
import { ScheduleConfirmEvent } from 'models/ScheduleConfirmEvent'
|
||||||
|
import { ScheduleExecutedEvent } from 'models/ScheduleExecutedEvent'
|
||||||
|
|
||||||
import 'common/Extend'
|
import 'common/Extend'
|
||||||
|
|
||||||
@ -17,6 +18,7 @@ let eventProcessers = {
|
|||||||
NftTransferEvent: NftTransferEvent,
|
NftTransferEvent: NftTransferEvent,
|
||||||
FtTransferEvent: FtTransferEvent,
|
FtTransferEvent: FtTransferEvent,
|
||||||
ScheduleConfirmEvent: ScheduleConfirmEvent,
|
ScheduleConfirmEvent: ScheduleConfirmEvent,
|
||||||
|
ScheduleExecutedEvent: ScheduleExecutedEvent,
|
||||||
}
|
}
|
||||||
|
|
||||||
const events = require('config/events.json')
|
const events = require('config/events.json')
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { BlockChain } from 'chain/BlockChain'
|
import { BlockChain } from 'chain/BlockChain'
|
||||||
import { singleton } from 'decorators/singleton'
|
import { singleton } from 'decorators/singleton'
|
||||||
import logger from 'logger/logger'
|
import logger from 'logger/logger'
|
||||||
import { ChainTask } from 'models/ChainTask'
|
import { ChainTask, ChainTaskClass } from 'models/ChainTask'
|
||||||
|
import { DocumentType } from '@typegoose/typegoose'
|
||||||
import { ReqTaskStatus, RequestTask } from 'models/RequestTask'
|
import { ReqTaskStatus, RequestTask } from 'models/RequestTask'
|
||||||
import { ChainQueue } from 'queue/chain.queue'
|
import { ChainQueue } from 'queue/chain.queue'
|
||||||
import { ExecQueue } from 'queue/exec.queue'
|
import { ExecQueue } from 'queue/exec.queue'
|
||||||
@ -32,4 +33,15 @@ export class TaskSvr {
|
|||||||
await record.save()
|
await record.save()
|
||||||
new ExecQueue().addTaskToQueue(record)
|
new ExecQueue().addTaskToQueue(record)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async sendResultNotify(task: DocumentType<ChainTaskClass>) {
|
||||||
|
let userid = task.starter
|
||||||
|
let timeStr = new Date(task.endTime).format('yyyy-MM-dd HH:mm:ss')
|
||||||
|
return new WechatWorkService().beginApproval({
|
||||||
|
userid,
|
||||||
|
title: `${task.starterName}-${task.name}`,
|
||||||
|
desc: task.desc,
|
||||||
|
info: timeStr,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user