CaseVideoServiceImpl.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package com.fdkankan.fusion.service.impl;
  2. import cn.hutool.core.io.FileUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.fdkankan.fusion.common.ResultCode;
  6. import com.fdkankan.fusion.common.FilePath;
  7. import com.fdkankan.fusion.common.ResultCode;
  8. import com.fdkankan.fusion.common.util.UploadToOssUtil;
  9. import com.fdkankan.fusion.common.util.VideoUtil;
  10. import com.fdkankan.fusion.entity.CaseEntity;
  11. import com.fdkankan.fusion.entity.CaseVideoFolder;
  12. import com.fdkankan.fusion.exception.BusinessException;
  13. import com.fdkankan.fusion.entity.CaseVideo;
  14. import com.fdkankan.fusion.mapper.ICaseVideoMapper;
  15. import com.fdkankan.fusion.request.CaseParam;
  16. import com.fdkankan.fusion.request.CaseVideoParam;
  17. import com.fdkankan.fusion.service.ICaseService;
  18. import com.fdkankan.fusion.service.ICaseVideoFolderService;
  19. import com.fdkankan.fusion.service.ICaseVideoService;
  20. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  21. import org.apache.commons.lang3.StringUtils;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.beans.factory.annotation.Value;
  24. import org.springframework.stereotype.Service;
  25. import org.springframework.web.multipart.MultipartFile;
  26. import java.io.File;
  27. import java.io.IOException;
  28. import java.lang.reflect.Field;
  29. import java.util.ArrayList;
  30. import java.util.LinkedHashSet;
  31. import java.util.List;
  32. /**
  33. * <p>
  34. * 服务实现类
  35. * </p>
  36. *
  37. * @author
  38. * @since 2022-07-29
  39. */
  40. @Service
  41. public class CaseVideoServiceImpl extends ServiceImpl<ICaseVideoMapper, CaseVideo> implements ICaseVideoService {
  42. @Autowired
  43. UploadToOssUtil uploadToOssUtil;
  44. @Autowired
  45. ICaseVideoFolderService videoFolderService;
  46. @Autowired
  47. ICaseService caseService;
  48. @Autowired
  49. UploadService uploadService;
  50. @Value("${upload.query-path}")
  51. private String queryPath;
  52. @Override
  53. public List<CaseVideo> getAllList(Integer folderId) {
  54. if(folderId == null){
  55. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  56. }
  57. QueryWrapper<CaseVideo> wrapper = new QueryWrapper<>();
  58. wrapper.lambda().eq(CaseVideo::getFolderId,folderId);
  59. wrapper.lambda().orderByAsc(CaseVideo::getSort);
  60. wrapper.lambda().orderByAsc(CaseVideo::getCreateTime);
  61. return this.list(wrapper);
  62. }
  63. @Override
  64. public void uploadAddVideo(MultipartFile[] files, Integer folderId,Integer caseId) throws IOException {
  65. if(files.length <=0 || caseId == null){
  66. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  67. }
  68. CaseEntity caseEntity = caseService.getById(caseId);
  69. if(caseEntity == null){
  70. throw new BusinessException(ResultCode.CASE_NOT_EXIST);
  71. }
  72. CaseVideoFolder videoFolder = videoFolderService.getByIdIfNotNew(folderId,caseId);
  73. if(videoFolder == null){
  74. throw new BusinessException(ResultCode.FOLDER_NOT_EXIST);
  75. }
  76. uploadService.deleteOssUrl(videoFolder.getVideoMergeUrl());
  77. uploadService.deleteOssUrl(videoFolder.getVideoFolderCover());
  78. this.deleteByFolderId(folderId);
  79. //替换文件夹中文件
  80. List<CaseVideo> videoList = new ArrayList<>();
  81. Integer sort = 1;
  82. LinkedHashSet<String> filePathSet = new LinkedHashSet<>();
  83. for (MultipartFile file : files) {
  84. String ossPath = uploadService.uploadFile(file, true, String.format(FilePath.VIDEO_OSS_PATH,videoFolder.getVideoFolderId())+"/",filePathSet);
  85. String suffixName = ossPath.substring(ossPath.lastIndexOf("."));
  86. CaseVideo caseVideo = new CaseVideo();
  87. caseVideo.setFolderId(videoFolder.getVideoFolderId());
  88. caseVideo.setVideoPath(ossPath);
  89. caseVideo.setVideoName(file.getName());
  90. caseVideo.setVideoCover(ossPath.replace(suffixName,".jpg"));
  91. caseVideo.setSort(sort);
  92. videoList.add(caseVideo);
  93. sort ++;
  94. }
  95. this.saveBatch(videoList);
  96. String mergeLocalName = VideoUtil.mergeVideo(filePathSet, FilePath.VIDEO_LOCAL_PATH);
  97. if(mergeLocalName == null){
  98. throw new BusinessException(ResultCode.MERGER_VIDEO_ERROR);
  99. }
  100. String mergeLocalPath = FilePath.VIDEO_LOCAL_PATH +"/"+mergeLocalName;
  101. String ossKey = String.format(FilePath.VIDEO_OSS_PATH,videoFolder.getVideoFolderId()) +"/"+mergeLocalName;
  102. String mergeLocalPathImg = FilePath.VIDEO_LOCAL_PATH +"/"+mergeLocalName.replace(".mp4",".jpg");
  103. String ossKeyImg = String.format(FilePath.VIDEO_OSS_PATH,videoFolder.getVideoFolderId()) +"/"+mergeLocalName.replace(".mp4",".jpg");
  104. uploadToOssUtil.upload(mergeLocalPath,ossKey);
  105. uploadToOssUtil.upload(mergeLocalPathImg,ossKeyImg);
  106. videoFolder.setVideoMergeUrl(queryPath + ossKey);
  107. videoFolder.setVideoFolderCover(queryPath + ossKeyImg);
  108. videoFolderService.updateById(videoFolder);
  109. FileUtil.del(FilePath.VIDEO_LOCAL_PATH);
  110. }
  111. @Override
  112. public void deleteByFolderId(Integer videoFolderId) {
  113. LambdaQueryWrapper<CaseVideo> wrapper = new LambdaQueryWrapper<>();
  114. wrapper.eq(CaseVideo::getFolderId,videoFolderId);
  115. List<CaseVideo> list = this.list(wrapper);
  116. if(list.size() <=0){
  117. return;
  118. }
  119. for (CaseVideo caseVideo : list) {
  120. this.delete(caseVideo.getVideoId());
  121. }
  122. }
  123. @Override
  124. public void delete(Integer videoId) {
  125. CaseVideo caseVideo = this.getById(videoId);
  126. this.removeById(videoId);
  127. uploadService.deleteOssUrl(caseVideo.getVideoPath());
  128. uploadService.deleteOssUrl(caseVideo.getVideoCover());
  129. }
  130. }