Midjourney 接入
这篇解决什么
Midjourney 平台字符串怎么填、为什么不能走 /draw。读完能对上 AiPlatformEnum.MIDJOURNEY = "Midjourney",以及 imagine / action / notify 三组接口。
默认端口 48080。绘画总览见 AI 绘画创作。
示意图:提交走 Proxy。结果靠回调,Job 再兜底拉一次任务列表。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 绘画 | @RequestMapping("/ai/image") | ruoyi-office/yudao-module-ai/.../controller/admin/image/AiImageController.java |
| 提交 | POST /midjourney/imagine | AiImageServiceImpl#midjourneyImagine |
| 二次操作 | POST /midjourney/action | 放大、缩小、U1 / U2 |
| 回调 | POST /midjourney/notify | @PermitAll + @TenantIgnore |
| 工厂 | getOrCreateMidjourneyApi(apiKey, url) | AiModelFactoryImpl |
| 同步 | @XxlJob("aiMidjourneySyncJob") | AiMidjourneySyncJob |
官方菜单:AI 绘画 2783。没有「Midjourney」独立菜单。
getOrCreateImageModel 没有 Midjourney。把 MJ 模型丢进 POST /draw 会抛不支持。密钥 url + apiKey 来自库表;notifyUrl 只从 YAML yudao.ai.midjourney.notify-url 取,要指到 /admin-api/ai/image/midjourney/notify。
Proxy 路径:/submit/imagine、/submit/action、/task/list-by-condition。模型枚举 midjourney / niji。
字段
| 名称 | 说明 | 仓库路径 |
|---|---|---|
platform | 必须是 Midjourney | AiApiKeyDO / AiModelDO |
apiKey / url | Proxy 密钥和根地址 | AiApiKeyDO |
taskId / buttons | 任务和二次操作按钮 | AiImageDO |
status | 10 进行中 / 20 完成 / 30 失败 | 同上 |
不是 MJ 也不是 midjourney
枚举值是 Midjourney。Swagger 示例里的小写只是文档,库表不能照抄。
回调和 Job 至少留一个
notify 免登录。公网到不了本机时,靠 aiMidjourneySyncJob 拉 /task/list-by-condition。两个都不通,作品会停在进行中。
按本仓库 DO 生成的 ER。MJ 行靠 taskId 对回调。
配置与操作
走 API 密钥(2761)建 platform=Midjourney,url + apiKey 指向 Proxy。YAML yudao.ai.midjourney.notify-url 要指到 /admin-api/ai/image/midjourney/notify。提交走 AI 绘画(2783,/ai/image)的 POST /midjourney/imagine,不要丢进 POST /draw。
回调免登录;公网到不了本机时靠 aiMidjourneySyncJob。两个都不通,作品停在进行中。开启见 AI 功能设计。

本系统截图:AI 大模型 → 控制台 → API 密钥。各厂商共用这一页,用 platform 区分。

本系统截图:控制台 → 模型配置。keyId 必须指向同平台密钥。
