Commit d332c0b175f353c597b8700cccbec74b45c7f9ec
1 parent
70cbab9a
【优化】处理 todo 运行异常 action 不能操作问题
Showing
5 changed files
with
20 additions
and
12 deletions
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
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 |