diff --git a/backend/src/main/java/com/designhub/service/TaskItemService.java b/backend/src/main/java/com/designhub/service/TaskItemService.java index 6082e7f..49ad315 100644 --- a/backend/src/main/java/com/designhub/service/TaskItemService.java +++ b/backend/src/main/java/com/designhub/service/TaskItemService.java @@ -288,39 +288,36 @@ public class TaskItemService { throw new BusinessException(ResultCode.TASK_STATUS_ERROR, "只能完结进行中的子任务"); } - // 4. 检查是否启用第三方素材API验证 + // 4. 检查第三方素材API配置并验证 String downloadUrl = null; boolean externalApiEnabled = "true".equalsIgnoreCase( systemConfigService.getConfigValue("external_asset_api_enabled", "false")); - if (externalApiEnabled) { - // 调用第三方素材API验证任务完成状态 - String taskNo = item.getItemNo(); // 使用子任务编号作为任务号 - - try { - downloadUrl = externalAssetService.checkTaskCompletion(taskNo); - } catch (Exception e) { - log.warn("调用第三方素材API失败: {}", e.getMessage()); - // API调用失败时,提示用户 - throw new BusinessException(ResultCode.ERROR, - "素材API验证失败,请稍后重试或联系管理员"); - } - - if (downloadUrl == null) { - // 如果第三方API未返回下载链接,提示用户去上传素材 - throw new BusinessException(ResultCode.ERROR, - "素材未提交,请先前往 3D.YYDD.AI 提交任务素材后再完结任务"); - } - - log.info("第三方素材API返回下载链接: {}", downloadUrl); - } else { - // 未启用第三方API,允许直接完结任务 - log.info("第三方素材API未启用,直接完结任务: itemId={}", itemId); - // 如果有传入deliveryPath,则使用它 - if (deliveryPath != null && !deliveryPath.trim().isEmpty()) { - downloadUrl = deliveryPath; - } + if (!externalApiEnabled) { + // 未启用第三方API,不允许完结任务 + throw new BusinessException(ResultCode.ERROR, + "请先在系统设置中启用并配置第三方素材API后才能完结任务"); } + + // 调用第三方素材API验证任务完成状态 + String taskNo = item.getItemNo(); // 使用子任务编号作为任务号 + + try { + downloadUrl = externalAssetService.checkTaskCompletion(taskNo); + } catch (Exception e) { + log.warn("调用第三方素材API失败: {}", e.getMessage()); + // API调用失败时,提示用户 + throw new BusinessException(ResultCode.ERROR, + "素材API验证失败: " + e.getMessage()); + } + + if (downloadUrl == null || downloadUrl.trim().isEmpty()) { + // 如果第三方API未返回下载链接,提示用户去上传素材 + throw new BusinessException(ResultCode.ERROR, + "素材未提交,请先前往 3D.YYDD.AI 提交任务素材后再完结任务"); + } + + log.info("第三方素材API返回下载链接: {}", downloadUrl); // 5. 更新子任务状态 item.setStatus("completed");