From 164454b5b2b7404c2514037b4e71b511074a9270 Mon Sep 17 00:00:00 2001 From: xupei Date: Mon, 22 Jan 2024 16:21:32 +0800 Subject: [PATCH] =?UTF-8?q?BUGFIX=EF=BC=9A=E6=95=B0=E6=8D=AE=E4=BC=A0?= =?UTF-8?q?=E8=BE=93=E8=BF=87=E7=A8=8B=E4=B8=ADlong=E7=B2=BE=E5=BA=A6?= =?UTF-8?q?=E5=8F=91=E7=94=9F=E4=B8=A2=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ai/da/common/RabbitMQ/MQConsumer.java | 6 ------ .../com/ai/da/controller/GenerateController.java | 8 +++++--- .../ai/da/service/impl/GenerateServiceImpl.java | 16 +++++++++++----- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/ai/da/common/RabbitMQ/MQConsumer.java b/src/main/java/com/ai/da/common/RabbitMQ/MQConsumer.java index bce55fcc..3e9127f5 100644 --- a/src/main/java/com/ai/da/common/RabbitMQ/MQConsumer.java +++ b/src/main/java/com/ai/da/common/RabbitMQ/MQConsumer.java @@ -64,12 +64,6 @@ public class MQConsumer { // 2.2 将该消息从取消列表中删除 redisUtil.removeFromSet(cancelSetKey, String.valueOf(uniqueId)); } else { - try { - // 模拟耗时 - Thread.sleep(40000); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } GenerateCollectionVO generateCollectionVO = generateService.generateThroughImageText(generateThroughImageTextDTO); if (!Objects.isNull(generateCollectionVO)){ HashMap generateResult = new HashMap<>(); diff --git a/src/main/java/com/ai/da/controller/GenerateController.java b/src/main/java/com/ai/da/controller/GenerateController.java index 7b0b0a30..173370f2 100644 --- a/src/main/java/com/ai/da/controller/GenerateController.java +++ b/src/main/java/com/ai/da/controller/GenerateController.java @@ -55,12 +55,14 @@ public class GenerateController { @ApiOperation(value = "发起生成请求,异步获取结果") @PostMapping("/prepare") - public Response prepareForGenerate(@Valid @RequestBody GenerateThroughImageTextDTO generateThroughImageTextDTO){ - return Response.success(generateService.prepareForGenerate(generateThroughImageTextDTO)); + public Response prepareForGenerate(@Valid @RequestBody GenerateThroughImageTextDTO generateThroughImageTextDTO){ + Long l = generateService.prepareForGenerate(generateThroughImageTextDTO); + // 防止long精度丢失,这里转为String类型进行传输 + return Response.success(String.valueOf(l)); } @ApiOperation(value = "取消继续生成") - @PostMapping("/stopWaiting") + @GetMapping("/stopWaiting") public Response stopWaiting(@RequestParam("uniqueId") Long uniqueId){ generateService.cancelGenerate(uniqueId); return Response.success("stop waiting successfully"); 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 8203d379..ba729e4b 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -121,7 +121,7 @@ public class GenerateServiceImpl extends ServiceImpl i generateThroughImageTextDTO.getLevel1Type().equals(PRINT_BOARD.getRealName()) ? "print" : "moodboard"; AsyncCallerUtil asyncCallerUtil = new AsyncCallerUtil(); List generatedSketchUrl = asyncCallerUtil.generate(new GenerateToPythonDTO(accountId, Objects.isNull(collectionElement) ? null : collectionElement.getUrl(), - category, text, mode, "1", generateThroughImageTextDTO.getGender()),0L); + category, text, mode, "1", generateThroughImageTextDTO.getGender()),generateThroughImageTextDTO.getUniqueId()); // List generatedSketchUrl = pythonService.generateSketchOrPrint(new GenerateToPythonDTO(accountId, Objects.isNull(elementId) ? null : collectionElement.getUrl(), // category, text, mode, "1", generateThroughImageTextDTO.getGender())); if (CollectionUtils.isEmpty(generatedSketchUrl)){ @@ -320,7 +320,13 @@ public class GenerateServiceImpl extends ServiceImpl i Long elementId = generateThroughImageTextDTO.getCollectionElementId(); validateGeneraType(new Generate(), text, elementId,generateType); - // 2、生成唯一id + // 2、确定当前排队人数总数,超过15个,暂停使用当前功能 + Long zSetTotal = redisUtil.getZSetTotal(consumptionOrderKey); + if (zSetTotal.equals(15L)){ + return null; + } + + // 3、生成唯一id SnowflakeUtil idWorker = new SnowflakeUtil(0, 0); long snowflakeId = idWorker.nextId(); @@ -330,14 +336,14 @@ public class GenerateServiceImpl extends ServiceImpl i generateThroughImageTextDTO.setUniqueId(snowflakeId); String jsonString = JSON.toJSONString(generateThroughImageTextDTO); - // 3、加入redis排队,便于获取实时排队信息 + // 4、加入redis排队,便于获取实时排队信息 Double maxScore = redisUtil.getMaxScore(consumptionOrderKey); redisUtil.addToZSet(consumptionOrderKey, String.valueOf(snowflakeId),maxScore); - // 4、将消息发布到MQ消息队列 + // 5、将消息发布到MQ消息队列 rabbitMQService.publishMessage(jsonString); - // 5、返回唯一id + // 6、返回唯一id return snowflakeId; }