|
|
@@ -1,9 +1,11 @@
|
|
|
package vip.xiaonuo.disk.service.impl;
|
|
|
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.qiwenshare.common.util.DateUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.kafka.clients.consumer.ConsumerRecord;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
|
|
|
@@ -26,6 +28,7 @@ import vip.xiaonuo.disk.util.VideoConverter;
|
|
|
import javax.annotation.Resource;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
|
@@ -53,7 +56,6 @@ public class TranscodingServiceImpl implements TranscodingService {
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
@Resource
|
|
|
private ResourceUserFileMapper resourceUserFileMapper;
|
|
|
|
|
|
@@ -111,184 +113,104 @@ public class TranscodingServiceImpl implements TranscodingService {
|
|
|
return CommonResult.ok("格式转换成功");
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public CommonResult<String> transcodingResource(TranscodingResourceReqDTO transcodingResourceReqDTO) {
|
|
|
- // 校验目标文件是否存在,是否是本人的
|
|
|
- String userId = StpLoginUserUtil.getLoginUser().getId();
|
|
|
- QueryWrapper<ResourceUserFile> queryWrapper = new QueryWrapper<>();
|
|
|
- queryWrapper.lambda().eq(ResourceUserFile::getUserFileId, transcodingResourceReqDTO.getUserFileId());
|
|
|
- ResourceUserFile userFile = resourceUserFileMapper.selectOne(queryWrapper);
|
|
|
- if (userFile == null || !userFile.getUserId().equals(userId)) {
|
|
|
- return CommonResult.error("文件不存在或不是本人的");
|
|
|
- }
|
|
|
|
|
|
- List<String> videoList= Arrays.asList("wmv","avi","flv","mpeg","mpg","rmvb","mov","mkv");
|
|
|
-
|
|
|
- List<String> wordList= Arrays.asList("doc","docx","ppt","pptx","xls","xlsx","pdf");
|
|
|
|
|
|
+ @Override
|
|
|
+ public void transcodingResourceParallel(List<ConsumerRecord<String, String>> consumerRecordList) {
|
|
|
+
|
|
|
+ log.info("===================格式转换开始时间============================>"+ cn.hutool.core.date.DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss"));
|
|
|
+ for (ConsumerRecord<String, String> record : consumerRecordList) {
|
|
|
+ if (record.value() != null) {
|
|
|
+ TranscodingResourceReqDTO transcodingResourceReqDTO = JSON.parseObject(record.value(), TranscodingResourceReqDTO.class);
|
|
|
+ // 校验目标文件是否存在,是否是本人的
|
|
|
+ String userId = transcodingResourceReqDTO.getUserId();
|
|
|
+ QueryWrapper<ResourceUserFile> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.lambda().eq(ResourceUserFile::getUserFileId, transcodingResourceReqDTO.getUserFileId());
|
|
|
+ ResourceUserFile userFile = resourceUserFileMapper.selectOne(queryWrapper);
|
|
|
+ if (userFile == null || !userFile.getUserId().equals(userId)) {
|
|
|
+ System.out.println("文件不存在或不是本人的");
|
|
|
+ }
|
|
|
|
|
|
- ResourceFile fileBean = resourceFileMapper.selectById(userFile.getFileId());
|
|
|
- if (fileBean == null) {
|
|
|
- return CommonResult.error("文件不存在");
|
|
|
- }
|
|
|
- if(videoList.contains(userFile.getExtendName())){
|
|
|
- transcodingResourceReqDTO.setTranscodingType(0);
|
|
|
- transcodingResourceReqDTO.setFormat("mp4");
|
|
|
- }
|
|
|
+ List<String> videoList= Arrays.asList("wmv","avi","flv","mpeg","mpg","rmvb","mov","mkv");
|
|
|
|
|
|
- if(wordList.contains(userFile.getExtendName())){
|
|
|
- transcodingResourceReqDTO.setTranscodingType(1);
|
|
|
- transcodingResourceReqDTO.setFormat("pdf");
|
|
|
- }
|
|
|
+ List<String> wordList= Arrays.asList("doc","docx","ppt","pptx","xls","xlsx");
|
|
|
|
|
|
|
|
|
- // 构建转码格式列表
|
|
|
- ArrayList<String> formatList = new ArrayList<>();
|
|
|
- formatList.add(transcodingResourceReqDTO.getFormat());
|
|
|
- // 判断视频还是图片
|
|
|
- if(transcodingResourceReqDTO.getTranscodingType()!= null)
|
|
|
- {
|
|
|
- if (transcodingResourceReqDTO.getTranscodingType() == 0) {
|
|
|
- try {
|
|
|
- // 转码视频
|
|
|
- // mp4 wmv avi flv mpeg mpg rmvb mov 互相转
|
|
|
- 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);
|
|
|
- }
|
|
|
- } catch (Exception ex) {
|
|
|
- log.error(ex.getMessage());
|
|
|
- return CommonResult.error("格式转换失败");
|
|
|
+ ResourceFile fileBean = resourceFileMapper.selectById(userFile.getFileId());
|
|
|
+ if (fileBean == null) {
|
|
|
+ System.out.println("文件不存在");
|
|
|
}
|
|
|
- } else if (transcodingResourceReqDTO.getTranscodingType() == 1) {
|
|
|
- // 转码文档
|
|
|
- // pdf doc docx ppt pptx xls xlsx
|
|
|
- // doc转docx,ppt转pptx,xls转xlsx 所有均转pdf
|
|
|
- // 判断目标格式
|
|
|
-
|
|
|
- try {
|
|
|
- if ("pdf".equals(transcodingResourceReqDTO.getFormat())) {
|
|
|
- pdfUtils.convertToPdf(fileBean.getFileUrl(), fileBean.getFileId() + "." + transcodingResourceReqDTO.getFormat());
|
|
|
- } else {
|
|
|
- officeConverter.convertAndUpload(fileBean.getFileUrl(), fileBean.getFileId() + "." + transcodingResourceReqDTO.getFormat());
|
|
|
- }
|
|
|
- //根据文件id修改预览地址
|
|
|
- ResourceFile newFile = new ResourceFile();
|
|
|
- newFile.setFileId(fileBean.getFileId());
|
|
|
- if(videoList.contains(userFile.getExtendName())||wordList.contains(userFile.getExtendName())){
|
|
|
- newFile.setPreviewFileUrl("converted/" + fileBean.getFileId() + "." + transcodingResourceReqDTO.getFormat());
|
|
|
- }else{
|
|
|
- newFile.setPreviewFileUrl(fileBean.getFileUrl());
|
|
|
- }
|
|
|
- resourceFileMapper.updateById(newFile);
|
|
|
- } catch (Exception ex) {
|
|
|
- log.error("格式转换:"+ex.getMessage());
|
|
|
- return CommonResult.error("格式转换失败");
|
|
|
+ if(videoList.contains(userFile.getExtendName())){
|
|
|
+ transcodingResourceReqDTO.setTranscodingType(0);
|
|
|
+ transcodingResourceReqDTO.setFormat("mp4");
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- ResourceFile newFile = new ResourceFile();
|
|
|
- newFile.setFileId(fileBean.getFileId());
|
|
|
- newFile.setPreviewFileUrl(fileBean.getFileUrl());
|
|
|
- resourceFileMapper.updateById(newFile);
|
|
|
- }
|
|
|
- return CommonResult.ok("格式转换成功");
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void transcodingResourceParallel(TranscodingResourceReqDTO transcodingResourceReqDTO) {
|
|
|
- // 校验目标文件是否存在,是否是本人的
|
|
|
- String userId = transcodingResourceReqDTO.getUserId();
|
|
|
- QueryWrapper<ResourceUserFile> queryWrapper = new QueryWrapper<>();
|
|
|
- queryWrapper.lambda().eq(ResourceUserFile::getUserFileId, transcodingResourceReqDTO.getUserFileId());
|
|
|
- ResourceUserFile userFile = resourceUserFileMapper.selectOne(queryWrapper);
|
|
|
- if (userFile == null || !userFile.getUserId().equals(userId)) {
|
|
|
- System.out.println("文件不存在或不是本人的");
|
|
|
- }
|
|
|
-
|
|
|
- List<String> videoList= Arrays.asList("wmv","avi","flv","mpeg","mpg","rmvb","mov","mkv");
|
|
|
-
|
|
|
- List<String> wordList= Arrays.asList("doc","docx","ppt","pptx","xls","xlsx");
|
|
|
-
|
|
|
-
|
|
|
- ResourceFile fileBean = resourceFileMapper.selectById(userFile.getFileId());
|
|
|
- if (fileBean == null) {
|
|
|
- System.out.println("文件不存在");
|
|
|
- }
|
|
|
- if(videoList.contains(userFile.getExtendName())){
|
|
|
- transcodingResourceReqDTO.setTranscodingType(0);
|
|
|
- transcodingResourceReqDTO.setFormat("mp4");
|
|
|
- }
|
|
|
|
|
|
- if(wordList.contains(userFile.getExtendName())){
|
|
|
- transcodingResourceReqDTO.setTranscodingType(1);
|
|
|
- transcodingResourceReqDTO.setFormat("pdf");
|
|
|
- }
|
|
|
+ if(wordList.contains(userFile.getExtendName())){
|
|
|
+ transcodingResourceReqDTO.setTranscodingType(1);
|
|
|
+ transcodingResourceReqDTO.setFormat("pdf");
|
|
|
+ }
|
|
|
|
|
|
|
|
|
- // 构建转码格式列表
|
|
|
- ArrayList<String> formatList = new ArrayList<>();
|
|
|
- formatList.add(transcodingResourceReqDTO.getFormat());
|
|
|
- // 判断视频还是图片
|
|
|
- if(transcodingResourceReqDTO.getTranscodingType()!= null)
|
|
|
- {
|
|
|
- if (transcodingResourceReqDTO.getTranscodingType() == 0) {
|
|
|
- try {
|
|
|
- // 转码视频
|
|
|
- // mp4 wmv avi flv mpeg mpg rmvb mov 互相转
|
|
|
- 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);
|
|
|
+ // 构建转码格式列表
|
|
|
+ ArrayList<String> formatList = new ArrayList<>();
|
|
|
+ formatList.add(transcodingResourceReqDTO.getFormat());
|
|
|
+ // 判断视频还是图片
|
|
|
+ if(transcodingResourceReqDTO.getTranscodingType()!= null)
|
|
|
+ {
|
|
|
+ if (transcodingResourceReqDTO.getTranscodingType() == 0) {
|
|
|
+ try {
|
|
|
+ // 转码视频
|
|
|
+ // mp4 wmv avi flv mpeg mpg rmvb mov 互相转
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ } catch (Exception ex) {
|
|
|
+ log.error(ex.getMessage());
|
|
|
+ System.out.println("格式转换失败");
|
|
|
+ }
|
|
|
+ } else if (transcodingResourceReqDTO.getTranscodingType() == 1) {
|
|
|
+ // 转码文档
|
|
|
+ // pdf doc docx ppt pptx xls xlsx
|
|
|
+ // doc转docx,ppt转pptx,xls转xlsx 所有均转pdf
|
|
|
+ // 判断目标格式
|
|
|
+ try {
|
|
|
+ if ("pdf".equals(transcodingResourceReqDTO.getFormat())) {
|
|
|
+ pdfUtils.convertToPdf(fileBean.getFileUrl(), fileBean.getFileId() + "." + transcodingResourceReqDTO.getFormat());
|
|
|
+ } else {
|
|
|
+ officeConverter.convertAndUpload(fileBean.getFileUrl(), fileBean.getFileId() + "." + transcodingResourceReqDTO.getFormat());
|
|
|
+ }
|
|
|
+ //根据文件id修改预览地址
|
|
|
+ ResourceFile newFile = new ResourceFile();
|
|
|
+ newFile.setFileId(fileBean.getFileId());
|
|
|
+ if(videoList.contains(userFile.getExtendName())||wordList.contains(userFile.getExtendName())){
|
|
|
+ newFile.setPreviewFileUrl("converted/" + fileBean.getFileId() + "." + transcodingResourceReqDTO.getFormat());
|
|
|
+ }else{
|
|
|
+ newFile.setPreviewFileUrl(fileBean.getFileUrl());
|
|
|
+ }
|
|
|
+ resourceFileMapper.updateById(newFile);
|
|
|
+ } catch (Exception ex) {
|
|
|
+ log.error("格式转换:"+ex.getMessage());
|
|
|
+ System.out.println("格式转换失败");
|
|
|
+ }
|
|
|
}
|
|
|
- } catch (Exception ex) {
|
|
|
- log.error(ex.getMessage());
|
|
|
- System.out.println("格式转换失败");
|
|
|
}
|
|
|
- } else if (transcodingResourceReqDTO.getTranscodingType() == 1) {
|
|
|
- // 转码文档
|
|
|
- // pdf doc docx ppt pptx xls xlsx
|
|
|
- // doc转docx,ppt转pptx,xls转xlsx 所有均转pdf
|
|
|
- // 判断目标格式
|
|
|
-
|
|
|
- try {
|
|
|
- if ("pdf".equals(transcodingResourceReqDTO.getFormat())) {
|
|
|
- pdfUtils.convertToPdf(fileBean.getFileUrl(), fileBean.getFileId() + "." + transcodingResourceReqDTO.getFormat());
|
|
|
- } else {
|
|
|
- officeConverter.convertAndUpload(fileBean.getFileUrl(), fileBean.getFileId() + "." + transcodingResourceReqDTO.getFormat());
|
|
|
- }
|
|
|
- //根据文件id修改预览地址
|
|
|
+ else
|
|
|
+ {
|
|
|
ResourceFile newFile = new ResourceFile();
|
|
|
newFile.setFileId(fileBean.getFileId());
|
|
|
- if(videoList.contains(userFile.getExtendName())||wordList.contains(userFile.getExtendName())){
|
|
|
- newFile.setPreviewFileUrl("converted/" + fileBean.getFileId() + "." + transcodingResourceReqDTO.getFormat());
|
|
|
- }else{
|
|
|
- newFile.setPreviewFileUrl(fileBean.getFileUrl());
|
|
|
- }
|
|
|
+ newFile.setPreviewFileUrl(fileBean.getFileUrl());
|
|
|
resourceFileMapper.updateById(newFile);
|
|
|
- } catch (Exception ex) {
|
|
|
- log.error("格式转换:"+ex.getMessage());
|
|
|
- System.out.println("格式转换失败");
|
|
|
}
|
|
|
+ log.info("格式转换成功");
|
|
|
}
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- ResourceFile newFile = new ResourceFile();
|
|
|
- newFile.setFileId(fileBean.getFileId());
|
|
|
- newFile.setPreviewFileUrl(fileBean.getFileUrl());
|
|
|
- resourceFileMapper.updateById(newFile);
|
|
|
- }
|
|
|
- System.out.println("格式转换成功");
|
|
|
+ log.info("===================格式转换结束============================>"+ cn.hutool.core.date.DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss"));
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|