|
|
@@ -74,6 +74,38 @@ router.post(
|
|
|
})
|
|
|
);
|
|
|
|
|
|
+// 修改并重新发布(更新现有任务)
|
|
|
+router.put(
|
|
|
+ '/:id',
|
|
|
+ [
|
|
|
+ param('id').isInt().withMessage('任务ID无效'),
|
|
|
+ body('targetAccounts').isArray({ min: 1 }).withMessage('至少选择一个目标账号'),
|
|
|
+ body('publishProxy').optional({ nullable: true }).isObject().withMessage('发布代理配置无效'),
|
|
|
+ validateRequest,
|
|
|
+ ],
|
|
|
+ asyncHandler(async (req, res) => {
|
|
|
+ const userId = req.user!.userId;
|
|
|
+ const taskId = Number(req.params.id);
|
|
|
+
|
|
|
+ // 修复 Bug #6145:更新现有任务而非创建新任务
|
|
|
+ const task = await publishService.updateTask(userId, taskId, req.body);
|
|
|
+
|
|
|
+ // 如果不是定时任务且状态允许,加入任务队列重新执行
|
|
|
+ if (!req.body.scheduledAt && task.status !== 'cancelled') {
|
|
|
+ taskQueueService.createTask(userId, {
|
|
|
+ type: 'publish_video',
|
|
|
+ title: `重新发布: ${task.title}`,
|
|
|
+ description: `发布到 ${task.targetAccounts.length} 个账号`,
|
|
|
+ data: {
|
|
|
+ publishTaskId: task.id,
|
|
|
+ },
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ res.json({ success: true, data: task });
|
|
|
+ })
|
|
|
+);
|
|
|
+
|
|
|
// 取消任务
|
|
|
router.post(
|
|
|
'/:id/cancel',
|