增加任务执行后的通知
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 { dbconn } from 'decorators/dbconn'
|
||||
import { MailQueue } from 'queue/mail.queue'
|
||||
import { TaskSvr } from 'service/task.service'
|
||||
import { generateRandomBytes32 } from 'utils/wallet.util'
|
||||
|
||||
import { BaseModule } from './Base'
|
||||
@ -66,6 +67,9 @@ export class ChainTaskClass extends BaseModule {
|
||||
@prop({ type: String, required: true, default: [] })
|
||||
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) {
|
||||
setImmediate(async function () {
|
||||
// TODO:: 通知前端
|
||||
})
|
||||
record.endTime = Date.now()
|
||||
}
|
||||
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) {
|
||||
|
@ -55,6 +55,7 @@ export class ScheduleConfirmEventClass extends BaseModule {
|
||||
await new TaskSvr().parseOneSchedule(id)
|
||||
}
|
||||
}
|
||||
return record
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -44,10 +44,13 @@ export class ScheduleExecutedEventClass extends BaseModule {
|
||||
$inc: { version: 1 },
|
||||
}
|
||||
|
||||
return ScheduleExecutedEvent.insertOrUpdate(
|
||||
let record = await ScheduleExecutedEvent.insertOrUpdate(
|
||||
{ transactionHash: event.transactionHash, scheduleId: event.returnValues.id },
|
||||
data,
|
||||
)
|
||||
if (record.version === 1) {
|
||||
}
|
||||
return record
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@ import { EventSyncSvr } from 'service/event.sync.service'
|
||||
import { NftTransferEvent } from 'models/NftTransferEvent'
|
||||
import { FtTransferEvent } from 'models/FtTransferEvent'
|
||||
import { ScheduleConfirmEvent } from 'models/ScheduleConfirmEvent'
|
||||
import { ScheduleExecutedEvent } from 'models/ScheduleExecutedEvent'
|
||||
|
||||
import 'common/Extend'
|
||||
|
||||
@ -17,6 +18,7 @@ let eventProcessers = {
|
||||
NftTransferEvent: NftTransferEvent,
|
||||
FtTransferEvent: FtTransferEvent,
|
||||
ScheduleConfirmEvent: ScheduleConfirmEvent,
|
||||
ScheduleExecutedEvent: ScheduleExecutedEvent,
|
||||
}
|
||||
|
||||
const events = require('config/events.json')
|
||||
|
@ -1,7 +1,8 @@
|
||||
import { BlockChain } from 'chain/BlockChain'
|
||||
import { singleton } from 'decorators/singleton'
|
||||
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 { ChainQueue } from 'queue/chain.queue'
|
||||
import { ExecQueue } from 'queue/exec.queue'
|
||||
@ -32,4 +33,15 @@ export class TaskSvr {
|
||||
await record.save()
|
||||
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