|
@@ -13,6 +13,7 @@ import vip.xiaonuo.disk.domain.ResourceFile;
|
|
|
import vip.xiaonuo.disk.domain.ResourceUserFile;
|
|
import vip.xiaonuo.disk.domain.ResourceUserFile;
|
|
|
import vip.xiaonuo.disk.domain.UserFile;
|
|
import vip.xiaonuo.disk.domain.UserFile;
|
|
|
import vip.xiaonuo.disk.dto.file.TranscodingReqDTO;
|
|
import vip.xiaonuo.disk.dto.file.TranscodingReqDTO;
|
|
|
|
|
+import vip.xiaonuo.disk.dto.file.TranscodingResourceReqDTO;
|
|
|
import vip.xiaonuo.disk.mapper.FileMapper;
|
|
import vip.xiaonuo.disk.mapper.FileMapper;
|
|
|
import vip.xiaonuo.disk.mapper.ResourceFileMapper;
|
|
import vip.xiaonuo.disk.mapper.ResourceFileMapper;
|
|
|
import vip.xiaonuo.disk.mapper.ResourceUserFileMapper;
|
|
import vip.xiaonuo.disk.mapper.ResourceUserFileMapper;
|
|
@@ -24,6 +25,8 @@ import vip.xiaonuo.disk.util.VideoConverter;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
|
+import java.util.Arrays;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 资源转码 service
|
|
* 资源转码 service
|
|
@@ -109,47 +112,84 @@ public class TranscodingServiceImpl implements TranscodingService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public CommonResult<String> transcodingResource(TranscodingReqDTO transcodingReqDTO) {
|
|
|
|
|
|
|
+ public CommonResult<String> transcodingResource(TranscodingResourceReqDTO transcodingResourceReqDTO) {
|
|
|
// 校验目标文件是否存在,是否是本人的
|
|
// 校验目标文件是否存在,是否是本人的
|
|
|
String userId = StpLoginUserUtil.getLoginUser().getId();
|
|
String userId = StpLoginUserUtil.getLoginUser().getId();
|
|
|
QueryWrapper<ResourceUserFile> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<ResourceUserFile> queryWrapper = new QueryWrapper<>();
|
|
|
- queryWrapper.lambda().eq(ResourceUserFile::getFileId, transcodingReqDTO.getFileId());
|
|
|
|
|
|
|
+ queryWrapper.lambda().eq(ResourceUserFile::getUserFileId, transcodingResourceReqDTO.getUserFileId());
|
|
|
ResourceUserFile userFile = resourceUserFileMapper.selectOne(queryWrapper);
|
|
ResourceUserFile userFile = resourceUserFileMapper.selectOne(queryWrapper);
|
|
|
if (userFile == null || !userFile.getUserId().equals(userId)) {
|
|
if (userFile == null || !userFile.getUserId().equals(userId)) {
|
|
|
return CommonResult.error("文件不存在或不是本人的");
|
|
return CommonResult.error("文件不存在或不是本人的");
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ List<String> videoList= Arrays.asList("wmv","avi","flv","mpeg","mpg","rmvb","mov");
|
|
|
|
|
+
|
|
|
|
|
+ List<String> wordList= Arrays.asList("doc","docx","ppt","pptx","xls","xlsx");
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
ResourceFile fileBean = resourceFileMapper.selectById(userFile.getFileId());
|
|
ResourceFile fileBean = resourceFileMapper.selectById(userFile.getFileId());
|
|
|
if (fileBean == null) {
|
|
if (fileBean == null) {
|
|
|
return CommonResult.error("文件不存在");
|
|
return CommonResult.error("文件不存在");
|
|
|
}
|
|
}
|
|
|
|
|
+ if(videoList.contains(userFile.getExtendName())){
|
|
|
|
|
+ transcodingResourceReqDTO.setTranscodingType(0);
|
|
|
|
|
+ transcodingResourceReqDTO.setFormat("mp4");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if(wordList.contains(userFile.getExtendName())){
|
|
|
|
|
+ transcodingResourceReqDTO.setTranscodingType(1);
|
|
|
|
|
+ transcodingResourceReqDTO.setFormat("pdf");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
// 构建转码格式列表
|
|
// 构建转码格式列表
|
|
|
ArrayList<String> formatList = new ArrayList<>();
|
|
ArrayList<String> formatList = new ArrayList<>();
|
|
|
- formatList.add(transcodingReqDTO.getFormat());
|
|
|
|
|
|
|
+ formatList.add(transcodingResourceReqDTO.getFormat());
|
|
|
// 判断视频还是图片
|
|
// 判断视频还是图片
|
|
|
- if (transcodingReqDTO.getTranscodingType() == 0) {
|
|
|
|
|
|
|
+ if (transcodingResourceReqDTO.getTranscodingType() == 0) {
|
|
|
try {
|
|
try {
|
|
|
// 转码视频
|
|
// 转码视频
|
|
|
// mp4 wmv avi flv mpeg mpg rmvb mov 互相转
|
|
// mp4 wmv avi flv mpeg mpg rmvb mov 互相转
|
|
|
- videoConverter.convertAndUpload(fileBean.getFileUrl(), fileBean.getFileId(), new String[]{transcodingReqDTO.getFormat()});
|
|
|
|
|
- // 转换后把文件信息新增到数据库
|
|
|
|
|
- saveResourceFile(fileBean, transcodingReqDTO);
|
|
|
|
|
|
|
+ videoConverter.convertAndUpload(fileBean.getFileUrl(), fileBean.getFileId(), new String[]{transcodingResourceReqDTO.getFormat()});
|
|
|
|
|
+ //根据文件id修改预览地址
|
|
|
|
|
+ if(videoList.contains(userFile.getExtendName())||wordList.contains(userFile.getExtendName())){
|
|
|
|
|
+ ResourceFile newFile = new ResourceFile();
|
|
|
|
|
+ newFile.setFileId(fileBean.getFileId());
|
|
|
|
|
+ newFile.setPreviewFileUrl("converted/" + fileBean.getFileId() + "." + transcodingResourceReqDTO.getFormat());
|
|
|
|
|
+ resourceFileMapper.updateById(newFile);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ ResourceFile newFile = new ResourceFile();
|
|
|
|
|
+ newFile.setFileId(fileBean.getFileId());
|
|
|
|
|
+ newFile.setPreviewFileUrl(fileBean.getFileUrl());
|
|
|
|
|
+ resourceFileMapper.updateById(newFile);
|
|
|
|
|
+ }
|
|
|
} catch (Exception ex) {
|
|
} catch (Exception ex) {
|
|
|
log.error(ex.getMessage());
|
|
log.error(ex.getMessage());
|
|
|
return CommonResult.error("格式转换失败");
|
|
return CommonResult.error("格式转换失败");
|
|
|
}
|
|
}
|
|
|
- } else if (transcodingReqDTO.getTranscodingType() == 1) {
|
|
|
|
|
|
|
+ } else if (transcodingResourceReqDTO.getTranscodingType() == 1) {
|
|
|
// 转码文档
|
|
// 转码文档
|
|
|
// pdf doc docx ppt pptx xls xlsx
|
|
// pdf doc docx ppt pptx xls xlsx
|
|
|
// doc转docx,ppt转pptx,xls转xlsx 所有均转pdf
|
|
// doc转docx,ppt转pptx,xls转xlsx 所有均转pdf
|
|
|
// 判断目标格式
|
|
// 判断目标格式
|
|
|
try {
|
|
try {
|
|
|
- if ("pdf".equals(transcodingReqDTO.getFormat())) {
|
|
|
|
|
- pdfUtils.convertToPdf(fileBean.getFileUrl(), fileBean.getFileId() + "." + transcodingReqDTO.getFormat());
|
|
|
|
|
|
|
+ if ("pdf".equals(transcodingResourceReqDTO.getFormat())) {
|
|
|
|
|
+ pdfUtils.convertToPdf(fileBean.getFileUrl(), fileBean.getFileId() + "." + transcodingResourceReqDTO.getFormat());
|
|
|
} else {
|
|
} else {
|
|
|
- officeConverter.convertAndUpload(fileBean.getFileUrl(), fileBean.getFileId() + "." + transcodingReqDTO.getFormat());
|
|
|
|
|
|
|
+ officeConverter.convertAndUpload(fileBean.getFileUrl(), fileBean.getFileId() + "." + transcodingResourceReqDTO.getFormat());
|
|
|
|
|
+ }
|
|
|
|
|
+ //根据文件id修改预览地址
|
|
|
|
|
+ if(videoList.contains(userFile.getExtendName())||wordList.contains(userFile.getExtendName())){
|
|
|
|
|
+ ResourceFile newFile = new ResourceFile();
|
|
|
|
|
+ newFile.setFileId(fileBean.getFileId());
|
|
|
|
|
+ newFile.setPreviewFileUrl("converted/" + fileBean.getFileId() + "." + transcodingResourceReqDTO.getFormat());
|
|
|
|
|
+ resourceFileMapper.updateById(newFile);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ ResourceFile newFile = new ResourceFile();
|
|
|
|
|
+ newFile.setFileId(fileBean.getFileId());
|
|
|
|
|
+ newFile.setPreviewFileUrl(fileBean.getFileUrl());
|
|
|
|
|
+ resourceFileMapper.updateById(newFile);
|
|
|
}
|
|
}
|
|
|
- // 转换后把文件信息新增到数据库
|
|
|
|
|
- saveResourceFile(fileBean, transcodingReqDTO);
|
|
|
|
|
} catch (Exception ex) {
|
|
} catch (Exception ex) {
|
|
|
log.error("格式转换:"+ex.getMessage());
|
|
log.error("格式转换:"+ex.getMessage());
|
|
|
return CommonResult.error("格式转换失败");
|
|
return CommonResult.error("格式转换失败");
|
|
@@ -158,12 +198,6 @@ public class TranscodingServiceImpl implements TranscodingService {
|
|
|
return CommonResult.ok("格式转换成功");
|
|
return CommonResult.ok("格式转换成功");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public void saveResourceFile(ResourceFile fileBean, TranscodingReqDTO transcodingReqDTO) {
|
|
|
|
|
- ResourceFile newFile = new ResourceFile();
|
|
|
|
|
- newFile.setFileId(fileBean.getFileId());
|
|
|
|
|
- newFile.setPreviewFileUrl("converted/" + fileBean.getFileId() + "." + transcodingReqDTO.getFormat());
|
|
|
|
|
- resourceFileMapper.updateById(newFile);
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|