Преглед изворни кода

fix:人员配置背景上传视频新添封面图

penghao пре 3 месеци
родитељ
комит
1d13f6236d

+ 8 - 4
alien-entity/src/main/java/shop/alien/entity/store/StoreStaffConfig.java

@@ -37,14 +37,18 @@ public class StoreStaffConfig extends Model<StoreStaffConfig> {
     @TableField("name")
     private String name;
 
-    @ApiModelProperty(value = "背景图片/视频(存储URL逗号分隔)")
-    @TableField("background_url")
-    private String backgroundUrl;
-
     @ApiModelProperty(value = "头像")
     @TableField("staff_image")
     private String staffImage;
 
+    @ApiModelProperty(value = "视频封面图片(存储URL逗号分隔)")
+    @TableField("video_head_url")
+    private String videoHeadUrl;
+
+    @ApiModelProperty(value = "背景图片/视频(存储URL逗号分隔)")
+    @TableField("background_url")
+    private String backgroundUrl;
+
     // @ApiModelProperty(value = "擅长标签id(字典表proficient_tag的dict_id逗号分隔)----废弃!")
     // @TableField("proficient_id")
     // private String proficientId;

+ 82 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffConfigServiceImpl.java

@@ -192,6 +192,11 @@ public class StoreStaffConfigServiceImpl implements StoreStaffConfigService {
             updateTitleStaffCount(storeStaffConfig.getTitleId());
         }
 
+        // 处理视频封面生成
+        if (affected > 0 && StringUtils.isNotEmpty(storeStaffConfig.getBackgroundUrl())) {
+            processVideoCovers(storeStaffConfig);
+        }
+
         // 异步调用AI审核
         storeStaffAuditAsyncService.auditStaffContentAsync(staffId, storeStaffConfig);
 
@@ -1764,4 +1769,81 @@ public class StoreStaffConfigServiceImpl implements StoreStaffConfigService {
             return false;
         }
     }
+
+    /**
+     * 处理视频封面URL生成
+     * 为background_url中的视频文件生成封面URL(通过改变后缀)并保存到video_head_url字段
+     *
+     * @param storeStaffConfig 员工配置信息
+     */
+    private void processVideoCovers(StoreStaffConfig storeStaffConfig) {
+        try {
+            log.info("开始处理视频封面URL生成,staffId={}", storeStaffConfig.getId());
+
+            String backgroundUrl = storeStaffConfig.getBackgroundUrl();
+            if (StringUtils.isEmpty(backgroundUrl)) {
+                return;
+            }
+
+            String[] urls = backgroundUrl.split(",");
+            List<String> videoCoverUrls = new ArrayList<>();
+
+            for (String url : urls) {
+                if (StringUtils.isNotEmpty(url.trim())) {
+                    String trimmedUrl = url.trim();
+                    if (isVideoUrl(trimmedUrl)) {
+                        // 为视频生成封面URL
+                        String coverUrl = generateVideoCover(trimmedUrl);
+                        if (StringUtils.isNotEmpty(coverUrl)) {
+                            videoCoverUrls.add(coverUrl);
+                            log.info("视频封面URL生成成功,视频URL={},封面URL={}", trimmedUrl, coverUrl);
+                        } else {
+                            log.warn("视频封面URL生成失败,视频URL={}", trimmedUrl);
+                        }
+                    }
+                }
+            }
+
+            // 更新video_head_url字段
+            if (!videoCoverUrls.isEmpty()) {
+                String videoHeadUrlStr = String.join(",", videoCoverUrls);
+                StoreStaffConfig updateCover = new StoreStaffConfig();
+                updateCover.setId(storeStaffConfig.getId());
+                updateCover.setVideoHeadUrl(videoHeadUrlStr);
+                storeStaffConfigMapper.updateById(updateCover);
+                log.info("更新视频封面URL成功,staffId={},videoHeadUrl={}", storeStaffConfig.getId(), videoHeadUrlStr);
+            }
+
+        } catch (Exception e) {
+            log.error("处理视频封面URL生成异常,staffId={},异常信息:{}", storeStaffConfig.getId(), e.getMessage(), e);
+        }
+    }
+
+    /**
+     * 为单个视频生成封面URL
+     * 直接通过改变视频URL的后缀来生成封面URL
+     *
+     * @param videoUrl 视频URL
+     * @return 封面图片URL
+     */
+    private String generateVideoCover(String videoUrl) {
+        if (StringUtils.isEmpty(videoUrl)) {
+            return null;
+        }
+
+        try {
+            // 找到最后一个点的位置
+            int lastDotIndex = videoUrl.lastIndexOf('.');
+            if (lastDotIndex == -1) {
+                // 如果没有扩展名,直接添加.jpg
+                return videoUrl + ".jpg";
+            }
+
+            // 替换扩展名为.jpg
+            return videoUrl.substring(0, lastDotIndex) + ".jpg";
+        } catch (Exception e) {
+            log.error("生成视频封面URL异常,videoUrl={},异常信息:{}", videoUrl, e.getMessage(), e);
+            return null;
+        }
+    }
 }