BUGFIX: 添加retry_failed状态,不处理failed状态
All checks were successful
git commit 控制 连卡佛 back-java prod 分支构建部署 / build_and_deploy (push) Has been skipped

This commit is contained in:
2025-12-30 10:56:22 +08:00
parent f74685c4d1
commit 595c1eeaa8
2 changed files with 17 additions and 14 deletions

View File

@@ -10,7 +10,7 @@ public class OutfitCallbackDTO {
private String outfit_id; private String outfit_id;
// 取值范围ok || failed || stop || retrying // 取值范围ok || failed || stop || retrying || retry_failed
private String status; private String status;
private String path; private String path;

View File

@@ -27,7 +27,6 @@ import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.netty.util.internal.StringUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -130,18 +129,19 @@ public class StyleServiceImpl extends ServiceImpl<StyleMapper, Style> implements
// 搭配完成后的回调通知处理 // 搭配完成后的回调通知处理
public void callback(OutfitCallbackDTO callbackDTO) { public void callback(OutfitCallbackDTO callbackDTO) {
if (Objects.isNull(callbackDTO.getStatus())) { if (Objects.isNull(callbackDTO.getStatus()) || callbackDTO.getStatus().equals("failed")) {
return; return;
} }
// 1. 判断path是否为空是 -> 不做任何处理 // 1. 判断path是否为空是 -> 不做任何处理
if (!"retrying".equals(callbackDTO.getStatus()) if (("ok".equals(callbackDTO.getStatus())
&& !"failed".equals(callbackDTO.getStatus()) || "stop".equals(callbackDTO.getStatus()))
&& StringUtil.isNullOrEmpty(callbackDTO.getPath())) { && StringUtils.isBlank(callbackDTO.getPath())) {
log.error("状态为ok || stop时path为空");
return; return;
} }
if (StringUtil.isNullOrEmpty(callbackDTO.getOutfit_id())) { if (StringUtils.isBlank(callbackDTO.getOutfit_id())) {
log.error("回调参数中outfit_id为空"); log.error("回调参数中outfit_id为空");
return; return;
} }
@@ -159,26 +159,27 @@ public class StyleServiceImpl extends ServiceImpl<StyleMapper, Style> implements
// 3.更新path, items, 状态 // 3.更新path, items, 状态
// 由于数据变化较频繁考虑存到redis // 由于数据变化较频繁考虑存到redis
if (outfitResult instanceof OutfitResultVO) { if (outfitResult instanceof OutfitResultVO) {
((OutfitResultVO) outfitResult).setPath(minioUtil.getPresignedUrl(callbackDTO.getPath(), CommonConstants.MINIO_PATH_TIMEOUT));
String status; String status;
switch(callbackDTO.getStatus()) { switch(callbackDTO.getStatus()) {
case "ok": case "ok":
status = StatusEnum.RUNNING.name(); status = StatusEnum.RUNNING.name();
((OutfitResultVO) outfitResult).setPath(minioUtil.getPresignedUrl(callbackDTO.getPath(), CommonConstants.MINIO_PATH_TIMEOUT));
break; break;
case "stop": case "stop":
status = StatusEnum.SUCCEEDED.name(); status = StatusEnum.SUCCEEDED.name();
break; ((OutfitResultVO) outfitResult).setPath(minioUtil.getPresignedUrl(callbackDTO.getPath(), CommonConstants.MINIO_PATH_TIMEOUT));
case "failed":
status = StatusEnum.FAILED.name();
break; break;
case "retrying": case "retrying":
status = StatusEnum.PENDING.name(); status = StatusEnum.PENDING.name();
((OutfitResultVO) outfitResult).setCreateTimeStamp(System.currentTimeMillis()); ((OutfitResultVO) outfitResult).setCreateTimeStamp(System.currentTimeMillis());
((OutfitResultVO) outfitResult).setPath(null); ((OutfitResultVO) outfitResult).setPath(null);
break; break;
case /*"failed",*/ "retry_failed":
status = StatusEnum.FAILED.name();
break;
default: default:
log.error("outfit_id为{},回调状态未知{}", requestId, callbackDTO.getStatus()); log.error("outfit_id为{},回调状态未知{}", requestId, callbackDTO.getStatus());
status = "failed"; status = StatusEnum.FAILED.name();
} }
((OutfitResultVO) outfitResult).setStatus(status); ((OutfitResultVO) outfitResult).setStatus(status);
@@ -186,7 +187,9 @@ public class StyleServiceImpl extends ServiceImpl<StyleMapper, Style> implements
} }
// 生成结束或失败时更新数据库 // 生成结束或失败时更新数据库
if ("stop".equals(callbackDTO.getStatus()) || "failed".equals(callbackDTO.getStatus())) { if ("stop".equals(callbackDTO.getStatus())
/*|| "failed".equals(callbackDTO.getStatus())*/
|| "retry_failed".equals(callbackDTO.getStatus())) {
// String requestId = callbackDTO.getOutfit_id(); // String requestId = callbackDTO.getOutfit_id();
LambdaQueryWrapper<Style> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Style> queryWrapper = new LambdaQueryWrapper<>();
@@ -261,7 +264,7 @@ public class StyleServiceImpl extends ServiceImpl<StyleMapper, Style> implements
outfitResultVO.setId(style.getId()); outfitResultVO.setId(style.getId());
outfitResultVO.setRequestId(style.getPythonRequestId()); outfitResultVO.setRequestId(style.getPythonRequestId());
outfitResultVO.setStatus(StatusEnum.of(style.getGenerationStatus()).name()); outfitResultVO.setStatus(StatusEnum.of(style.getGenerationStatus()).name());
if (!StringUtil.isNullOrEmpty(style.getStyleImageUrl())) { if (!StringUtils.isBlank(style.getStyleImageUrl())) {
outfitResultVO.setPath(minioUtil.getPresignedUrl(style.getStyleImageUrl(), CommonConstants.MINIO_PATH_TIMEOUT)); outfitResultVO.setPath(minioUtil.getPresignedUrl(style.getStyleImageUrl(), CommonConstants.MINIO_PATH_TIMEOUT));
} }
resultVOS.add(outfitResultVO); resultVOS.add(outfitResultVO);