【优化】抽离 midjourneyNotify 需要更新的 image 对象,方便在job中公用

This commit is contained in:
cherishsince 2024-06-05 15:22:10 +08:00
parent 000bcf1143
commit 2b3593dfe0
2 changed files with 41 additions and 12 deletions

View File

@ -64,6 +64,15 @@ public interface AiImageService {
*/ */
Boolean midjourneyNotify(MidjourneyNotifyReqVO notifyReqVO); Boolean midjourneyNotify(MidjourneyNotifyReqVO notifyReqVO);
/**
* 构建 midjourney - 更新对象
*
* @param imageId
* @param notifyReqVO
* @return
*/
AiImageDO buildUpdateImage(Long imageId, MidjourneyNotifyReqVO notifyReqVO);
/** /**
* midjourney - action(放大缩小U1U2...) * midjourney - action(放大缩小U1U2...)
* *

View File

@ -193,6 +193,13 @@ public class AiImageServiceImpl implements AiImageService {
log.warn("midjourneyNotify 回调的 jobId 不存在! jobId: {}", notifyReqVO.getId()); log.warn("midjourneyNotify 回调的 jobId 不存在! jobId: {}", notifyReqVO.getId());
return false; return false;
} }
// 2转换状态
AiImageDO updateImage = buildUpdateImage(image.getId(), notifyReqVO);
// 3更新 image 状态
return imageMapper.updateById(updateImage) > 0;
}
public AiImageDO buildUpdateImage(Long imageId, MidjourneyNotifyReqVO notifyReqVO) {
// 2转换状态 // 2转换状态
String imageStatus = null; String imageStatus = null;
MidjourneyTaskStatusEnum taskStatusEnum = MidjourneyTaskStatusEnum.valueOf(notifyReqVO.getStatus()); MidjourneyTaskStatusEnum taskStatusEnum = MidjourneyTaskStatusEnum.valueOf(notifyReqVO.getStatus());
@ -211,17 +218,14 @@ public class AiImageServiceImpl implements AiImageService {
} }
} }
// 4更新 image 状态 // 4更新 image 状态
imageMapper.updateById( return new AiImageDO()
new AiImageDO() .setId(imageId)
.setId(image.getId())
.setStatus(imageStatus) .setStatus(imageStatus)
.setPicUrl(filePath) .setPicUrl(filePath)
.setProgress(notifyReqVO.getProgress()) .setProgress(notifyReqVO.getProgress())
.setResponse(notifyReqVO) .setResponse(notifyReqVO)
.setButtons(notifyReqVO.getButtons()) .setButtons(notifyReqVO.getButtons())
.setErrorMessage(notifyReqVO.getFailReason()) .setErrorMessage(notifyReqVO.getFailReason());
);
return true;
} }
@Override @Override
@ -234,12 +238,28 @@ public class AiImageServiceImpl implements AiImageService {
throw exception(AI_IMAGE_CUSTOM_ID_NOT_EXISTS); throw exception(AI_IMAGE_CUSTOM_ID_NOT_EXISTS);
} }
// 3调用 midjourney proxy // 3调用 midjourney proxy
midjourneyProxyClient.action( MidjourneySubmitRespVO submitRespVO = midjourneyProxyClient.action(
new MidjourneyActionReqVO() new MidjourneyActionReqVO()
.setCustomId(customId) .setCustomId(customId)
.setTaskId(aiImageDO.getTaskId()) .setTaskId(aiImageDO.getTaskId())
.setNotifyHook(midjourneyNotifyUrl) .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; return Boolean.TRUE;
} }