Commit 3d2b0decd9fd1222f82fd18caf4a0de511f77408

Authored by cherishsince
1 parent f20c27a7

【解决todo】增加 finishTime 完成时间

yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/vo/AiImageRespVO.java
... ... @@ -51,7 +51,12 @@ public class AiImageRespVO {
51 51 @Schema(description = "mj buttons 按钮")
52 52 private List<MidjourneyApi.Button> buttons;
53 53  
  54 + @Schema(description = "完成时间")
  55 + private LocalDateTime finishTime;
  56 +
54 57 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
55 58 private LocalDateTime createTime;
56 59  
  60 +
  61 +
57 62 }
... ...
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/image/AiImageDO.java
... ... @@ -16,6 +16,7 @@ import lombok.Data;
16 16 import org.springframework.ai.openai.OpenAiImageOptions;
17 17 import org.springframework.ai.stabilityai.api.StabilityAiImageOptions;
18 18  
  19 +import java.time.LocalDateTime;
19 20 import java.util.List;
20 21 import java.util.Map;
21 22  
... ... @@ -111,6 +112,11 @@ public class AiImageDO extends BaseDO {
111 112 */
112 113 private String taskId;
113 114  
  115 + /**
  116 + * 完成时间
  117 + */
  118 + private LocalDateTime finishTime;
  119 +
114 120 public static class ButtonTypeHandler extends AbstractJsonTypeHandler<Object> {
115 121  
116 122 @Override
... ...
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageServiceImpl.java
... ... @@ -35,6 +35,7 @@ import org.springframework.scheduling.annotation.Async;
35 35 import org.springframework.stereotype.Service;
36 36 import org.springframework.transaction.annotation.Transactional;
37 37  
  38 +import java.time.LocalDateTime;
38 39 import java.util.Collections;
39 40 import java.util.List;
40 41 import java.util.Map;
... ... @@ -106,11 +107,12 @@ public class AiImageServiceImpl implements AiImageService {
106 107  
107 108 // 3. 更新数据库
108 109 imageMapper.updateById(new AiImageDO().setId(image.getId()).setStatus(AiImageStatusEnum.SUCCESS.getStatus())
109   - .setPicUrl(filePath));
  110 + .setPicUrl(filePath).setFinishTime(LocalDateTime.now()));
110 111 } catch (Exception ex) {
111 112 log.error("[doDall][image({}) 生成异常]", image, ex);
112 113 imageMapper.updateById(new AiImageDO().setId(image.getId())
113   - .setStatus(AiImageStatusEnum.FAIL.getStatus()).setErrorMessage(ex.getMessage()));
  114 + .setStatus(AiImageStatusEnum.FAIL.getStatus())
  115 + .setErrorMessage(ex.getMessage()).setFinishTime(LocalDateTime.now()));
114 116 }
115 117 }
116 118  
... ... @@ -254,12 +256,15 @@ public class AiImageServiceImpl implements AiImageService {
254 256 private void updateMidjourneyStatus(AiImageDO image, MidjourneyApi.Notify notify) {
255 257 // 1. 转换状态
256 258 Integer status = null;
  259 + LocalDateTime finishTime = null;
257 260 if (StrUtil.isNotBlank(notify.status())) {
258 261 MidjourneyApi.TaskStatusEnum taskStatusEnum = MidjourneyApi.TaskStatusEnum.valueOf(notify.status());
259 262 if (MidjourneyApi.TaskStatusEnum.SUCCESS == taskStatusEnum) {
260 263 status = AiImageStatusEnum.SUCCESS.getStatus();
  264 + finishTime = LocalDateTime.now();
261 265 } else if (MidjourneyApi.TaskStatusEnum.FAILURE == taskStatusEnum) {
262 266 status = AiImageStatusEnum.FAIL.getStatus();
  267 + finishTime = LocalDateTime.now();
263 268 }
264 269 }
265 270  
... ... @@ -276,7 +281,8 @@ public class AiImageServiceImpl implements AiImageService {
276 281  
277 282 // 3. 更新 image 状态
278 283 imageMapper.updateById(new AiImageDO().setId(image.getId()).setStatus(status)
279   - .setPicUrl(picUrl).setButtons(notify.buttons()).setErrorMessage(notify.failReason()));
  284 + .setPicUrl(picUrl).setButtons(notify.buttons()).setErrorMessage(notify.failReason())
  285 + .setFinishTime(finishTime));
280 286 }
281 287  
282 288 @Override
... ...