增加任务执行后的通知

This commit is contained in:
zhl 2023-04-17 11:19:24 +08:00
parent 1a48086d5c
commit 7d3d28d2c6
5 changed files with 32 additions and 5 deletions

View File

@ -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) {

View File

@ -55,6 +55,7 @@ export class ScheduleConfirmEventClass extends BaseModule {
await new TaskSvr().parseOneSchedule(id)
}
}
return record
}
}

View File

@ -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
}
}

View File

@ -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')

View File

@ -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,
})
}
}