From e4a0512b5185f99cb88576d0f062a61c477eef0b Mon Sep 17 00:00:00 2001 From: cherishsince Date: Wed, 29 May 2024 10:53:37 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BC=98=E5=8C=96=E3=80=91AI=20Image?= =?UTF-8?q?=20=E5=88=86=E9=A1=B5=E5=88=97=E8=A1=A8=E3=80=81get-my=20?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=20resp=20=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/image/AiImageController.java | 4 +- .../admin/image/vo/AiImageDallRespVO.java | 60 ++++++++++++----- .../admin/image/vo/AiImageListReqVO.java | 2 +- .../admin/image/vo/AiImageListRespVO.java | 66 ++++++++++--------- .../ai/dal/dataobject/image/AiImageDO.java | 4 ++ .../ai/service/image/AiImageService.java | 2 +- .../ai/service/image/AiImageServiceImpl.java | 2 +- 7 files changed, 86 insertions(+), 54 deletions(-) diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/AiImageController.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/AiImageController.java index f1decdc86..6d15798e4 100644 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/AiImageController.java +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/AiImageController.java @@ -38,8 +38,8 @@ public class AiImageController { // TODO @fan:建议把 dallDrawing、midjourney 融合成一个 draw 接口,异步绘制;然后返回一个 id 给前端;前端通过 get 接口轮询,直到获取到生成成功 @Operation(summary = "dall2/dall3绘画", description = "openAi dall3是付费的!") @PostMapping("/dall") - public AiImageDallRespVO dallDrawing(@Validated @RequestBody AiImageDallReqVO req) { - return aiImageService.dallDrawing(req); + public AiImageDallRespVO dall(@Validated @RequestBody AiImageDallReqVO req) { + return aiImageService.dall(req); } @Operation(summary = "midjourney绘画", description = "midjourney图片绘画流程:1、提交任务 2、获取完成的任务 3、选择对应功能 4、获取最终结果") diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/vo/AiImageDallRespVO.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/vo/AiImageDallRespVO.java index 18c27a64f..934141339 100644 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/vo/AiImageDallRespVO.java +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/vo/AiImageDallRespVO.java @@ -1,11 +1,11 @@ package cn.iocoder.yudao.module.ai.controller.admin.image.vo; import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; import lombok.Data; import lombok.experimental.Accessors; +import java.util.Map; + /** * dall2/dall2 绘画 * @@ -17,31 +17,57 @@ import lombok.experimental.Accessors; @Accessors(chain = true) public class AiImageDallRespVO { - @Schema(description = "提示词") - @NotNull(message = "提示词不能为空!") - @Size(max = 1200, message = "提示词最大1200") + @Schema(description = "id编号", example = "1") + private Long id; + + @Schema(description = "用户id", example = "1") + private Long userId; + + @Schema(description = "提示词", example = "南极的小企鹅") private String prompt; - @Schema(description = "模型") - @NotNull(message = "模型不能为空") + @Schema(description = "平台", example = "openai") + private String platform; + + @Schema(description = "模型", example = "dall2") private String model; - @Schema(description = "风格") - private String style; + @Schema(description = "图片宽度", example = "1024") + private String width; - @Schema(description = "图片size 1024x1024 ...") - private String size; + @Schema(description = "图片高度", example = "1024") + private String height; - @Schema(description = "图片地址(自己服务器)") + @Schema(description = "绘画状态:10 进行中、20 绘画完成、30 绘画失败", example = "10") + private String status; + + @Schema(description = "是否发布", example = "public") + private String publicStatus; + + @Schema(description = "图片地址(自己服务器)", example = "http://") private String picUrl; - @Schema(description = "可以访问图像的URL。") + @Schema(description = "绘画图片地址(绘画好的服务器)", example = "http://") private String originalPicUrl; - @Schema(description = "图片base64。") - private String base64; - - @Schema(description = "错误信息。") + @Schema(description = "绘画错误信息", example = "图片错误信息") private String errorMessage; + // ============ 绘画请求参数 + + /** + * - style + */ + @Schema(description = "绘画请求参数") + private Map drawRequest; + + /** + * - mjNonceId + * - mjOperationId + * - mjOperationName + * - mjOperations + */ + @Schema(description = "绘画请求响应参数") + private Map drawResponse; + } diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/vo/AiImageListReqVO.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/vo/AiImageListReqVO.java index e75ebb4b3..6af980363 100644 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/vo/AiImageListReqVO.java +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/vo/AiImageListReqVO.java @@ -5,7 +5,7 @@ import lombok.Data; import lombok.experimental.Accessors; /** - * midjourney req + * AI Image 我的图片列表 req * * @author fansili * @time 2024/4/28 17:42 diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/vo/AiImageListRespVO.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/vo/AiImageListRespVO.java index 8e41f5a87..c0bb20773 100644 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/vo/AiImageListRespVO.java +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/vo/AiImageListRespVO.java @@ -10,6 +10,7 @@ import lombok.Data; import lombok.experimental.Accessors; import java.time.LocalDateTime; +import java.util.Map; /** * midjourney req @@ -22,56 +23,57 @@ import java.time.LocalDateTime; @Accessors(chain = true) public class AiImageListRespVO extends PageParam { + @Schema(description = "id编号", example = "1") private Long id; - @Schema(description = "用户id") + @Schema(description = "用户id", example = "1") private Long userId; - @Schema(description = "提示词") + @Schema(description = "提示词", example = "南极的小企鹅") private String prompt; - @Schema(description = "模型 dall2/dall3、MJ、NIJI") + @Schema(description = "平台", example = "openai") + private String platform; + + @Schema(description = "模型", example = "dall2") private String model; - @Schema(description = "生成图像的尺寸大小。对于dall-e-2模型,尺寸可为256x256, 512x512, 或 1024x1024。对于dall-e-3模型,尺寸可为1024x1024, 1792x1024, 或 1024x1792。") - private String size; + @Schema(description = "图片宽度", example = "1024") + private String width; - @Schema(description = "风格") - private String style; + @Schema(description = "图片高度", example = "1024") + private String height; - @Schema(description = "图片地址(自己服务器)") - private String picUrl; - - @Schema(description = "绘画状态:提交、排队、绘画中、绘画完成、绘画失败") + @Schema(description = "绘画状态:10 进行中、20 绘画完成、30 绘画失败", example = "10") private String status; - @Schema(description = "绘画图片地址(绘画好的服务器)") - private String originalPicUrl; - - @Schema(description = "绘画错误信息") - private String errorMessage; - - @Schema(description = "是否发布") + @Schema(description = "是否发布", example = "public") private String publicStatus; - @Schema(description = "创建时间") - private LocalDateTime createTime; + @Schema(description = "图片地址(自己服务器)", example = "http://") + private String picUrl; - @Schema(description = "更新时间") - private LocalDateTime updateTime; + @Schema(description = "绘画图片地址(绘画好的服务器)", example = "http://") + private String originalPicUrl; - // ============ mj 需要字段 + @Schema(description = "绘画错误信息", example = "图片错误信息") + private String errorMessage; - @Schema(description = "用户操作的Nonce编号(MJ返回)") - private String mjNonceId; + // ============ 绘画请求参数 - @Schema(description = "用户操作的操作编号(MJ返回)") - private String mjOperationId; + /** + * - style + */ + @Schema(description = "绘画请求参数") + private Map drawRequest; - @Schema(description = "用户操作的操作名字(MJ返回)") - private String mjOperationName; - - @Schema(description = "mj图片生产成功保存的 components json 数组") - private String mjOperations; + /** + * - mjNonceId + * - mjOperationId + * - mjOperationName + * - mjOperations + */ + @Schema(description = "绘画请求响应参数") + private Map drawResponse; } diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/image/AiImageDO.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/image/AiImageDO.java index d18d03d38..1474fc683 100644 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/image/AiImageDO.java +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/image/AiImageDO.java @@ -2,8 +2,10 @@ package cn.iocoder.yudao.module.ai.dal.dataobject.image; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -60,6 +62,7 @@ public class AiImageDO extends BaseDO { * - style */ @Schema(description = "绘画请求参数") + @TableField(typeHandler = JacksonTypeHandler.class) private Map drawRequest; /** @@ -69,6 +72,7 @@ public class AiImageDO extends BaseDO { * - mjOperations */ @Schema(description = "绘画请求响应参数") + @TableField(typeHandler = JacksonTypeHandler.class) private Map drawResponse; } diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageService.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageService.java index 68543e50b..2ffd72240 100644 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageService.java +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageService.java @@ -33,7 +33,7 @@ public interface AiImageService { * * @param req */ - AiImageDallRespVO dallDrawing(AiImageDallReqVO req); + AiImageDallRespVO dall(AiImageDallReqVO req); /** * midjourney 图片生成 diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageServiceImpl.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageServiceImpl.java index 87e0fa2ff..93c1e51f0 100644 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageServiceImpl.java +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageServiceImpl.java @@ -115,7 +115,7 @@ public class AiImageServiceImpl implements AiImageService { // TODO @fan:1)loginUserId 通过 controller 传入; @Override - public AiImageDallRespVO dallDrawing(AiImageDallReqVO req) { + public AiImageDallRespVO dall(AiImageDallReqVO req) { Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); // 保存数据库 // TODO @fan:1)使用 BeanUtils;2)使用链式调用哈;