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 = "创建包含多个子任务的流水线任务")