Explorar o código

视频文件的 CRUD

reghao %!s(int64=2) %!d(string=hai) anos
pai
achega
f89a186185

+ 2 - 1
dfs-store/src/main/java/cn/reghao/dfs/store/db/mapper/VideoFileMapper.java

@@ -14,7 +14,8 @@ import java.util.List;
  */
 @Mapper
 public interface VideoFileMapper extends BaseMapper<VideoFile> {
-    void updateSetCover(VideoFile videoFile);
+    void deleteByVideoFileId(String videoFileId);
+
     List<VideoFile> findVideoFileByPage(Page page);
     VideoFile findByVideoFileId(String videoFileId);
     VideoInfo findVideoInfo(String videoFileId);

+ 2 - 2
dfs-store/src/main/java/cn/reghao/dfs/store/db/mapper/VideoUrlMapper.java

@@ -3,7 +3,6 @@ package cn.reghao.dfs.store.db.mapper;
 import cn.reghao.oss.api.dto.media.VideoUrlDto;
 import cn.reghao.dfs.store.model.po.VideoUrl;
 import cn.reghao.jutil.jdk.db.BaseMapper;
-import cn.reghao.jutil.jdk.db.Page;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -14,8 +13,9 @@ import java.util.List;
  */
 @Mapper
 public interface VideoUrlMapper extends BaseMapper<VideoUrl> {
+    void deleteByVideoFileId(String videoFileId);
+
     List<VideoUrlDto> findVideoUrls(String videoFileId);
-    List<VideoUrl> findVideoUrlByPage(Page page);
     List<VideoUrl> findByVideoFileId(String videoFileId);
     VideoUrl findHighestQuality(String videoFileId);
 }

+ 15 - 14
dfs-store/src/main/java/cn/reghao/dfs/store/db/repository/VideoRepository.java

@@ -10,6 +10,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author reghao
@@ -31,6 +32,20 @@ public class VideoRepository {
         videoUrlMapper.save(videoUrl);
     }
 
+    public List<String> deleteVideoFile(String videoFileId) {
+        List<String> objectIds = videoUrlMapper.findByVideoFileId(videoFileId).stream()
+                .map(VideoUrl::getObjectId)
+                .collect(Collectors.toList());
+        deleteVideoFile0(videoFileId);
+        return objectIds;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteVideoFile0(String videoFileId) {
+        videoUrlMapper.deleteByVideoFileId(videoFileId);
+        videoFileMapper.deleteByVideoFileId(videoFileId);
+    }
+
     public VideoInfo getVideoInfo(String videoFileId) {
         return videoFileMapper.findVideoInfo(videoFileId);
     }
@@ -47,18 +62,4 @@ public class VideoRepository {
     public List<VideoUrlDto> findVideoUrls(String videoFileId) {
         return videoUrlMapper.findVideoUrls(videoFileId);
     }
-
-    public List<String> deleteVideoFile(String videoFileId) {
-        List<String> objectIds = new ArrayList<>();
-        List<VideoUrl> list = videoUrlMapper.findByVideoFileId(videoFileId);
-        for (VideoUrl videoUrl : list) {
-            String objectId = videoUrl.getObjectId();
-            objectIds.add(objectId);
-            videoUrlMapper.delete(videoUrl);
-        }
-
-        VideoFile videoFile = videoFileMapper.findByVideoFileId(videoFileId);
-        videoFileMapper.delete(videoFile);
-        return objectIds;
-    }
 }

+ 3 - 2
dfs-store/src/main/java/cn/reghao/dfs/store/model/po/VideoUrl.java

@@ -21,10 +21,10 @@ public class VideoUrl extends BaseObject<Integer> {
     private String urlType;
     private String url;
     private Long bitRate;
-    private String quality;
+    private int quality;
+    private String qualityStr;
     private Integer width;
     private Integer height;
-    private Integer order;
 
     public VideoUrl(String videoFileId, String objectId, String videoCodec, String audioCodec,
                     String urlType, String url, Long bitRate, MediaResolution mediaResolution) {
@@ -36,6 +36,7 @@ public class VideoUrl extends BaseObject<Integer> {
         this.url = url;
         this.bitRate = bitRate;
         this.quality = mediaResolution.getQuality();
+        this.qualityStr = mediaResolution.getQualityStr();
         this.width = mediaResolution.getWidth();
         this.height = mediaResolution.getHeight();
     }

+ 6 - 6
dfs-store/src/main/java/cn/reghao/dfs/store/rpc/media/VideoFileServiceImpl.java

@@ -25,6 +25,12 @@ public class VideoFileServiceImpl implements VideoFileService {
         this.objectRepository = objectRepository;
     }
 
+    @Override
+    public void deleteVideoFile(String videoFileId) {
+        List<String> objectIds = videoRepository.deleteVideoFile(videoFileId);
+        objectRepository.deleteByObjectIds(objectIds);
+    }
+
     @Override
     public VideoInfo getVideoInfo(String videoFileId) {
         return videoRepository.getVideoInfo(videoFileId);
@@ -34,10 +40,4 @@ public class VideoFileServiceImpl implements VideoFileService {
     public List<VideoUrlDto> getVideoUrls(String videoFileId) {
         return videoRepository.findVideoUrls(videoFileId);
     }
-
-    @Override
-    public void deleteVideoFile(String videoFileId) {
-        List<String> objectIds = videoRepository.deleteVideoFile(videoFileId);
-        objectRepository.deleteByObjectIds(objectIds);
-    }
 }

+ 4 - 4
dfs-store/src/main/java/cn/reghao/dfs/store/task/VideoFileProcessor.java

@@ -74,12 +74,12 @@ public class VideoFileProcessor {
             String urlType = videoUrl.getUrlType();
             String url = objectNameService.getObjectUrl(objectName);
             long bitRate = videoUrl.getBitRate();
-            String quality = videoUrl.getQuality();
+            int quality = videoUrl.getQuality();
+            String qualityStr = videoUrl.getQualityStr();
             int width = videoUrl.getWidth();
             int height = videoUrl.getHeight();
-            int order = 1;
-            VideoUrl videoUrl1 = new VideoUrl(videoFileId, videoFileId, videoCodec, audioCodec,
-                    urlType, url, bitRate, quality, width, height, order);
+            VideoUrl videoUrl1 = new VideoUrl(videoFileId, videoFileId, videoCodec, audioCodec, urlType, url,
+                    bitRate, quality, qualityStr, width, height);
 
             videoRepository.saveVideoFile(videoFile1, videoUrl1);
             return new UploadFileRet(videoFileId, url);

+ 6 - 1
dfs-store/src/main/resources/mapper/VideoFileMapper.xml

@@ -9,6 +9,11 @@
         (#{id},#{deleted},#{createTime},#{updateTime},#{videoFileId},#{horizontal},#{duration})
     </insert>
 
+    <delete id="deleteByVideoFileId">
+        delete from video_file
+        where video_file_id=#{videoFileId}
+    </delete>
+
     <select id="findAll" resultType="cn.reghao.dfs.store.model.po.VideoFile">
         select * from video_file
     </select>
@@ -20,7 +25,7 @@
         from video_file
         inner join video_url
         on video_file.video_file_id=video_url.video_file_id and video_file.video_file_id=#{videoFileId}
-        order by video_url.order asc
+        order by video_url.quality desc
         limit 1
     </select>
     <select id="findByVideoFileId" resultType="cn.reghao.dfs.store.model.po.VideoFile">

+ 9 - 7
dfs-store/src/main/resources/mapper/VideoUrlMapper.xml

@@ -4,16 +4,21 @@
 <mapper namespace="cn.reghao.dfs.store.db.mapper.VideoUrlMapper">
     <insert id="save" useGeneratedKeys="true" keyProperty="id">
         insert into video_url
-        (`video_file_id`,`object_id`,`video_codec`,`audio_codec`,`url_type`,`url`,`bit_rate`,`quality`,`width`,`height`,`order`)
+        (`video_file_id`,`object_id`,`video_codec`,`audio_codec`,`url_type`,`url`,`bit_rate`,`quality`,`quality_str`,`width`,`height`)
         values
-        (#{videoFileId},#{objectId},#{videoCodec},#{audioCodec},#{urlType},#{url},#{bitRate},#{quality},#{width},#{height},#{order})
+        (#{videoFileId},#{objectId},#{videoCodec},#{audioCodec},#{urlType},#{url},#{bitRate},#{quality},#{qualityStr},#{width},#{height})
     </insert>
 
+    <delete id="deleteByVideoFileId">
+        delete from video_url
+        where video_file_id=#{videoFileId}
+    </delete>
+
     <select id="findAll" resultType="cn.reghao.dfs.store.model.po.VideoUrl">
         select * from video_url
     </select>
     <select id="findVideoUrls" resultType="cn.reghao.oss.api.dto.media.VideoUrlDto">
-        select url_type as type,url,width,height,quality
+        select url_type as type,url,width,height,quality_str as quality
         from video_url
         where video_file_id=#{videoFileId}
     </select>
@@ -22,13 +27,10 @@
         from video_url
         where video_file_id=#{videoFileId}
     </select>
-    <select id="findVideoUrlByPage" resultType="cn.reghao.dfs.store.model.po.VideoUrl">
-        select *
-        from video_url
-    </select>
     <select id="findHighestQuality" resultType="cn.reghao.dfs.store.model.po.VideoUrl">
         select *
         from video_url
+        order by quality desc
         limit 1
     </select>
 </mapper>

+ 1 - 1
oss-api/src/main/java/cn/reghao/oss/api/dto/media/VideoInfo.java

@@ -16,7 +16,7 @@ import java.io.Serializable;
 public class VideoInfo implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    private String videoId;
+    private String videoFileId;
     // 单位秒
     private Integer duration;
     private Boolean horizontal;

+ 1 - 1
oss-api/src/main/java/cn/reghao/oss/api/iface/media/VideoFileService.java

@@ -10,7 +10,7 @@ import java.util.List;
  * @date 2023-08-28 15:46:17
  */
 public interface VideoFileService {
+    void deleteVideoFile(String videoFileId);
     VideoInfo getVideoInfo(String videoFileId);
     List<VideoUrlDto> getVideoUrls(String videoFileId);
-    void deleteVideoFile(String videoFileId);
 }