diff --git a/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java b/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java index 0420b6ff..f9edde27 100644 --- a/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java +++ b/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java @@ -88,6 +88,9 @@ public class GenerateConsumer { channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false); // 将消息从redis排队队列中删除,需保证被消费的消息存储到db之后再从redis删除 redisUtil.removeFromZSet(consumptionOrderKey, uniqueId); + String key = generateResultKey + ":" + uniqueId; + GenerateResultVO generateResultVO = new GenerateResultVO(generateThroughImageTextDTO.getUniqueId(), null, null, "Fail"); + redisUtil.addToString(key, new Gson().toJson(generateResultVO), CommonConstant.GENERATE_RESULT_EXPIRE_TIME); } catch (IOException exception) { log.error("手动确认,取消返回队列,不再重新消费"); } @@ -115,9 +118,10 @@ public class GenerateConsumer { try { log.info("tasks_id : {} start ", generateResult.get("tasks_id")); if (generateResult.get("status").equals("SUCCESS")) { - String url = generateResult.get("data"); + String url = generateResult.get("image_url"); String taskId = generateResult.get("tasks_id"); - generateService.processGenerateResult(taskId, url); + String category = generateResult.get("category"); + generateService.processGenerateResult(taskId, url, category); } else { // 修改redis中的数据状态为exception String key = generateResultKey + ":" + generateResult.get("tasks_id"); diff --git a/src/main/java/com/ai/da/common/constant/CommonConstant.java b/src/main/java/com/ai/da/common/constant/CommonConstant.java index 63076fd4..ac139e98 100644 --- a/src/main/java/com/ai/da/common/constant/CommonConstant.java +++ b/src/main/java/com/ai/da/common/constant/CommonConstant.java @@ -1,8 +1,9 @@ package com.ai.da.common.constant; public class CommonConstant { - // 单位 秒 一天过期 - public static final Long TASK_EXPIRE_TIME = 24 * 60 * 60L; + // 单位 秒 10分钟过期 +// public static final Long TASK_EXPIRE_TIME = 24 * 60 * 60L; + public static final Long TASK_EXPIRE_TIME = 10 * 60L; // 单位 秒 两天过期 public static final Long CREDITS_EXPIRE_TIME = 2 * 24 * 60 * 60L; // 单位 分钟 diff --git a/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java b/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java index fcd60ad1..602f1886 100644 --- a/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java +++ b/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java @@ -24,7 +24,6 @@ public class GenerateThroughImageTextDTO { @ApiModelProperty("text image text-image") String generateType; - /** 暂时没有用上 */ @ApiModelProperty("图片是update,还是从library中选择") String designType; diff --git a/src/main/java/com/ai/da/model/dto/GenerateToPythonDTO.java b/src/main/java/com/ai/da/model/dto/GenerateToPythonDTO.java index ea62e425..c08a5f90 100644 --- a/src/main/java/com/ai/da/model/dto/GenerateToPythonDTO.java +++ b/src/main/java/com/ai/da/model/dto/GenerateToPythonDTO.java @@ -22,15 +22,16 @@ public class GenerateToPythonDTO { // 去除 // private String version; // 去掉 -// private String gender; + private String gender; // taskId的最后拼接用户id private String tasks_id; - public GenerateToPythonDTO(String tasks_id, String prompt, String image_url, String mode, String category) { + public GenerateToPythonDTO(String tasks_id, String prompt, String image_url, String mode, String category, String gender) { this.image_url = image_url; this.category = category; this.prompt = prompt; this.mode = mode; this.tasks_id = tasks_id; + this.gender = gender; } } diff --git a/src/main/java/com/ai/da/model/vo/GenerateResultVO.java b/src/main/java/com/ai/da/model/vo/GenerateResultVO.java index 3071c0fa..4a5f1453 100644 --- a/src/main/java/com/ai/da/model/vo/GenerateResultVO.java +++ b/src/main/java/com/ai/da/model/vo/GenerateResultVO.java @@ -19,6 +19,15 @@ public class GenerateResultVO { private String status; + private String category; + + public GenerateResultVO(String taskId, Long id, String url, String status) { + this.taskId = taskId; + this.id = id; + this.url = url; + this.status = status; + } + public GenerateResultVO(Long id, String url, String status) { this.id = id; this.url = url; diff --git a/src/main/java/com/ai/da/service/GenerateService.java b/src/main/java/com/ai/da/service/GenerateService.java index 65297e79..c59513c8 100644 --- a/src/main/java/com/ai/da/service/GenerateService.java +++ b/src/main/java/com/ai/da/service/GenerateService.java @@ -15,7 +15,7 @@ public interface GenerateService extends IService { void generateThroughImageText(GenerateThroughImageTextDTO generateThroughImageTextDTO); - void processGenerateResult(String taskId, String url); + void processGenerateResult(String taskId, String url, String category); GenerateLikeVO generateLike(GenerateLikeDTO generateLikeDTO); diff --git a/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java b/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java index bca4328b..fc1455ec 100644 --- a/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java @@ -836,6 +836,7 @@ public class CollectionElementServiceImpl extends ServiceImpl i // List generatedSketchUrl = asyncCallerUtil.generate(new GenerateToPythonDTO(accountId, Objects.isNull(collectionElement) ? "" : collectionElement.getUrl(), // category, text, mode, "1", generateThroughImageTextDTO.getGender(), generateThroughImageTextDTO.getUniqueId())); Boolean requestResult = pythonService.generateSketchOrPrint(new GenerateToPythonDTO(generateThroughImageTextDTO.getUniqueId(), text,Objects.isNull(collectionElement) ? "" : collectionElement.getUrl(), - mode, category)); + mode, category, generateThroughImageTextDTO.getGender())); // log.info("generate 响应 : " + generatedSketchUrl); // if (CollectionUtils.isEmpty(generatedSketchUrl)) { // return null; @@ -193,7 +193,7 @@ public class GenerateServiceImpl extends ServiceImpl i @Override @Transactional(rollbackFor = Exception.class) - public void processGenerateResult(String taskId, String url){ + public void processGenerateResult(String taskId, String url, String category){ // 5、处理模型返回的数据 // 5.1 将相应的url保存到数据库 GenerateDetail generateDetail = new GenerateDetail(); @@ -226,7 +226,9 @@ public class GenerateServiceImpl extends ServiceImpl i generateDetailMapper.insert(generateDetail); String key = generateResultKey + ":" + taskId; - GenerateResultVO generateResultVO = new GenerateResultVO(taskId, generateDetail.getId(), url, "Success"); + String imageName = url.substring(url.lastIndexOf("/") + 1); + String status = imageName.equals("white_image.jpg") ? "Invalid" : "Success"; + GenerateResultVO generateResultVO = new GenerateResultVO(taskId, generateDetail.getId(), url, status, category); redisUtil.addToString(key, new Gson().toJson(generateResultVO), CommonConstant.GENERATE_RESULT_EXPIRE_TIME); } @@ -266,7 +268,7 @@ public class GenerateServiceImpl extends ServiceImpl i generate.setText(text); break; case "Sketchboard": - text = "a single item , " + userInput + ", clean background, hand-drawing sketch style, high quality"; + text = "transparent line drawing, transparent sketch, front of single clothing vector image, clean background, best quality, ultra high res 8k," + userInput; generate.setText(text); default: } @@ -525,15 +527,21 @@ public class GenerateServiceImpl extends ServiceImpl i String key = generateResultKey + ":" + taskId; GenerateResultVO generateResultVO = new Gson().fromJson(redisUtil.getFromString(key), GenerateResultVO.class); if (!Objects.isNull(generateResultVO) && !StringUtil.isNullOrEmpty(generateResultVO.getUrl())) { - generateResultVO.setUrl(minioUtil.getPresignedUrl(generateResultVO.getUrl(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); - if (!StringUtil.isNullOrEmpty(generateResultVO.getStatus())) collect.add(generateResultVO.getStatus()); + String url = generateResultVO.getUrl(); + if (url.substring(url.lastIndexOf("/") + 1).equals("white_image.jpg")){ + generateResultVO.setStatus("Invalid"); + }else { + generateResultVO.setUrl(minioUtil.getPresignedUrl(url, CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); + } }else if (Objects.isNull(generateResultVO)){ generateResultVO = new GenerateResultVO(); } + if (!StringUtil.isNullOrEmpty(generateResultVO.getStatus())) collect.add(generateResultVO.getStatus()); results.add(generateResultVO); }); // todo if (taskIdList.size() == 4 && collect.size() == 1 && collect.contains("Fail")){ + log.info("当前4个生成结果均为失败"); throw new BusinessException("generate.interface.error"); } return results;