From 20addff45edc33ea44d2ca013c666cca80027603 Mon Sep 17 00:00:00 2001
From: cherishsince <cherishsince@aliyun.com>
Date: Thu, 30 May 2024 14:21:13 +0800
Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=A2=9E=E5=8A=A0=E3=80=91Midjourney?=
 =?UTF-8?q?=20client=EF=BC=8C=E5=A2=9E=E5=8A=A0=20imagine=20=E6=96=B9?=
 =?UTF-8?q?=E6=B3=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../ai/client/MidjourneyProxyClient.java      | 40 +++++++++++++++++++
 .../ai/client/vo/MidjourneyImagineReqVO.java  | 32 +++++++++++++++
 .../ai/client/vo/MidjourneySubmitRespVO.java  | 27 +++++++++++++
 3 files changed, 99 insertions(+)
 create mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/client/MidjourneyProxyClient.java
 create mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/client/vo/MidjourneyImagineReqVO.java
 create mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/client/vo/MidjourneySubmitRespVO.java

diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/client/MidjourneyProxyClient.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/client/MidjourneyProxyClient.java
new file mode 100644
index 000000000..79db06e5c
--- /dev/null
+++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/client/MidjourneyProxyClient.java
@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.module.ai.client;
+
+import cn.iocoder.yudao.module.ai.client.vo.MidjourneyImagineReqVO;
+import cn.iocoder.yudao.module.ai.client.vo.MidjourneySubmitRespVO;
+import jakarta.validation.constraints.NotNull;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * Midjourney Proxy 客户端
+ *
+ * @author fansili
+ * @time 2024/5/30 13:58
+ * @since 1.0
+ */
+@Component
+public class MidjourneyProxyClient {
+
+    private static final String URI_IMAGINE = "/submit/imagine";
+
+    @Value("${ai.midjourney-proxy.url:http://127.0.0.1:8080/mj}")
+    private String url;
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    /**
+     * imagine - 根据提示词提交绘画任务
+     *
+     * @param imagineReqVO
+     * @return
+     */
+    public MidjourneySubmitRespVO imagine(@Validated @NotNull MidjourneyImagineReqVO imagineReqVO) {
+        return restTemplate.postForObject(url.concat(URI_IMAGINE), imagineReqVO, MidjourneySubmitRespVO.class);
+    }
+
+}
diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/client/vo/MidjourneyImagineReqVO.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/client/vo/MidjourneyImagineReqVO.java
new file mode 100644
index 000000000..ce3b33c4a
--- /dev/null
+++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/client/vo/MidjourneyImagineReqVO.java
@@ -0,0 +1,32 @@
+package cn.iocoder.yudao.module.ai.client.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Midjourney:Imagine 请求
+ *
+ * @author fansili
+ * @time 2024/5/30 14:02
+ * @since 1.0
+ */
+@Data
+public class MidjourneyImagineReqVO {
+
+    @Schema(description = "垫图(参考图)base64数组", required = false)
+    private List<String> base64Array;
+
+    @Schema(description = "通知地址", required = false)
+    @NotNull(message = "回调地址不能为空!")
+    private String notifyHook;
+
+    @Schema(description = "提示词", required = true)
+    @NotNull(message = "提示词不能为空!")
+    private String prompt;
+
+    @Schema(description = "自定义参数", required = false)
+    private String state;
+}
diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/client/vo/MidjourneySubmitRespVO.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/client/vo/MidjourneySubmitRespVO.java
new file mode 100644
index 000000000..c9a430d50
--- /dev/null
+++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/client/vo/MidjourneySubmitRespVO.java
@@ -0,0 +1,27 @@
+package cn.iocoder.yudao.module.ai.client.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * Midjourney:Imagine 请求
+ *
+ * @author fansili
+ * @time 2024/5/30 14:02
+ * @since 1.0
+ */
+@Data
+public class MidjourneySubmitRespVO {
+
+    @Schema(description = "状态码: 1(提交成功), 21(已存在), 22(排队中), other(错误)")
+    private String code;
+
+    @Schema(description = "描述")
+    private String description;
+
+    @Schema(description = "扩展字段")
+    private String properties;
+
+    @Schema(description = "任务ID")
+    private String result;
+}