From 3d11d48ddecfa9f6d081dd7db469ae0c6bcf1da2 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 22 Jan 2026 17:11:02 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=97=B6productBarcodes=E6=95=B0=E7=BB=84?= =?UTF-8?q?=E8=BD=AC=E5=AD=97=E7=AC=A6=E4=B8=B2=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designhub/controller/TaskController.java | 34 ++++++++++++++++--- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/backend/src/main/java/com/designhub/controller/TaskController.java b/backend/src/main/java/com/designhub/controller/TaskController.java index 38302a9..2d0cdbc 100644 --- a/backend/src/main/java/com/designhub/controller/TaskController.java +++ b/backend/src/main/java/com/designhub/controller/TaskController.java @@ -37,13 +37,37 @@ public class TaskController { @Operation(summary = "创建任务", description = "发起新的设计任务") @PostMapping - public Result createTask(@RequestBody Task task, @RequestHeader("Authorization") String authHeader) { - log.info("创建任务: {}", task.getTitle()); + public Result createTask(@RequestBody Object taskData, @RequestHeader("Authorization") String authHeader) { String token = jwtUtil.extractTokenFromHeader(authHeader); Long userId = jwtUtil.getUserIdFromToken(token); - task.setPublisherId(userId); - Long taskId = taskService.createTask(task); - return Result.success(taskId); + + try { + com.fasterxml.jackson.databind.ObjectMapper objectMapper = new com.fasterxml.jackson.databind.ObjectMapper(); + String json = objectMapper.writeValueAsString(taskData); + com.fasterxml.jackson.databind.JsonNode jsonNode = objectMapper.readTree(json); + + // 处理 productBarcodes 字段:如果是数组,转换为逗号分隔的字符串 + if (jsonNode.has("productBarcodes") && jsonNode.get("productBarcodes").isArray()) { + com.fasterxml.jackson.databind.node.ArrayNode barcodesArray = (com.fasterxml.jackson.databind.node.ArrayNode) jsonNode.get("productBarcodes"); + java.util.List barcodesList = new java.util.ArrayList<>(); + for (com.fasterxml.jackson.databind.JsonNode barcodeNode : barcodesArray) { + if (barcodeNode.isTextual()) { + barcodesList.add(barcodeNode.asText()); + } + } + String barcodesString = String.join(",", barcodesList); + ((com.fasterxml.jackson.databind.node.ObjectNode) jsonNode).put("productBarcodes", barcodesString); + } + + Task task = objectMapper.treeToValue(jsonNode, Task.class); + log.info("创建任务: {}", task.getTitle()); + task.setPublisherId(userId); + Long taskId = taskService.createTask(task); + return Result.success(taskId); + } catch (Exception e) { + log.error("解析任务数据失败", e); + throw new com.designhub.exception.BusinessException(com.designhub.common.ResultCode.PARAM_ERROR, "任务数据格式错误"); + } } @Operation(summary = "创建流水线任务", description = "创建包含多个子任务的流水线任务")