From a5bfc4e41d52b971c9898cd20e0b19f5c441f07f Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Tue, 25 Jun 2024 16:43:29 +0800 Subject: [PATCH 1/2] TASK:aida; --- .../da/common/RabbitMQ/GenerateConsumer.java | 178 ++++++++++++------ .../com/ai/da/common/RabbitMQ/MQConfig.java | 2 + .../com/ai/da/common/RabbitMQ/SRConsumer.java | 24 +-- .../controller/SavedCollectionController.java | 19 +- .../primary/entity/ToProductImageResult.java | 3 + .../com/ai/da/model/vo/MagicToolResultVO.java | 25 +++ .../java/com/ai/da/model/vo/WorkspaceVO.java | 2 +- .../com/ai/da/service/GenerateService.java | 2 + .../ai/da/service/UserLikeGroupService.java | 6 +- .../da/service/impl/GenerateServiceImpl.java | 25 +++ .../impl/UserLikeGroupServiceImpl.java | 133 +++++++++++-- .../da/service/impl/WorkspaceServiceImpl.java | 9 + 12 files changed, 338 insertions(+), 90 deletions(-) create mode 100644 src/main/java/com/ai/da/model/vo/MagicToolResultVO.java 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 14c8cae5..88d5ae19 100644 --- a/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java +++ b/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java @@ -46,6 +46,8 @@ public class GenerateConsumer { private String generateResultKey; @Value("${redis.key.toProductImageResultKey}") private String toProductImageResultKey; + @Value("${redis.key.relightResultKey}") + private String relightResultKey; public void generate(Message msg, Channel channel, String consumerName) { log.info("============start listening=========="); @@ -204,73 +206,125 @@ public class GenerateConsumer { long end = System.currentTimeMillis(); log.info("tasks_id : {}, end , message : {}, 执行时长: {} 毫秒", generateResult.get("tasks_id"), generateResult.get("message"), (end - start)); - log.info("============ProcessGenerateResult End listening=========="); - + log.info("============ProcessToProductImageResult End listening=========="); } - @RabbitListener(queues = MQConfig.GENERATE_QUEUE) - @RabbitHandler - public void generateConsumer1(Message msg, Channel channel) { - generate(msg, channel, "consumer 1"); + private void processRelightResult(Message msg, Channel channel) { + log.info("============processRelightResult listening=========="); + long start = System.currentTimeMillis(); + + Map generateResult = JSONObject.parseObject(msg.getBody(), Map.class); + log.info("toProductImage response : {}", generateResult); + + try { + log.info("tasks_id : {} start ", generateResult.get("tasks_id")); + if (generateResult.get("status").equals("SUCCESS")) { + String url = generateResult.get("image_url"); + String taskId = generateResult.get("tasks_id"); + String category = generateResult.get("category"); + generateService.processRelightResult(taskId, url, category); + } else { + // 修改redis中的数据状态为exception + String key = relightResultKey + ":" + generateResult.get("tasks_id"); + redisUtil.addToString(key, new Gson().toJson(new GenerateResultVO(generateResult.get("tasks_id"), null, null, "Fail")), CommonConstant.GENERATE_RESULT_EXPIRE_TIME); + // 将异常信息存到exception中 + HashMap exceptionInfo = new HashMap<>(); + exceptionInfo.put(generateResult.get("tasks_id"), generateResult.get("data")); + // 存redis + redisUtil.addToMap(exceptionMapKey, exceptionInfo); + } + } catch (Exception e) { + log.error(e.getMessage()); + try { + channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false); + // 将消息从redis排队队列中删除,需保证被消费的消息存储到db之后再从redis删除 + redisUtil.removeFromZSet(consumptionOrderKey, generateResult.get("tasks_id")); + } catch (IOException exception) { + log.error("手动确认,取消返回队列,不再重新消费"); + } + // 将入参和错误信息存入数据库 + String exceptionMessage = JSONObject.toJSONString(generateResult) + + " Exception message : " + e.getMessage(); + HashMap exceptionInfo = new HashMap<>(); + exceptionInfo.put(String.valueOf(generateResult.get("tasks_id")), exceptionMessage); + // 存redis + redisUtil.addToMap(exceptionMapKey, exceptionInfo); + } + + long end = System.currentTimeMillis(); + log.info("tasks_id : {}, end , message : {}, 执行时长: {} 毫秒", generateResult.get("tasks_id"), generateResult.get("message"), (end - start)); + log.info("============ProcessRelightResult End listening=========="); } - @RabbitListener(queues = MQConfig.GENERATE_QUEUE) - @RabbitHandler - public void generateConsumer2(Message msg, Channel channel) { - generate(msg, channel, "consumer 2"); - } +// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) +// @RabbitHandler +// public void generateConsumer1(Message msg, Channel channel) { +// generate(msg, channel, "consumer 1"); +// } +// +// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) +// @RabbitHandler +// public void generateConsumer2(Message msg, Channel channel) { +// generate(msg, channel, "consumer 2"); +// } +// +// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) +// @RabbitHandler +// public void generateConsumer3(Message msg, Channel channel) { +// generate(msg, channel, "consumer 3"); +// } +// +// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) +// @RabbitHandler +// public void generateConsumer4(Message msg, Channel channel) { +// generate(msg, channel, "consumer 4"); +// } +// +// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) +// @RabbitHandler +// public void generateConsumer5(Message msg, Channel channel) { +// generate(msg, channel, "consumer 5"); +// } +// +// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) +// @RabbitHandler +// public void generateConsumer6(Message msg, Channel channel) { +// generate(msg, channel, "consumer 6"); +// } +// +// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) +// @RabbitHandler +// public void generateConsumer7(Message msg, Channel channel) { +// generate(msg, channel, "consumer 7"); +// } +// +// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) +// @RabbitHandler +// public void generateConsumer8(Message msg, Channel channel) { +// generate(msg, channel, "consumer 8"); +// } +// +// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) +// @RabbitHandler +// public void generateConsumer9(Message msg, Channel channel) { +// generate(msg, channel, "consumer 9"); +// } +// +// @RabbitListener(queues = MQConfig.GENERATE_RESULT_QUEUE) +// @RabbitHandler +// public void getGenerateResult(Message msg, Channel channel) { +// processGenerateResult(msg, channel); +// } +// +// @RabbitListener(queues = MQConfig.TO_PRODUCT_IMAGE_RESULT_QUEUE) +// @RabbitHandler +// public void getToProductImageResult(Message msg, Channel channel) { +// processToProductImageResult(msg, channel); +// } - @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitListener(queues = MQConfig.RELIGHT_RESULT_QUEUE) @RabbitHandler - public void generateConsumer3(Message msg, Channel channel) { - generate(msg, channel, "consumer 3"); - } - - @RabbitListener(queues = MQConfig.GENERATE_QUEUE) - @RabbitHandler - public void generateConsumer4(Message msg, Channel channel) { - generate(msg, channel, "consumer 4"); - } - - @RabbitListener(queues = MQConfig.GENERATE_QUEUE) - @RabbitHandler - public void generateConsumer5(Message msg, Channel channel) { - generate(msg, channel, "consumer 5"); - } - - @RabbitListener(queues = MQConfig.GENERATE_QUEUE) - @RabbitHandler - public void generateConsumer6(Message msg, Channel channel) { - generate(msg, channel, "consumer 6"); - } - - @RabbitListener(queues = MQConfig.GENERATE_QUEUE) - @RabbitHandler - public void generateConsumer7(Message msg, Channel channel) { - generate(msg, channel, "consumer 7"); - } - - @RabbitListener(queues = MQConfig.GENERATE_QUEUE) - @RabbitHandler - public void generateConsumer8(Message msg, Channel channel) { - generate(msg, channel, "consumer 8"); - } - - @RabbitListener(queues = MQConfig.GENERATE_QUEUE) - @RabbitHandler - public void generateConsumer9(Message msg, Channel channel) { - generate(msg, channel, "consumer 9"); - } - - @RabbitListener(queues = MQConfig.GENERATE_RESULT_QUEUE) - @RabbitHandler - public void getGenerateResult(Message msg, Channel channel) { - processGenerateResult(msg, channel); - } - - @RabbitListener(queues = MQConfig.TO_PRODUCT_IMAGE_RESULT_QUEUE) - @RabbitHandler - public void getToProductImageResult(Message msg, Channel channel) { - processToProductImageResult(msg, channel); + public void getRelightResult(Message msg, Channel channel) { + processRelightResult(msg, channel); } } diff --git a/src/main/java/com/ai/da/common/RabbitMQ/MQConfig.java b/src/main/java/com/ai/da/common/RabbitMQ/MQConfig.java index eb0af5cc..b44bea8c 100644 --- a/src/main/java/com/ai/da/common/RabbitMQ/MQConfig.java +++ b/src/main/java/com/ai/da/common/RabbitMQ/MQConfig.java @@ -27,6 +27,8 @@ public class MQConfig { public static final String GENERATE_RESULT_QUEUE = "GenerateImage-dev"; public static final String TO_PRODUCT_IMAGE_RESULT_QUEUE = "ToProductImage-local"; + + public static final String RELIGHT_RESULT_QUEUE = "Relight-local"; public MQConfig() { } diff --git a/src/main/java/com/ai/da/common/RabbitMQ/SRConsumer.java b/src/main/java/com/ai/da/common/RabbitMQ/SRConsumer.java index 6ad261bd..b8ba32f2 100644 --- a/src/main/java/com/ai/da/common/RabbitMQ/SRConsumer.java +++ b/src/main/java/com/ai/da/common/RabbitMQ/SRConsumer.java @@ -218,17 +218,17 @@ public class SRConsumer { taskListService.updateTaskStatusOrOutputRedis(uniqueId, "fail", null); } - @RabbitListener(queues = MQConfig.SR_QUEUE) - @RabbitHandler - public void SRConsumer1(Message msg, Channel channel) { - superResolution(msg, channel, "consumer 1"); - } - - - @RabbitListener(queues = MQConfig.SR_RESULT_QUEUE) - @RabbitHandler - public void SRResultConsumer1(Message msg, Channel channel) { - getSRResult(msg, channel, "consumer 1"); - } +// @RabbitListener(queues = MQConfig.SR_QUEUE) +// @RabbitHandler +// public void SRConsumer1(Message msg, Channel channel) { +// superResolution(msg, channel, "consumer 1"); +// } +// +// +// @RabbitListener(queues = MQConfig.SR_RESULT_QUEUE) +// @RabbitHandler +// public void SRResultConsumer1(Message msg, Channel channel) { +// getSRResult(msg, channel, "consumer 1"); +// } } diff --git a/src/main/java/com/ai/da/controller/SavedCollectionController.java b/src/main/java/com/ai/da/controller/SavedCollectionController.java index 5b467720..d832bdb9 100644 --- a/src/main/java/com/ai/da/controller/SavedCollectionController.java +++ b/src/main/java/com/ai/da/controller/SavedCollectionController.java @@ -196,9 +196,9 @@ public class SavedCollectionController { @ApiOperation(value = "获取生成结果") @PostMapping("/toProductImageResult") - public Response> getToProductImageResult(@Valid @RequestBody List taskIdList) { - List generateResult = userLikeGroupService.getToProductImageResultList(taskIdList); - return Response.success(generateResult); + public Response> getToProductImageResult(@Valid @RequestBody List taskIdList) { + List magicToolResultVOList = userLikeGroupService.getToProductImageResultList(taskIdList); + return Response.success(magicToolResultVOList); } @ApiOperation(value = "画布用户上传元素") @@ -212,4 +212,17 @@ public class SavedCollectionController { public Response> productImageLikeList(@Valid @RequestBody ToProductImageDTO toProductImageDTO) { return Response.success(userLikeGroupService.productImageLikeList(toProductImageDTO)); } + + @ApiOperation(value = "relight") + @PostMapping("/relight") + public Response> relight(@Valid @RequestBody ToProductImageDTO toProductImageDTO) { + return Response.success(userLikeGroupService.relight(toProductImageDTO)); + } + + @ApiOperation(value = "获取relight结果") + @PostMapping("/relightResult") + public Response> getRelightResult(@Valid @RequestBody List taskIdList) { + List magicToolResultVOList = userLikeGroupService.getRelightResult(taskIdList); + return Response.success(magicToolResultVOList); + } } diff --git a/src/main/java/com/ai/da/mapper/primary/entity/ToProductImageResult.java b/src/main/java/com/ai/da/mapper/primary/entity/ToProductImageResult.java index f81f255b..4731a6dd 100644 --- a/src/main/java/com/ai/da/mapper/primary/entity/ToProductImageResult.java +++ b/src/main/java/com/ai/da/mapper/primary/entity/ToProductImageResult.java @@ -39,4 +39,7 @@ public class ToProductImageResult implements Serializable { @ApiModelProperty(value = "userLikeGroupId") private Long userLikeGroupId; + + @ApiModelProperty(value = "generate 结果类型") + private String resultType; } diff --git a/src/main/java/com/ai/da/model/vo/MagicToolResultVO.java b/src/main/java/com/ai/da/model/vo/MagicToolResultVO.java new file mode 100644 index 00000000..2aabb67d --- /dev/null +++ b/src/main/java/com/ai/da/model/vo/MagicToolResultVO.java @@ -0,0 +1,25 @@ +package com.ai.da.model.vo; + +import io.swagger.annotations.ApiModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@ApiModel("generate result 响应") +@AllArgsConstructor +@NoArgsConstructor +public class MagicToolResultVO { + + private String taskId; + + private Long id; + + private String url; + + private String status; + + private String category; + + private String sourceUrl; +} diff --git a/src/main/java/com/ai/da/model/vo/WorkspaceVO.java b/src/main/java/com/ai/da/model/vo/WorkspaceVO.java index fdc911da..9fd8d049 100644 --- a/src/main/java/com/ai/da/model/vo/WorkspaceVO.java +++ b/src/main/java/com/ai/da/model/vo/WorkspaceVO.java @@ -24,7 +24,7 @@ public class WorkspaceVO extends Workspace { private static final long serialVersionUID = 1L; - private Long currentId; + private Long styleId; private PageBaseResponse page; diff --git a/src/main/java/com/ai/da/service/GenerateService.java b/src/main/java/com/ai/da/service/GenerateService.java index 89fd6267..81b772db 100644 --- a/src/main/java/com/ai/da/service/GenerateService.java +++ b/src/main/java/com/ai/da/service/GenerateService.java @@ -36,4 +36,6 @@ public interface GenerateService extends IService { Long getRankPosition(String uniqueId); void cancelGenerate(Long userId, List uniqueId, String timeZone); + + void processRelightResult(String taskId, String url, String category); } diff --git a/src/main/java/com/ai/da/service/UserLikeGroupService.java b/src/main/java/com/ai/da/service/UserLikeGroupService.java index 05837ef4..9ebc1527 100644 --- a/src/main/java/com/ai/da/service/UserLikeGroupService.java +++ b/src/main/java/com/ai/da/service/UserLikeGroupService.java @@ -47,7 +47,7 @@ public interface UserLikeGroupService extends IService { Boolean productImageLike(ProductImageLikeDTO productImageLikeDTO); - List getToProductImageResultList(List taskIdList); + List getToProductImageResultList(List taskIdList); JSONObject exportSearch(Long userLikeGroupId); @@ -56,4 +56,8 @@ public interface UserLikeGroupService extends IService { List productImageLikeList(ToProductImageDTO toProductImageDTO); Boolean productImageUnLike(ProductImageLikeDTO productImageLikeDTO); + + List relight(ToProductImageDTO toProductImageDTO); + + List getRelightResult(List taskIdList); } diff --git a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java index ec5511bf..12af4462 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -85,6 +85,9 @@ public class GenerateServiceImpl extends ServiceImpl i @Value("${minio.bucketName.slogan}") private String sloganBucket; + @Value("${redis.key.relightResultKey}") + private String relightResultKey; + @Value("${redis.key.toProductImageResultKey}") private String toProductImageResultKey; @@ -282,6 +285,7 @@ public class GenerateServiceImpl extends ServiceImpl i } ToProductImageResult toProductImageResult = toProductImageResults.get(0); toProductImageResult.setUrl(url); + toProductImageResult.setResultType("ToProductImage"); toProductImageResultMapper.updateById(toProductImageResult); String key = toProductImageResultKey + ":" + taskId; @@ -755,6 +759,27 @@ public class GenerateServiceImpl extends ServiceImpl i } + @Override + public void processRelightResult(String taskId, String url, String category) { + QueryWrapper qw = new QueryWrapper<>(); + qw.lambda().eq(ToProductImageResult::getTaskId, taskId); + List toProductImageResults = toProductImageResultMapper.selectList(qw); + if (CollectionUtils.isEmpty(toProductImageResults)) { + return; +// throw new BusinessException(""); + } + ToProductImageResult toProductImageResult = toProductImageResults.get(0); + toProductImageResult.setUrl(url); + toProductImageResult.setResultType("Relight"); + toProductImageResultMapper.updateById(toProductImageResult); + + String key = relightResultKey + ":" + taskId; + String imageName = url.substring(url.lastIndexOf("/") + 1); + String status = imageName.equals("white_image.jpg") ? "Invalid" : "Success"; + GenerateResultVO generateResultVO = new GenerateResultVO(taskId, toProductImageResult.getId(), url, status, category); + redisUtil.addToString(key, new Gson().toJson(generateResultVO), CommonConstant.GENERATE_RESULT_EXPIRE_TIME); + } + // 判断试用用户试用generate机会是否使用完毕 每个board 3次机会 private int getTrialsCount(Long userId, String level1Type) { List getGenerateList = getGenerateByAccountId(userId, level1Type); diff --git a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java index 22024e16..0e645959 100644 --- a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java @@ -321,25 +321,40 @@ public class UserLikeGroupServiceImpl extends ServiceImpl getToProductImageResultList(List taskIdList) { - List results = new ArrayList<>(); + public List getToProductImageResultList(List taskIdList) { + List results = new ArrayList<>(); Set collect = new HashSet<>(); taskIdList.forEach(taskId -> { String key = toProductImageResultKey + ":" + taskId; - GenerateResultVO generateResultVO = new Gson().fromJson(redisUtil.getFromString(key), GenerateResultVO.class); - if (!Objects.isNull(generateResultVO) && !StringUtil.isNullOrEmpty(generateResultVO.getUrl())) { - String url = generateResultVO.getUrl(); + MagicToolResultVO magicToolResultVO = new Gson().fromJson(redisUtil.getFromString(key), MagicToolResultVO.class); + if (!Objects.isNull(magicToolResultVO) && !StringUtil.isNullOrEmpty(magicToolResultVO.getUrl())) { + String url = magicToolResultVO.getUrl(); if (url.substring(url.lastIndexOf("/") + 1).equals("white_image.jpg")) { - generateResultVO.setStatus("Invalid"); + magicToolResultVO.setStatus("Invalid"); } else { - generateResultVO.setUrl(minioUtil.getPresignedUrl(url, CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); + magicToolResultVO.setUrl(minioUtil.getPresignedUrl(url, CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); + QueryWrapper qw = new QueryWrapper<>(); + qw.lambda().eq(ToProductImageResult::getTaskId, taskId); + ToProductImageResult toProductImageResult = toProductImageResultMapper.selectOne(qw); + if (Objects.isNull(toProductImageResult)) { + throw new BusinessException("The source image does not exist."); + } + if (toProductImageResult.getElementType().equals("ProductElement")) { + ToProductElement toProductElement = toProductElementMapper.selectById(toProductImageResult.getElementId()); + magicToolResultVO.setSourceUrl(minioUtil.getPresignedUrl(toProductElement.getUrl(), 24 * 60)); + }else { + UserLike userLike = userLikeMapper.selectById(toProductImageResult.getElementId()); + magicToolResultVO.setSourceUrl(minioUtil.getPresignedUrl(userLike.getUrl(), 24 * 60)); + } } - } else if (Objects.isNull(generateResultVO)) { - generateResultVO = new GenerateResultVO(); + } else if (Objects.isNull(magicToolResultVO)) { + magicToolResultVO = new MagicToolResultVO(); } - if (!StringUtil.isNullOrEmpty(generateResultVO.getStatus())) collect.add(generateResultVO.getStatus()); - results.add(generateResultVO); + if (!StringUtil.isNullOrEmpty(magicToolResultVO.getStatus())) collect.add(magicToolResultVO.getStatus()); + results.add(magicToolResultVO); }); return results; } @@ -408,6 +423,102 @@ public class UserLikeGroupServiceImpl extends ServiceImpl relight(ToProductImageDTO toProductImageDTO) { + AuthPrincipalVo userHolder = UserContext.getUserHolder(); + Long userLikeGroupId = toProductImageDTO.getUserLikeGroupId(); + ToProductImageRecord toProductImageRecord = new ToProductImageRecord(); + toProductImageRecord.setUserLikeGroupId(userLikeGroupId); + toProductImageRecord.setCreateTime(LocalDateTime.now()); + if (!StringUtils.isEmpty(toProductImageDTO.getPrompt())) { + toProductImageRecord.setPrompt(toProductImageDTO.getPrompt()); + } + toProductImageRecordMapper.insert(toProductImageRecord); + + List result = new ArrayList<>(); + + int i = 0; + // 翻译 + String prompt = toProductImageDTO.getPrompt(); + String s = pythonService.promptTranslate(prompt); + for (ToProductImageVO toProductImageVO : toProductImageDTO.getToProductImageVOList()) { + if (toProductImageVO.getElementType().equals("ProductImage")) { + String taskId = UUID.randomUUID() + "-" + i + "-" + userHolder.getId(); + i ++; + ToProductImageResult toProductImageResult1 = toProductImageResultMapper.selectById(toProductImageVO.getElementId()); + // 走模型 + pythonService.toProductImage(toProductImageResult1.getUrl(), taskId, s); + ToProductImageResult toProductImageResult = new ToProductImageResult(); + toProductImageResult.setElementId(toProductImageResult1.getId()); + toProductImageResult.setElementType("ProductImage"); + toProductImageResult.setCreateTime(LocalDateTime.now()); + toProductImageResult.setToProductImageRecordId(toProductImageRecord.getId()); +// toProductImageResult.setUrl(productImageUrl); + toProductImageResult.setIsLike(0); + toProductImageResult.setTaskId(taskId); + toProductImageResult.setUserLikeGroupId(userLikeGroupId); + toProductImageResultMapper.insert(toProductImageResult); +// toProductImageResult.setUrl(minioUtil.getPresignedUrl(toProductImageResult.getUrl(), 24 * 60)); + result.add(toProductImageResult); + }else { + String taskId = UUID.randomUUID() + "-" + i + "-" + userHolder.getId(); + ToProductElement toProductElement = toProductElementMapper.selectById(toProductImageVO.getElementId()); + // 走模型 + pythonService.toProductImage(toProductElement.getUrl(), taskId, s); + ToProductImageResult toProductImageResult = new ToProductImageResult(); + toProductImageResult.setElementId(toProductElement.getId()); + toProductImageResult.setElementType("ProductElement"); + toProductImageResult.setCreateTime(LocalDateTime.now()); + toProductImageResult.setToProductImageRecordId(toProductImageRecord.getId()); +// toProductImageResult.setUrl(productImageUrl); + toProductImageResult.setIsLike(0); + toProductImageResult.setTaskId(taskId); + toProductImageResultMapper.insert(toProductImageResult); +// toProductImageResult.setUrl(minioUtil.getPresignedUrl(toProductImageResult.getUrl(), 24 * 60)); + result.add(toProductImageResult); + } + } + + return result; + } + + @Override + public List getRelightResult(List taskIdList) { + List results = new ArrayList<>(); + Set collect = new HashSet<>(); + taskIdList.forEach(taskId -> { + String key = toProductImageResultKey + ":" + taskId; + MagicToolResultVO magicToolResultVO = new Gson().fromJson(redisUtil.getFromString(key), MagicToolResultVO.class); + if (!Objects.isNull(magicToolResultVO) && !StringUtil.isNullOrEmpty(magicToolResultVO.getUrl())) { + String url = magicToolResultVO.getUrl(); + if (url.substring(url.lastIndexOf("/") + 1).equals("white_image.jpg")) { + magicToolResultVO.setStatus("Invalid"); + } else { + magicToolResultVO.setUrl(minioUtil.getPresignedUrl(url, CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); + QueryWrapper qw = new QueryWrapper<>(); + qw.lambda().eq(ToProductImageResult::getTaskId, taskId); + ToProductImageResult toProductImageResult = toProductImageResultMapper.selectOne(qw); + if (Objects.isNull(toProductImageResult)) { + throw new BusinessException("The source image does not exist."); + } + if (toProductImageResult.getElementType().equals("ProductElement")) { + ToProductElement toProductElement = toProductElementMapper.selectById(toProductImageResult.getElementId()); + magicToolResultVO.setSourceUrl(minioUtil.getPresignedUrl(toProductElement.getUrl(), 24 * 60)); + }else { + ToProductImageResult toProductImageResult1 = toProductImageResultMapper.selectById(toProductImageResult.getElementId()); + magicToolResultVO.setSourceUrl(minioUtil.getPresignedUrl(toProductImageResult1.getUrl(), 24 * 60)); + } + } + } else if (Objects.isNull(magicToolResultVO)) { + magicToolResultVO = new MagicToolResultVO(); + } + if (!StringUtil.isNullOrEmpty(magicToolResultVO.getStatus())) collect.add(magicToolResultVO.getStatus()); + results.add(magicToolResultVO); + }); + return results; + } + public static String convert(InputStream inputStream) { try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) { return reader.lines().collect(Collectors.joining("\n")); diff --git a/src/main/java/com/ai/da/service/impl/WorkspaceServiceImpl.java b/src/main/java/com/ai/da/service/impl/WorkspaceServiceImpl.java index c48995bd..30b55e64 100644 --- a/src/main/java/com/ai/da/service/impl/WorkspaceServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/WorkspaceServiceImpl.java @@ -141,6 +141,14 @@ public class WorkspaceServiceImpl extends ServiceImpl qw = new QueryWrapper<>(); + qw.lambda().eq(WorkspaceRelStyle::getWorkspaceId, workspace.getId()); + List workspaceRelStyles = workspaceRelStyleMapper.selectList(qw); + if (!CollectionUtils.isEmpty(workspaceRelStyles)) { + WorkspaceRelStyle workspaceRelStyle = workspaceRelStyles.get(0); + workspaceRelStyleMapper.deleteById(workspaceRelStyle); + } } return true; } @@ -308,6 +316,7 @@ public class WorkspaceServiceImpl extends ServiceImpl workspaceRelStyles = workspaceRelStyleMapper.selectList(qw); if (!CollectionUtils.isEmpty(workspaceRelStyles)) { Long styleId = workspaceRelStyles.get(0).getStyleId(); + vo.setStyleId(styleId); Style style = styleMapper.selectById(styleId); StyleEnum styleEnum = StyleEnum.fromName(style.getName()); vo.setStyle(styleEnum.name()); From 8c65592394b12907cf4f6f5b0c7990e12aee43c0 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Tue, 25 Jun 2024 16:43:54 +0800 Subject: [PATCH 2/2] TASK:aida; --- src/main/resources/application-dev.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index 4b0ec1e3..21b5e945 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -88,6 +88,7 @@ redis.key.taskList=TaskList redis.key.credits.pre-deduction=Credits:PreDeduction redis.key.generateResult=Generate:Result redis.key.toProductImageResultKey=ToProductImage:Result +redis.key.relightResultKey=Relight:Result aws.s3.accessKeyId=AKIAVD3OJIMF6UJFLSHZ aws.s3.secretKey=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