Commit c7ee3dc2cd623148c0e56c5db5a9e76dbe138d00

Authored by YunaiV
1 parent 4932ce60

【代码评审】AI:AI 绘图的逻辑

yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/image/AiImageDO.java
@@ -8,16 +8,17 @@ import io.swagger.v3.oas.annotations.media.Schema; @@ -8,16 +8,17 @@ import io.swagger.v3.oas.annotations.media.Schema;
8 import lombok.Data; 8 import lombok.Data;
9 import lombok.experimental.Accessors; 9 import lombok.experimental.Accessors;
10 10
  11 +// TODO @fan:@time、@sine 注解可以不加哈
11 /** 12 /**
12 - * ai 绘画 13 + * AI 绘画 DO
13 * 14 *
14 * @author fansili 15 * @author fansili
15 * @time 2024/4/25 15:53 16 * @time 2024/4/25 15:53
16 * @since 1.0 17 * @since 1.0
17 */ 18 */
18 @Data 19 @Data
19 -@Accessors(chain = true)  
20 -@TableName("ai_image") 20 +@Accessors(chain = true) // TODO @fan:这个不用添加哈,全局的 lombok.config 搞啦
  21 +@TableName("ai_image") // TODO @fan:建议放在 @Data 前面,因为它是关键注解,@Data 本质可悲替代
21 public class AiImageDO extends BaseDO { 22 public class AiImageDO extends BaseDO {
22 23
23 @TableId(type = IdType.AUTO) 24 @TableId(type = IdType.AUTO)
@@ -31,12 +32,14 @@ public class AiImageDO extends BaseDO { @@ -31,12 +32,14 @@ public class AiImageDO extends BaseDO {
31 32
32 // TODO @fan:要加一个平台字段;platform;因为一个平台,会有多种 model 模型; 33 // TODO @fan:要加一个平台字段;platform;因为一个平台,会有多种 model 模型;
33 34
34 - @Schema(description = "模型 dall2/dall3、MJ、NIJI") 35 + @Schema(description = "模型")
35 private String model; 36 private String model;
36 37
37 - @Schema(description = "生成图像的尺寸大小。对于dall-e-2模型,尺寸可为256x256, 512x512, 或 1024x1024。对于dall-e-3模型,尺寸可为1024x1024, 1792x1024, 或 1024x1792。") 38 + // TODO @fan:这个记录到 db,要不改成 width、height?更明确的尺寸
  39 + @Schema(description = "尺寸大小")
38 private String size; 40 private String size;
39 41
  42 + // TODO @fan:style 是所有模型都有么?如果不是,是不是靠 drawRequest 记录下就好了;
40 @Schema(description = "风格") 43 @Schema(description = "风格")
41 private String style; 44 private String style;
42 45
@@ -55,6 +58,9 @@ public class AiImageDO extends BaseDO { @@ -55,6 +58,9 @@ public class AiImageDO extends BaseDO {
55 @Schema(description = "是否发布") 58 @Schema(description = "是否发布")
56 private String publicStatus; 59 private String publicStatus;
57 60
  61 + // TODO @fan:增加一个 Map<String, Object> 字段,drawRequest;用于记录请求模型的字段;对应的就是 ImageOptions
  62 + // TODO @fan:增加一个 Map<String, Object> 字段,记录 ImageResponseMetadata?这样 mjNonceId、mjOperationId、mjOperationName、mjOperations 这些字段,貌似可以收掉
  63 +
58 // ============ mj 需要字段 64 // ============ mj 需要字段
59 65
60 @Schema(description = "用户操作的Nonce编号(MJ返回)") 66 @Schema(description = "用户操作的Nonce编号(MJ返回)")
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageServiceImpl.java
@@ -141,8 +141,7 @@ public class AiImageServiceImpl implements AiImageService { @@ -141,8 +141,7 @@ public class AiImageServiceImpl implements AiImageService {
141 String filePath = fileApi.createFile(HttpUtil.downloadBytes(imageGeneration.getOutput().getUrl())); 141 String filePath = fileApi.createFile(HttpUtil.downloadBytes(imageGeneration.getOutput().getUrl()));
142 // 更新数据库 142 // 更新数据库
143 aiImageMapper.updateById(new AiImageDO().setId(aiImageDO.getId()).setStatus(AiImageStatusEnum.COMPLETE.getStatus()) 143 aiImageMapper.updateById(new AiImageDO().setId(aiImageDO.getId()).setStatus(AiImageStatusEnum.COMPLETE.getStatus())
144 - .setPicUrl(filePath).setOriginalPicUrl(imageGeneration.getOutput().getUrl())  
145 - ); 144 + .setPicUrl(filePath).setOriginalPicUrl(imageGeneration.getOutput().getUrl()));
146 } catch (AiException aiException) { 145 } catch (AiException aiException) {
147 // TODO @fan:错误日志,也打印下哈;因为 aiException.getMessage() 比较精简; 146 // TODO @fan:错误日志,也打印下哈;因为 aiException.getMessage() 比较精简;
148 aiImageMapper.updateById(new AiImageDO().setId(aiImageDO.getId()).setStatus(AiImageStatusEnum.FAIL.getStatus()) 147 aiImageMapper.updateById(new AiImageDO().setId(aiImageDO.getId()).setStatus(AiImageStatusEnum.FAIL.getStatus())