wangzhibo
2026-07-16 bac4362a0b7726d38a23d38f0d7913f2c2bab262
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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<Context, NextFunction> {
  @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();
    };
  }
}