datai/docs/archive/api-docs/monitor/SysJobController/0007-run-job.md

151 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 接口文档 - 定时任务立即执行一次
## 接口信息
- **接口名称**: 定时任务立即执行一次
- **接口路径**: /monitor/job/run
- **请求方法**: PUT
- **模块归属**: 定时任务管理
- **版本号**: v1.0
- **创建日期**: 2026-01-13
- **最后更新**: 2026-01-13
## 功能描述
立即执行指定的定时任务一次不受任务当前状态和Cron表达式的限制。该接口用于手动触发任务执行常用于测试或紧急执行场景。
## 请求参数
### 请求体 (JSON)
```json
{
"jobId": 1
}
```
| 参数名 | 类型 | 必填 | 描述 | 示例 |
|--------|------|------|------|------|
| jobId | Long | 是 | 任务ID | 1 |
## 响应数据
### 成功响应
**HTTP 状态码**: 200 OK
```json
{
"code": 200,
"msg": "操作成功"
}
```
| 字段名 | 类型 | 描述 | 示例 |
|--------|------|------|------|
| code | Integer | 响应码 | 200 |
| msg | String | 响应消息 | 操作成功 |
### 失败响应
**HTTP 状态码**: 500 Internal Server Error
```json
{
"code": 500,
"msg": "任务不存在或已过期!",
"data": null
}
```
| 错误码 | 错误信息 | 描述 |
|--------|----------|------|
| 500 | 任务不存在或已过期 | 指定的任务ID不存在或任务已过期 |
| 403 | 没有权限访问 | 当前用户没有 monitor:job:changeStatus 权限 |
## 接口示例
### 请求示例
```bash
curl -X PUT "http://localhost:8080/monitor/job/run" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer eyJhbGciOiJIUzUxMiJ9..." \
-d '{
"jobId": 1
}'
```
### 响应示例
**成功**:
```json
{
"code": 200,
"msg": "操作成功"
}
```
**失败**:
```json
{
"code": 500,
"msg": "任务不存在或已过期!",
"data": null
}
```
## 错误处理
- 当任务ID不存在时返回 500 错误
- 当任务已过期时,返回 500 错误
- 当用户没有 `monitor:job:changeStatus` 权限时,返回 403 错误
- 立即执行操作会被记录在系统日志中
## 注意事项
- 需要登录认证
- 需要 `monitor:job:changeStatus` 权限
- jobId 必须是有效的任务ID
- 立即执行不受任务当前状态影响(暂停状态也可以执行)
- 立即执行不受Cron表达式限制
- 立即执行是异步操作,不会阻塞当前请求
- 立即执行会在后台线程中执行
- 立即执行不会影响任务的正常调度
- 立即执行会生成执行日志
- 操作会被记录在系统日志中
## 相关接口
- [查询定时任务列表](0001-job-list.md) - 查询任务列表
- [获取定时任务详细信息](0003-get-info.md) - 获取任务详情
- [修改定时任务状态](0006-change-status.md) - 修改任务状态
## 实现细节
- 通过 `ISysJobService.run()` 方法触发任务执行
- 使用 Quartz 的 `triggerJob()` 方法立即触发任务
- 立即执行不会改变任务的调度计划
- 立即执行会在独立的线程中执行
- 执行结果会记录在任务日志中
- 使用 `@Log` 注解记录立即执行操作
- 即使任务处于暂停状态也可以立即执行
## 测试信息
### 测试环境
- **环境**: 开发环境
- **版本**: v1.0
### 测试用例
| 测试场景 | 输入参数 | 预期结果 | 实际结果 | 状态 |
|----------|----------|----------|----------|------|
| 正常执行 | jobId=1 | 任务立即执行 | 任务立即执行 | 通过 |
| 执行暂停的任务 | jobId=暂停的任务 | 任务立即执行 | 任务立即执行 | 通过 |
| 任务不存在 | jobId=9999 | 返回500错误 | 返回500错误 | 通过 |
| 无权限访问 | 无权限用户 | 返回403错误 | 返回403错误 | 通过 |