queue.controller.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. const router_1 = __importDefault(require("@koa/router"));
  7. const queue_service_1 = require("./queue.service");
  8. const errorHandler_1 = require("../../middleware/errorHandler");
  9. const auth_1 = require("../../middleware/auth");
  10. const router = new router_1.default();
  11. // 获取队列状态
  12. router.get('/status', async (ctx) => {
  13. const status = await queue_service_1.queueService.getStatus();
  14. ctx.body = { code: 0, message: 'success', data: status };
  15. });
  16. // 获取任务列表
  17. router.get('/tasks', async (ctx) => {
  18. const { status, page = '1', pageSize = '20' } = ctx.query;
  19. const result = await queue_service_1.queueService.getTasks(
  20. status || null,
  21. parseInt(page, 10),
  22. parseInt(pageSize, 10)
  23. );
  24. ctx.body = { code: 0, message: 'success', data: result };
  25. });
  26. // 添加任务
  27. router.post('/task', auth_1.optionalAuth, async (ctx) => {
  28. const userId = ctx.state.user?.userId;
  29. const { text, voiceId, voiceParams } = ctx.request.body;
  30. try {
  31. const result = await queue_service_1.queueService.addTask(userId, text, voiceId, voiceParams);
  32. ctx.body = { code: 0, message: '任务已加入队列', data: result };
  33. } catch (err) {
  34. if (err.message.includes('请输入') || err.message.includes('请选择') || err.message.includes('已有')) {
  35. throw new errorHandler_1.BadRequestError(err.message);
  36. }
  37. throw err;
  38. }
  39. });
  40. // 删除任务
  41. router.delete('/task/:audioId', async (ctx) => {
  42. const { audioId } = ctx.params;
  43. try {
  44. const result = await queue_service_1.queueService.deleteTask(audioId);
  45. ctx.body = { code: 0, message: '任务已删除', data: result };
  46. } catch (err) {
  47. if (err.message === '任务不存在') {
  48. throw new errorHandler_1.NotFoundError(err.message);
  49. }
  50. if (err.message === '任务正在处理中,无法删除') {
  51. throw new errorHandler_1.BadRequestError(err.message);
  52. }
  53. throw err;
  54. }
  55. });
  56. // 启动队列
  57. router.post('/start', async (ctx) => {
  58. const result = queue_service_1.queueService.start();
  59. ctx.body = { code: 0, message: result.message, data: result };
  60. });
  61. // 停止队列
  62. router.post('/stop', async (ctx) => {
  63. const result = queue_service_1.queueService.stop();
  64. ctx.body = { code: 0, message: result.message, data: result };
  65. });
  66. // 清空待处理任务
  67. router.delete('/tasks', async (ctx) => {
  68. const result = await queue_service_1.queueService.clearPendingTasks();
  69. ctx.body = { code: 0, message: '已清空待处理任务', data: result };
  70. });
  71. exports.default = router;