From 2028005832a6ba551defb6f6603d02ce8099516e Mon Sep 17 00:00:00 2001 From: snowgitea Date: Wed, 1 Jul 2026 17:57:26 +0800 Subject: [PATCH] chore: src/modules/task/middleware/task.ts --- src/modules/task/middleware/task.ts | 38 +++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/modules/task/middleware/task.ts diff --git a/src/modules/task/middleware/task.ts b/src/modules/task/middleware/task.ts new file mode 100644 index 0000000..f1ed76a --- /dev/null +++ b/src/modules/task/middleware/task.ts @@ -0,0 +1,38 @@ +import { CoolCommException } from '@cool-midway/core'; +import { Inject, Middleware } from '@midwayjs/core'; +import { NextFunction, Context } from '@midwayjs/koa'; +import { IMiddleware } from '@midwayjs/core'; +import { TaskInfoQueue } from '../queue/task'; +import { TaskInfoService } from '../service/info'; + +/** + * 任务中间件 + */ +@Middleware() +export class TaskMiddleware implements IMiddleware { + @Inject() + taskInfoQueue: TaskInfoQueue; + + @Inject() + taskInfoService: TaskInfoService; + + resolve() { + return async (ctx: Context, next: NextFunction) => { + const urls = ctx.url.split('/'); + const type = await this.taskInfoService.initType(); + if ( + ['add', 'update', 'once', 'stop', 'start'].includes( + urls[urls.length - 1] + ) && + type == 'bull' + ) { + if (!this.taskInfoQueue.metaQueue) { + throw new CoolCommException( + 'task插件未启用或redis配置错误或redis版本过低(>=6.x)' + ); + } + } + await next(); + }; + } +}