From bb35045ff2d82d3bfcf637974fd74b93bfa53577 Mon Sep 17 00:00:00 2001 From: old burden Date: Tue, 31 Mar 2026 14:40:52 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BA=A4=E4=BA=92=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/api/PortalVideoController.java | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/PortalVideoController.java b/ruoyi-admin/src/main/java/com/ruoyi/api/PortalVideoController.java index f1b9afb..90def38 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/PortalVideoController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/PortalVideoController.java @@ -268,20 +268,30 @@ public class PortalVideoController extends BaseController { public AjaxResult imageReference(@RequestBody PortalVideoGenRequest request) { List contentList; if (request.getContent() != null && !request.getContent().isEmpty()) { - contentList = request.getContent(); + contentList = new ArrayList<>(request.getContent()); ContentItem head = contentList.get(0); if (head == null || !"text".equals(head.getType()) || StringUtils.isEmpty(head.getText())) { return AjaxResult.error("请输入视频描述文本(首条须为 type=text,可含 [图n] 占位)"); } + // 保留 text + 合法 reference_image;允许“只有 text 没有参考图” + List filtered = new ArrayList<>(); + filtered.add(head); + for (int i = 1; i < contentList.size(); i++) { + ContentItem it = contentList.get(i); + if (isReferenceImageContentItem(it)) { + filtered.add(it); + } + } + contentList = filtered; + String firstRef = contentList.stream() + .skip(1) .filter(PortalVideoController::isReferenceImageContentItem) .map(it -> it.getImageUrl().getUrl()) .findFirst() .orElse(null); - if (StringUtils.isEmpty(firstRef)) { - return AjaxResult.error("请上传参考图(content 中须含 image_url + role=reference_image)"); - } - if (StringUtils.isEmpty(request.getReferenceUrl())) { + // 无参考图也允许,仅 text 提示词 + if (StringUtils.isNotEmpty(firstRef) && StringUtils.isEmpty(request.getReferenceUrl())) { request.setReferenceUrl(firstRef); } } else { @@ -318,7 +328,11 @@ public class PortalVideoController extends BaseController { return false; } ImageUrl iu = item.getImageUrl(); - return iu != null && StringUtils.isNotEmpty(iu.getUrl()); + if (iu == null || StringUtils.isEmpty(iu.getUrl())) { + return false; + } + String url = iu.getUrl().trim().toLowerCase(); + return url.startsWith("http://") || url.startsWith("https://"); } private List buildTextAndFirstFrame(String text, String firstUrl) {