Commit e4a0512b5185f99cb88576d0f062a61c477eef0b

Authored by cherishsince
1 parent f347b15a

【优化】AI Image 分页列表、get-my 返回 resp 结构

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 {
38 38 // TODO @fan:建议把 dallDrawing、midjourney 融合成一个 draw 接口,异步绘制;然后返回一个 id 给前端;前端通过 get 接口轮询,直到获取到生成成功
39 39 @Operation(summary = "dall2/dall3绘画", description = "openAi dall3是付费的!")
40 40 @PostMapping("/dall")
41   - public AiImageDallRespVO dallDrawing(@Validated @RequestBody AiImageDallReqVO req) {
42   - return aiImageService.dallDrawing(req);
  41 + public AiImageDallRespVO dall(@Validated @RequestBody AiImageDallReqVO req) {
  42 + return aiImageService.dall(req);
43 43 }
44 44  
45 45 @Operation(summary = "midjourney绘画", description = "midjourney图片绘画流程:1、提交任务 2、获取完成的任务 3、选择对应功能 4、获取最终结果")
... ...
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/vo/AiImageDallRespVO.java
1 1 package cn.iocoder.yudao.module.ai.controller.admin.image.vo;
2 2  
3 3 import io.swagger.v3.oas.annotations.media.Schema;
4   -import jakarta.validation.constraints.NotNull;
5   -import jakarta.validation.constraints.Size;
6 4 import lombok.Data;
7 5 import lombok.experimental.Accessors;
8 6  
  7 +import java.util.Map;
  8 +
9 9 /**
10 10 * dall2/dall2 绘画
11 11 *
... ... @@ -17,31 +17,57 @@ import lombok.experimental.Accessors;
17 17 @Accessors(chain = true)
18 18 public class AiImageDallRespVO {
19 19  
20   - @Schema(description = "提示词")
21   - @NotNull(message = "提示词不能为空!")
22   - @Size(max = 1200, message = "提示词最大1200")
  20 + @Schema(description = "id编号", example = "1")
  21 + private Long id;
  22 +
  23 + @Schema(description = "用户id", example = "1")
  24 + private Long userId;
  25 +
  26 + @Schema(description = "提示词", example = "南极的小企鹅")
23 27 private String prompt;
24 28  
25   - @Schema(description = "模型")
26   - @NotNull(message = "模型不能为空")
  29 + @Schema(description = "平台", example = "openai")
  30 + private String platform;
  31 +
  32 + @Schema(description = "模型", example = "dall2")
27 33 private String model;
28 34  
29   - @Schema(description = "风格")
30   - private String style;
  35 + @Schema(description = "图片宽度", example = "1024")
  36 + private String width;
  37 +
  38 + @Schema(description = "图片高度", example = "1024")
  39 + private String height;
31 40  
32   - @Schema(description = "图片size 1024x1024 ...")
33   - private String size;
  41 + @Schema(description = "绘画状态:10 进行中、20 绘画完成、30 绘画失败", example = "10")
  42 + private String status;
34 43  
35   - @Schema(description = "图片地址(自己服务器)")
  44 + @Schema(description = "是否发布", example = "public")
  45 + private String publicStatus;
  46 +
  47 + @Schema(description = "图片地址(自己服务器)", example = "http://")
36 48 private String picUrl;
37 49  
38   - @Schema(description = "可以访问图像的URL。")
  50 + @Schema(description = "绘画图片地址(绘画好的服务器)", example = "http://")
39 51 private String originalPicUrl;
40 52  
41   - @Schema(description = "图片base64。")
42   - private String base64;
43   -
44   - @Schema(description = "错误信息。")
  53 + @Schema(description = "绘画错误信息", example = "图片错误信息")
45 54 private String errorMessage;
46 55  
  56 + // ============ 绘画请求参数
  57 +
  58 + /**
  59 + * - style
  60 + */
  61 + @Schema(description = "绘画请求参数")
  62 + private Map<String, Object> drawRequest;
  63 +
  64 + /**
  65 + * - mjNonceId
  66 + * - mjOperationId
  67 + * - mjOperationName
  68 + * - mjOperations
  69 + */
  70 + @Schema(description = "绘画请求响应参数")
  71 + private Map<String, Object> drawResponse;
  72 +
47 73 }
... ...
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;
5 5 import lombok.experimental.Accessors;
6 6  
7 7 /**
8   - * midjourney req
  8 + * AI Image 我的图片列表 req
9 9 *
10 10 * @author fansili
11 11 * @time 2024/4/28 17:42
... ...
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;
10 10 import lombok.experimental.Accessors;
11 11  
12 12 import java.time.LocalDateTime;
  13 +import java.util.Map;
13 14  
14 15 /**
15 16 * midjourney req
... ... @@ -22,56 +23,57 @@ import java.time.LocalDateTime;
22 23 @Accessors(chain = true)
23 24 public class AiImageListRespVO extends PageParam {
24 25  
  26 + @Schema(description = "id编号", example = "1")
25 27 private Long id;
26 28  
27   - @Schema(description = "用户id")
  29 + @Schema(description = "用户id", example = "1")
28 30 private Long userId;
29 31  
30   - @Schema(description = "提示词")
  32 + @Schema(description = "提示词", example = "南极的小企鹅")
31 33 private String prompt;
32 34  
33   - @Schema(description = "模型 dall2/dall3、MJ、NIJI")
34   - private String model;
  35 + @Schema(description = "平台", example = "openai")
  36 + private String platform;
35 37  
36   - @Schema(description = "生成图像的尺寸大小。对于dall-e-2模型,尺寸可为256x256, 512x512, 或 1024x1024。对于dall-e-3模型,尺寸可为1024x1024, 1792x1024, 或 1024x1792。")
37   - private String size;
  38 + @Schema(description = "模型", example = "dall2")
  39 + private String model;
38 40  
39   - @Schema(description = "风格")
40   - private String style;
  41 + @Schema(description = "图片宽度", example = "1024")
  42 + private String width;
41 43  
42   - @Schema(description = "图片地址(自己服务器)")
43   - private String picUrl;
  44 + @Schema(description = "图片高度", example = "1024")
  45 + private String height;
44 46  
45   - @Schema(description = "绘画状态:提交、排队、绘画中、绘画完成、绘画失败")
  47 + @Schema(description = "绘画状态:10 进行中、20 绘画完成、30 绘画失败", example = "10")
46 48 private String status;
47 49  
48   - @Schema(description = "绘画图片地址(绘画好的服务器)")
49   - private String originalPicUrl;
50   -
51   - @Schema(description = "绘画错误信息")
52   - private String errorMessage;
53   -
54   - @Schema(description = "是否发布")
  50 + @Schema(description = "是否发布", example = "public")
55 51 private String publicStatus;
56 52  
57   - @Schema(description = "创建时间")
58   - private LocalDateTime createTime;
59   -
60   - @Schema(description = "更新时间")
61   - private LocalDateTime updateTime;
62   -
63   - // ============ mj 需要字段
64   -
65   - @Schema(description = "用户操作的Nonce编号(MJ返回)")
66   - private String mjNonceId;
  53 + @Schema(description = "图片地址(自己服务器)", example = "http://")
  54 + private String picUrl;
67 55  
68   - @Schema(description = "用户操作的操作编号(MJ返回)")
69   - private String mjOperationId;
  56 + @Schema(description = "绘画图片地址(绘画好的服务器)", example = "http://")
  57 + private String originalPicUrl;
70 58  
71   - @Schema(description = "用户操作的操作名字(MJ返回)")
72   - private String mjOperationName;
  59 + @Schema(description = "绘画错误信息", example = "图片错误信息")
  60 + private String errorMessage;
73 61  
74   - @Schema(description = "mj图片生产成功保存的 components json 数组")
75   - private String mjOperations;
  62 + // ============ 绘画请求参数
  63 +
  64 + /**
  65 + * - style
  66 + */
  67 + @Schema(description = "绘画请求参数")
  68 + private Map<String, Object> drawRequest;
  69 +
  70 + /**
  71 + * - mjNonceId
  72 + * - mjOperationId
  73 + * - mjOperationName
  74 + * - mjOperations
  75 + */
  76 + @Schema(description = "绘画请求响应参数")
  77 + private Map<String, Object> drawResponse;
76 78  
77 79 }
... ...
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;
2 2  
3 3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
4 4 import com.baomidou.mybatisplus.annotation.IdType;
  5 +import com.baomidou.mybatisplus.annotation.TableField;
5 6 import com.baomidou.mybatisplus.annotation.TableId;
6 7 import com.baomidou.mybatisplus.annotation.TableName;
  8 +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
7 9 import io.swagger.v3.oas.annotations.media.Schema;
8 10 import lombok.Data;
9 11  
... ... @@ -60,6 +62,7 @@ public class AiImageDO extends BaseDO {
60 62 * - style
61 63 */
62 64 @Schema(description = "绘画请求参数")
  65 + @TableField(typeHandler = JacksonTypeHandler.class)
63 66 private Map<String, Object> drawRequest;
64 67  
65 68 /**
... ... @@ -69,6 +72,7 @@ public class AiImageDO extends BaseDO {
69 72 * - mjOperations
70 73 */
71 74 @Schema(description = "绘画请求响应参数")
  75 + @TableField(typeHandler = JacksonTypeHandler.class)
72 76 private Map<String, Object> drawResponse;
73 77  
74 78 }
... ...
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 {
33 33 *
34 34 * @param req
35 35 */
36   - AiImageDallRespVO dallDrawing(AiImageDallReqVO req);
  36 + AiImageDallRespVO dall(AiImageDallReqVO req);
37 37  
38 38 /**
39 39 * midjourney 图片生成
... ...
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 {
115 115  
116 116 // TODO @fan:1)loginUserId 通过 controller 传入;
117 117 @Override
118   - public AiImageDallRespVO dallDrawing(AiImageDallReqVO req) {
  118 + public AiImageDallRespVO dall(AiImageDallReqVO req) {
119 119 Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
120 120 // 保存数据库
121 121 // TODO @fan:1)使用 BeanUtils;2)使用链式调用哈;
... ...