BUGFIX:数据传输过程中long精度发生丢失
This commit is contained in:
@@ -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<String, String> generateResult = new HashMap<>();
|
||||
|
||||
@@ -55,12 +55,14 @@ public class GenerateController {
|
||||
|
||||
@ApiOperation(value = "发起生成请求,异步获取结果")
|
||||
@PostMapping("/prepare")
|
||||
public Response<Long> prepareForGenerate(@Valid @RequestBody GenerateThroughImageTextDTO generateThroughImageTextDTO){
|
||||
return Response.success(generateService.prepareForGenerate(generateThroughImageTextDTO));
|
||||
public Response<String> 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<String> stopWaiting(@RequestParam("uniqueId") Long uniqueId){
|
||||
generateService.cancelGenerate(uniqueId);
|
||||
return Response.success("stop waiting successfully");
|
||||
|
||||
@@ -121,7 +121,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
||||
generateThroughImageTextDTO.getLevel1Type().equals(PRINT_BOARD.getRealName()) ? "print" : "moodboard";
|
||||
AsyncCallerUtil asyncCallerUtil = new AsyncCallerUtil();
|
||||
List<String> 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<String> 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<GenerateMapper, Generate> 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<GenerateMapper, Generate> 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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user