|
|
@@ -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;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|