From 2b3593dfe019080602402014cdfd32ae03cdc1fa Mon Sep 17 00:00:00 2001 From: cherishsince Date: Wed, 5 Jun 2024 15:22:10 +0800 Subject: [PATCH] 【优化】抽离 midjourneyNotify 需要更新的 image 对象,方便在job中公用 --- yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageService.java | 9 +++++++++ yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageServiceImpl.java | 44 ++++++++++++++++++++++++++++++++------------ 2 files changed, 41 insertions(+), 12 deletions(-) diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageService.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageService.java index d7395f0..f84bfcb 100644 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageService.java +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageService.java @@ -65,6 +65,15 @@ public interface AiImageService { Boolean midjourneyNotify(MidjourneyNotifyReqVO notifyReqVO); /** + * 构建 midjourney - 更新对象 + * + * @param imageId + * @param notifyReqVO + * @return + */ + AiImageDO buildUpdateImage(Long imageId, MidjourneyNotifyReqVO notifyReqVO); + + /** * midjourney - action(放大、缩小、U1、U2...) * * @param loginUserId diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageServiceImpl.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageServiceImpl.java index 2a0dfbd..e4909f9 100644 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageServiceImpl.java +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageServiceImpl.java @@ -194,6 +194,13 @@ public class AiImageServiceImpl implements AiImageService { return false; } // 2、转换状态 + AiImageDO updateImage = buildUpdateImage(image.getId(), notifyReqVO); + // 3、更新 image 状态 + return imageMapper.updateById(updateImage) > 0; + } + + public AiImageDO buildUpdateImage(Long imageId, MidjourneyNotifyReqVO notifyReqVO) { + // 2、转换状态 String imageStatus = null; MidjourneyTaskStatusEnum taskStatusEnum = MidjourneyTaskStatusEnum.valueOf(notifyReqVO.getStatus()); if (MidjourneyTaskStatusEnum.SUCCESS == taskStatusEnum) { @@ -211,17 +218,14 @@ public class AiImageServiceImpl implements AiImageService { } } // 4、更新 image 状态 - imageMapper.updateById( - new AiImageDO() - .setId(image.getId()) - .setStatus(imageStatus) - .setPicUrl(filePath) - .setProgress(notifyReqVO.getProgress()) - .setResponse(notifyReqVO) - .setButtons(notifyReqVO.getButtons()) - .setErrorMessage(notifyReqVO.getFailReason()) - ); - return true; + return new AiImageDO() + .setId(imageId) + .setStatus(imageStatus) + .setPicUrl(filePath) + .setProgress(notifyReqVO.getProgress()) + .setResponse(notifyReqVO) + .setButtons(notifyReqVO.getButtons()) + .setErrorMessage(notifyReqVO.getFailReason()); } @Override @@ -234,12 +238,28 @@ public class AiImageServiceImpl implements AiImageService { throw exception(AI_IMAGE_CUSTOM_ID_NOT_EXISTS); } // 3、调用 midjourney proxy - midjourneyProxyClient.action( + MidjourneySubmitRespVO submitRespVO = midjourneyProxyClient.action( new MidjourneyActionReqVO() .setCustomId(customId) .setTaskId(aiImageDO.getTaskId()) .setNotifyHook(midjourneyNotifyUrl) ); + // 6、保存任务 id (状态码: 1(提交成功), 21(已存在), 22(排队中), other(错误)) + if (!MidjourneySubmitCodeEnum.SUCCESS_CODES.contains(submitRespVO.getCode())) { + throw exception(AI_IMAGE_MIDJOURNEY_SUBMIT_FAIL, submitRespVO.getDescription()); + } + // 4、新增 image 记录 + AiImageDO newImage = BeanUtils.toBean(aiImageDO, AiImageDO.class); + // 4.1、重置参数 + newImage.setId(null); + newImage.setStatus(AiImageStatusEnum.IN_PROGRESS.getStatus()); + newImage.setPicUrl(null); + newImage.setResponse(null); + newImage.setProgress(null); + newImage.setTaskId(submitRespVO.getResult()); + newImage.setErrorMessage(null); + // 4.2、保存数据库 + imageMapper.insert(newImage); return Boolean.TRUE; } -- libgit2 0.21.4