|
@@ -9,9 +9,13 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
|
|
import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
|
|
|
import vip.xiaonuo.common.pojo.CommonResult;
|
|
import vip.xiaonuo.common.pojo.CommonResult;
|
|
|
import vip.xiaonuo.disk.domain.FileBean;
|
|
import vip.xiaonuo.disk.domain.FileBean;
|
|
|
|
|
+import vip.xiaonuo.disk.domain.ResourceFile;
|
|
|
|
|
+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.mapper.FileMapper;
|
|
import vip.xiaonuo.disk.mapper.FileMapper;
|
|
|
|
|
+import vip.xiaonuo.disk.mapper.ResourceFileMapper;
|
|
|
|
|
+import vip.xiaonuo.disk.mapper.ResourceUserFileMapper;
|
|
|
import vip.xiaonuo.disk.mapper.UserFileMapper;
|
|
import vip.xiaonuo.disk.mapper.UserFileMapper;
|
|
|
import vip.xiaonuo.disk.service.TranscodingService;
|
|
import vip.xiaonuo.disk.service.TranscodingService;
|
|
|
import vip.xiaonuo.disk.util.OfficeConverter;
|
|
import vip.xiaonuo.disk.util.OfficeConverter;
|
|
@@ -44,6 +48,15 @@ public class TranscodingServiceImpl implements TranscodingService {
|
|
|
@Resource
|
|
@Resource
|
|
|
private OfficeConverter officeConverter;
|
|
private OfficeConverter officeConverter;
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private ResourceUserFileMapper resourceUserFileMapper;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private ResourceFileMapper resourceFileMapper;
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public CommonResult<String> transcodingVideo(TranscodingReqDTO transcodingReqDTO) {
|
|
public CommonResult<String> transcodingVideo(TranscodingReqDTO transcodingReqDTO) {
|
|
@@ -95,6 +108,63 @@ public class TranscodingServiceImpl implements TranscodingService {
|
|
|
return CommonResult.ok("格式转换成功");
|
|
return CommonResult.ok("格式转换成功");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public CommonResult<String> transcodingResource(TranscodingReqDTO transcodingReqDTO) {
|
|
|
|
|
+ // 校验目标文件是否存在,是否是本人的
|
|
|
|
|
+ String userId = StpLoginUserUtil.getLoginUser().getId();
|
|
|
|
|
+ QueryWrapper<ResourceUserFile> queryWrapper = new QueryWrapper<>();
|
|
|
|
|
+ queryWrapper.lambda().eq(ResourceUserFile::getFileId, transcodingReqDTO.getFileId());
|
|
|
|
|
+ ResourceUserFile userFile = resourceUserFileMapper.selectOne(queryWrapper);
|
|
|
|
|
+ if (userFile == null || !userFile.getUserId().equals(userId)) {
|
|
|
|
|
+ return CommonResult.error("文件不存在或不是本人的");
|
|
|
|
|
+ }
|
|
|
|
|
+ ResourceFile fileBean = resourceFileMapper.selectById(userFile.getFileId());
|
|
|
|
|
+ if (fileBean == null) {
|
|
|
|
|
+ return CommonResult.error("文件不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ // 构建转码格式列表
|
|
|
|
|
+ ArrayList<String> formatList = new ArrayList<>();
|
|
|
|
|
+ formatList.add(transcodingReqDTO.getFormat());
|
|
|
|
|
+ // 判断视频还是图片
|
|
|
|
|
+ if (transcodingReqDTO.getTranscodingType() == 0) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 转码视频
|
|
|
|
|
+ // mp4 wmv avi flv mpeg mpg rmvb mov 互相转
|
|
|
|
|
+ videoConverter.convertAndUpload(fileBean.getFileUrl(), fileBean.getFileId(), new String[]{transcodingReqDTO.getFormat()});
|
|
|
|
|
+ // 转换后把文件信息新增到数据库
|
|
|
|
|
+ saveResourceFile(fileBean, transcodingReqDTO);
|
|
|
|
|
+ } catch (Exception ex) {
|
|
|
|
|
+ log.error(ex.getMessage());
|
|
|
|
|
+ return CommonResult.error("格式转换失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ } else if (transcodingReqDTO.getTranscodingType() == 1) {
|
|
|
|
|
+ // 转码文档
|
|
|
|
|
+ // pdf doc docx ppt pptx xls xlsx
|
|
|
|
|
+ // doc转docx,ppt转pptx,xls转xlsx 所有均转pdf
|
|
|
|
|
+ // 判断目标格式
|
|
|
|
|
+ try {
|
|
|
|
|
+ if ("pdf".equals(transcodingReqDTO.getFormat())) {
|
|
|
|
|
+ pdfUtils.convertToPdf(fileBean.getFileUrl(), fileBean.getFileId() + "." + transcodingReqDTO.getFormat());
|
|
|
|
|
+ } else {
|
|
|
|
|
+ officeConverter.convertAndUpload(fileBean.getFileUrl(), fileBean.getFileId() + "." + transcodingReqDTO.getFormat());
|
|
|
|
|
+ }
|
|
|
|
|
+ // 转换后把文件信息新增到数据库
|
|
|
|
|
+ saveResourceFile(fileBean, transcodingReqDTO);
|
|
|
|
|
+ } catch (Exception ex) {
|
|
|
|
|
+ log.error("格式转换:"+ex.getMessage());
|
|
|
|
|
+ return CommonResult.error("格式转换失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ 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);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 封装参数,存储进数据库
|
|
* 封装参数,存储进数据库
|