Commit d332c0b175f353c597b8700cccbec74b45c7f9ec

Authored by cherishsince
1 parent 70cbab9a

【优化】处理 todo 运行异常 action 不能操作问题

yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/config/YudaoMidjourneyConfiguration.java renamed to yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/config/YudaoMidjourneyConfiguration.java
1 -package cn.iocoder.yudao.framework.ai.config; 1 +package cn.iocoder.yudao.module.ai.config;
2 2
3 import cn.iocoder.yudao.framework.ai.core.model.midjourney.MidjourneyConfig; 3 import cn.iocoder.yudao.framework.ai.core.model.midjourney.MidjourneyConfig;
4 import cn.iocoder.yudao.framework.ai.core.model.midjourney.api.MidjourneyApi; 4 import cn.iocoder.yudao.framework.ai.core.model.midjourney.api.MidjourneyApi;
5 import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 5 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  6 +import org.springframework.boot.autoconfigure.AutoConfiguration;
6 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; 7 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
7 import org.springframework.context.annotation.Bean; 8 import org.springframework.context.annotation.Bean;
8 import org.springframework.context.annotation.Configuration; 9 import org.springframework.context.annotation.Configuration;
yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/config/YudaoMidjourneyProperties.java renamed to yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/config/YudaoMidjourneyProperties.java
1 -package cn.iocoder.yudao.framework.ai.config; 1 +package cn.iocoder.yudao.module.ai.config;
2 2
3 import lombok.Data; 3 import lombok.Data;
4 import org.springframework.boot.context.properties.ConfigurationProperties; 4 import org.springframework.boot.context.properties.ConfigurationProperties;
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/job/MidjourneyJob.java
@@ -4,7 +4,10 @@ import cn.hutool.core.collection.CollUtil; @@ -4,7 +4,10 @@ import cn.hutool.core.collection.CollUtil;
4 import cn.iocoder.yudao.framework.ai.core.enums.AiPlatformEnum; 4 import cn.iocoder.yudao.framework.ai.core.enums.AiPlatformEnum;
5 import cn.iocoder.yudao.framework.ai.core.model.midjourney.api.MidjourneyApi; 5 import cn.iocoder.yudao.framework.ai.core.model.midjourney.api.MidjourneyApi;
6 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; 6 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
  7 +import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
  8 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
7 import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; 9 import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
  10 +import cn.iocoder.yudao.module.ai.controller.admin.image.vo.MidjourneyNotifyReqVO;
8 import cn.iocoder.yudao.module.ai.dal.dataobject.image.AiImageDO; 11 import cn.iocoder.yudao.module.ai.dal.dataobject.image.AiImageDO;
9 import cn.iocoder.yudao.module.ai.dal.mysql.image.AiImageMapper; 12 import cn.iocoder.yudao.module.ai.dal.mysql.image.AiImageMapper;
10 import cn.iocoder.yudao.module.ai.enums.image.AiImageStatusEnum; 13 import cn.iocoder.yudao.module.ai.enums.image.AiImageStatusEnum;
@@ -38,7 +41,7 @@ public class MidjourneyJob implements JobHandler { @@ -38,7 +41,7 @@ public class MidjourneyJob implements JobHandler {
38 41
39 // TODO @fan:这个方法,建议实现到 AiImageService,例如说 midjourneySync,返回 int 同步数量。 42 // TODO @fan:这个方法,建议实现到 AiImageService,例如说 midjourneySync,返回 int 同步数量。
40 @Override 43 @Override
41 - public String execute(String param) throws Exception { 44 + public String execute(String param) {
42 // 1、获取 midjourney 平台,状态在 “进行中” 的 image 45 // 1、获取 midjourney 平台,状态在 “进行中” 的 image
43 List<AiImageDO> imageList = imageMapper.selectByStatusAndPlatform(AiImageStatusEnum.IN_PROGRESS, AiPlatformEnum.MIDJOURNEY); 46 List<AiImageDO> imageList = imageMapper.selectByStatusAndPlatform(AiImageStatusEnum.IN_PROGRESS, AiPlatformEnum.MIDJOURNEY);
44 log.info("Midjourney 同步 - 任务数量 {}!", imageList.size()); 47 log.info("Midjourney 同步 - 任务数量 {}!", imageList.size());
@@ -61,10 +64,12 @@ public class MidjourneyJob implements JobHandler { @@ -61,10 +64,12 @@ public class MidjourneyJob implements JobHandler {
61 } 64 }
62 // TODO @ 3.1 和 3.2 是不是融合下;get,然后判空,continue; 65 // TODO @ 3.1 和 3.2 是不是融合下;get,然后判空,continue;
63 // 3.2 获取通知对象 66 // 3.2 获取通知对象
64 -// MidjourneyNotifyReqVO notifyReqVO = taskIdMap.get(aiImageDO.getTaskId()); 67 + MidjourneyApi.NotifyRequest notifyRequest = taskIdMap.get(aiImageDO.getTaskId());
65 // 3.2 构建更新对象 68 // 3.2 构建更新对象
66 // TODO @fan:建议 List<MidjourneyNotifyReqVO> 作为 imageService 去更新; 69 // TODO @fan:建议 List<MidjourneyNotifyReqVO> 作为 imageService 去更新;
67 -// updateImageList.add(imageService.buildUpdateImage(aiImageDO.getId(), notifyReqVO)); 70 + // TODO @芋艿 BeanUtils.toBean 转换为 null
  71 + updateImageList.add(imageService.buildUpdateImage(aiImageDO.getId(),
  72 + JsonUtils.parseObject(JsonUtils.toJsonString(notifyRequest), MidjourneyNotifyReqVO.class)));
68 } 73 }
69 // 4、批了更新 updateImageList 74 // 4、批了更新 updateImageList
70 imageMapper.updateBatch(updateImageList); 75 imageMapper.updateBatch(updateImageList);
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageServiceImpl.java
@@ -186,11 +186,13 @@ public class AiImageServiceImpl implements AiImageService { @@ -186,11 +186,13 @@ public class AiImageServiceImpl implements AiImageService {
186 public AiImageDO buildUpdateImage(Long imageId, MidjourneyNotifyReqVO notifyReqVO) { 186 public AiImageDO buildUpdateImage(Long imageId, MidjourneyNotifyReqVO notifyReqVO) {
187 // 1、转换状态 187 // 1、转换状态
188 String imageStatus = null; 188 String imageStatus = null;
189 - MidjourneyApi.TaskStatusEnum taskStatusEnum = MidjourneyApi.TaskStatusEnum.valueOf(notifyReqVO.getStatus());  
190 - if (MidjourneyApi.TaskStatusEnum.SUCCESS == taskStatusEnum) {  
191 - imageStatus = AiImageStatusEnum.SUCCESS.getStatus();  
192 - } else if (MidjourneyApi.TaskStatusEnum.FAILURE == taskStatusEnum) {  
193 - imageStatus = AiImageStatusEnum.FAIL.getStatus(); 189 + if (StrUtil.isNotBlank(notifyReqVO.getStatus())) {
  190 + MidjourneyApi.TaskStatusEnum taskStatusEnum = MidjourneyApi.TaskStatusEnum.valueOf(notifyReqVO.getStatus());
  191 + if (MidjourneyApi.TaskStatusEnum.SUCCESS == taskStatusEnum) {
  192 + imageStatus = AiImageStatusEnum.SUCCESS.getStatus();
  193 + } else if (MidjourneyApi.TaskStatusEnum.FAILURE == taskStatusEnum) {
  194 + imageStatus = AiImageStatusEnum.FAIL.getStatus();
  195 + }
194 } 196 }
195 197
196 // 2、上传图片 198 // 2、上传图片
@@ -261,7 +263,7 @@ public class AiImageServiceImpl implements AiImageService { @@ -261,7 +263,7 @@ public class AiImageServiceImpl implements AiImageService {
261 break; 263 break;
262 } 264 }
263 } 265 }
264 - if (isTrue) { 266 + if (!isTrue) {
265 throw exception(AI_IMAGE_CUSTOM_ID_NOT_EXISTS); 267 throw exception(AI_IMAGE_CUSTOM_ID_NOT_EXISTS);
266 } 268 }
267 } 269 }
yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/midjourney/api/MidjourneyApi.java
@@ -202,7 +202,7 @@ public class MidjourneyApi { @@ -202,7 +202,7 @@ public class MidjourneyApi {
202 public enum ModelEnum { 202 public enum ModelEnum {
203 203
204 MIDJOURNEY("midjourney", "midjourney"), 204 MIDJOURNEY("midjourney", "midjourney"),
205 - NIJI("Niji", "Niji"), 205 + NIJI("niji", "niji"),
206 206
207 ; 207 ;
208 208