Ver Fonte

feat(store): 添加视频封面URL列表支持

- 在StoreVideoSaveDto中新增coverUrls字段用于接收视频封面列表
- 在StoreVideoServiceImpl中读取并使用传入的封面URL列表
- 移除自动匹配和处理视频生成封面的逻辑
- 直接使用传入的封面URL进行视频数据组装
- 保持视频和封面的对应关系通过索引绑定
fcw há 3 semanas atrás
pai
commit
dc9fa90f3b

+ 3 - 0
alien-entity/src/main/java/shop/alien/entity/store/dto/StoreVideoSaveDto.java

@@ -30,4 +30,7 @@ public class StoreVideoSaveDto implements Serializable {
     @ApiModelProperty(value = "视频ID列表")
     private List<Integer> videoIds;
 
+    @ApiModelProperty(value = "视频封面列表")
+    private List<String> coverUrls;
+
 }

+ 24 - 22
alien-store/src/main/java/shop/alien/store/service/impl/StoreVideoServiceImpl.java

@@ -83,7 +83,8 @@ public class StoreVideoServiceImpl extends ServiceImpl<StoreVideoMapper, StoreVi
         List<StoreVideo> videoList = new java.util.ArrayList<>();
         List<String> videoUrls = dto.getVideoUrls();
         List<Integer> videoIds = dto.getVideoIds(); // 可选的视频ID列表,用于编辑
-        
+        List<String> coverUrls = dto.getCoverUrls();
+
         // 遍历URL列表,每个URL都是视频URL
         int videoIndex = 0;
         for (int i = 0; i < videoUrls.size(); i++) {
@@ -139,31 +140,32 @@ public class StoreVideoServiceImpl extends ServiceImpl<StoreVideoMapper, StoreVi
             
             // 尝试根据视频URL自动匹配封面URL(从/file/uploadMore接口获取的封面URL格式)
             // 封面URL格式:视频URL的扩展名从.mp4等替换为.jpg
-            String coverUrl = tryMatchCoverUrl(videoUrl);
-            
-            // 如果匹配不到封面URL,尝试处理视频生成封面
-            if (StringUtils.isBlank(coverUrl)) {
-                log.info("未找到匹配的封面URL,视频URL:{},将尝试处理生成封面", videoUrl);
-                try {
-                    // 调用processVideoAndCover处理,生成封面
-                    String processedImgUrl = processVideoAndCover(videoUrl);
-                    if (StringUtils.isNotBlank(processedImgUrl)) {
-                        // 如果处理成功,processedImgUrl已经是JSON格式,直接使用
-                        storeVideo.setImgUrl(processedImgUrl);
-                        videoList.add(storeVideo);
-                        videoIndex++;
-                        continue;
-                    }
-                } catch (Exception e) {
-                    log.error("处理视频封面失败,视频URL:{},错误:{},将保存视频但不包含封面", videoUrl, e.getMessage(), e);
-                    // 处理失败时,继续执行下面的逻辑,保存视频但不包含封面
-                }
-            }
+//            String coverUrl = tryMatchCoverUrl(videoUrl);
+//
+//            // 如果匹配不到封面URL,尝试处理视频生成封面
+//            if (StringUtils.isBlank(coverUrl)) {
+//                log.info("未找到匹配的封面URL,视频URL:{},将尝试处理生成封面", videoUrl);
+//                try {
+//                    // 调用processVideoAndCover处理,生成封面
+//                    String processedImgUrl = processVideoAndCover(videoUrl);
+//                    if (StringUtils.isNotBlank(processedImgUrl)) {
+//                        // 如果处理成功,processedImgUrl已经是JSON格式,直接使用
+//                        storeVideo.setImgUrl(processedImgUrl);
+//                        videoList.add(storeVideo);
+//                        videoIndex++;
+//                        continue;
+//                    }
+//                } catch (Exception e) {
+//                    log.error("处理视频封面失败,视频URL:{},错误:{},将保存视频但不包含封面", videoUrl, e.getMessage(), e);
+//                    // 处理失败时,继续执行下面的逻辑,保存视频但不包含封面
+//                }
+//            }
             
             // 组合成JSON对象格式(即使没有封面也保存)
             JSONObject videoJson = new JSONObject();
             videoJson.put("video", videoUrl);
-            if (StringUtils.isNotBlank(coverUrl)) {
+            String coverUrl = coverUrls.get(i);
+            if (StringUtils.isBlank(coverUrl)) {
                 videoJson.put("cover", coverUrl);
             }