修改媒体视频上传返回结果

This commit is contained in:
WenG 2022-04-22 08:42:12 +08:00
parent ebdeaba324
commit e0f5cab373
6 changed files with 102 additions and 24 deletions

View File

@ -0,0 +1,61 @@
package ink.wgink.pojo.dtos.file;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
/**
* @Description: 文件上传成功
* @Author: WenG
* @Date: 2022/4/22 7:09
* @Version: 1.0
**/
@ApiModel
public class FileUploadSuccessDTO implements Serializable {
private static final long serialVersionUID = 396257753407239500L;
@ApiModelProperty(name = "fileId", value = "文件ID")
private String fileId;
@ApiModelProperty(name = "fileName", value = "文件名")
private String fileName;
@ApiModelProperty(name = "fileSize", value = "文件大小")
private long fileSize;
public FileUploadSuccessDTO() {
}
public FileUploadSuccessDTO(String fileId) {
this.fileId = fileId;
}
public FileUploadSuccessDTO(String fileId, String fileName, long fileSize) {
this.fileId = fileId;
this.fileName = fileName;
this.fileSize = fileSize;
}
public String getFileId() {
return fileId;
}
public void setFileId(String fileId) {
this.fileId = fileId;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public long getFileSize() {
return fileSize;
}
public void setFileSize(long fileSize) {
this.fileSize = fileSize;
}
}

View File

@ -4,6 +4,7 @@ import ink.wgink.common.base.DefaultBaseController;
import ink.wgink.exceptions.PropertiesException; import ink.wgink.exceptions.PropertiesException;
import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.module.file.media.pojo.dtos.video.VideoDTO; import ink.wgink.module.file.media.pojo.dtos.video.VideoDTO;
import ink.wgink.module.file.media.pojo.dtos.video.VideoUploadSuccessDTO;
import ink.wgink.module.file.media.service.video.IVideoService; import ink.wgink.module.file.media.service.video.IVideoService;
import ink.wgink.pojo.ListPage; import ink.wgink.pojo.ListPage;
import ink.wgink.pojo.result.ErrorResult; import ink.wgink.pojo.result.ErrorResult;
@ -21,7 +22,6 @@ import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.Callable;
/** /**
* When you feel like quitting. Think about why you started * When you feel like quitting. Think about why you started
@ -46,14 +46,14 @@ public class VideoController extends DefaultBaseController {
@ApiOperation(value = "上传视频", notes = "上传视频接口") @ApiOperation(value = "上传视频", notes = "上传视频接口")
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PostMapping("upload") @PostMapping("upload")
public Callable<SuccessResultData<String>> upload(@RequestParam("video") MultipartFile video) { public SuccessResultData<VideoUploadSuccessDTO> upload(@RequestParam("video") MultipartFile video) {
if (StringUtils.isBlank(mediaProperties.getUploadPath())) { if (StringUtils.isBlank(mediaProperties.getUploadPath())) {
throw new PropertiesException("未设置文件上传路径"); throw new PropertiesException("未设置文件上传路径");
} }
if (StringUtils.isBlank(mediaProperties.getFfmpegPath())) { if (StringUtils.isBlank(mediaProperties.getFfmpegPath())) {
throw new PropertiesException("未设置解码器路径"); throw new PropertiesException("未设置解码器路径");
} }
return () -> new SuccessResultData<>(videoService.upload(video)); return new SuccessResultData<>(videoService.upload(video));
} }
@ApiOperation(value = "删除文件类别(id列表)", notes = "删除文件类别(id列表)接口") @ApiOperation(value = "删除文件类别(id列表)", notes = "删除文件类别(id列表)接口")

View File

@ -603,8 +603,6 @@ public class MediaManager {
return null; return null;
} }
VideoMetaInfo videoInfo = new VideoMetaInfo();
String parseResult = getMetaInfoFromFFmpeg(videoFile); String parseResult = getMetaInfoFromFFmpeg(videoFile);
Matcher durationMacher = durationPattern.matcher(parseResult); Matcher durationMacher = durationPattern.matcher(parseResult);

View File

@ -0,0 +1,25 @@
package ink.wgink.module.file.media.pojo.dtos.video;
import ink.wgink.pojo.dtos.file.FileUploadSuccessDTO;
import io.swagger.annotations.ApiModel;
/**
* @Description: 视频上传成功
* @Author: WenG
* @Date: 2022/4/22 7:09
* @Version: 1.0
**/
@ApiModel
public class VideoUploadSuccessDTO extends FileUploadSuccessDTO {
public VideoUploadSuccessDTO() {
}
public VideoUploadSuccessDTO(String fileId) {
super(fileId);
}
public VideoUploadSuccessDTO(String fileId, String fileName, long fileSize) {
super(fileId, fileName, fileSize);
}
}

View File

@ -1,8 +1,7 @@
package ink.wgink.module.file.media.service.video; package ink.wgink.module.file.media.service.video;
import ink.wgink.exceptions.SearchException;
import ink.wgink.module.file.media.pojo.dtos.ConvertProgressDTO;
import ink.wgink.module.file.media.pojo.dtos.video.VideoDTO; import ink.wgink.module.file.media.pojo.dtos.video.VideoDTO;
import ink.wgink.module.file.media.pojo.dtos.video.VideoUploadSuccessDTO;
import ink.wgink.module.file.media.pojo.vos.video.VideoVO; import ink.wgink.module.file.media.pojo.vos.video.VideoVO;
import ink.wgink.pojo.ListPage; import ink.wgink.pojo.ListPage;
import ink.wgink.pojo.result.SuccessResultList; import ink.wgink.pojo.result.SuccessResultList;
@ -12,7 +11,6 @@ import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.File; import java.io.File;
import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -36,7 +34,7 @@ public interface IVideoService {
* @param videoVO * @param videoVO
* @return * @return
*/ */
String save(VideoVO videoVO); VideoUploadSuccessDTO save(VideoVO videoVO);
/** /**
* 保存 * 保存
@ -45,7 +43,7 @@ public interface IVideoService {
* @param videoVO * @param videoVO
* @return * @return
*/ */
String save(String token, VideoVO videoVO); VideoUploadSuccessDTO save(String token, VideoVO videoVO);
/** /**
* 删除 * 删除
@ -82,7 +80,7 @@ public interface IVideoService {
* @param video * @param video
* @return * @return
*/ */
String upload(MultipartFile video); VideoUploadSuccessDTO upload(MultipartFile video);
/** /**
* 上传视频 * 上传视频
@ -91,7 +89,7 @@ public interface IVideoService {
* @param video * @param video
* @return * @return
*/ */
String upload(String token, MultipartFile video); VideoUploadSuccessDTO upload(String token, MultipartFile video);
/** /**
* 转换进度列表 * 转换进度列表

View File

@ -10,15 +10,14 @@ import ink.wgink.module.file.media.enums.ConvertStatusEnum;
import ink.wgink.module.file.media.manager.MediaManager; import ink.wgink.module.file.media.manager.MediaManager;
import ink.wgink.module.file.media.manager.domain.MusicMetaInfo; import ink.wgink.module.file.media.manager.domain.MusicMetaInfo;
import ink.wgink.module.file.media.manager.domain.VideoMetaInfo; import ink.wgink.module.file.media.manager.domain.VideoMetaInfo;
import ink.wgink.module.file.media.pojo.dtos.ConvertProgressDTO;
import ink.wgink.module.file.media.pojo.dtos.video.VideoDTO; import ink.wgink.module.file.media.pojo.dtos.video.VideoDTO;
import ink.wgink.module.file.media.pojo.dtos.video.VideoUploadSuccessDTO;
import ink.wgink.module.file.media.pojo.vos.video.VideoVO; import ink.wgink.module.file.media.pojo.vos.video.VideoVO;
import ink.wgink.module.file.media.service.IMediaService; import ink.wgink.module.file.media.service.IMediaService;
import ink.wgink.module.file.media.service.video.IVideoService; import ink.wgink.module.file.media.service.video.IVideoService;
import ink.wgink.module.file.media.task.transcoding.VideoConvertManager; import ink.wgink.module.file.media.task.transcoding.VideoConvertManager;
import ink.wgink.module.file.media.task.transcoding.runnable.VideoConvertRunnable; import ink.wgink.module.file.media.task.transcoding.runnable.VideoConvertRunnable;
import ink.wgink.pojo.ListPage; import ink.wgink.pojo.ListPage;
import ink.wgink.pojo.pos.FilePO;
import ink.wgink.pojo.result.SuccessResultList; import ink.wgink.pojo.result.SuccessResultList;
import ink.wgink.properties.media.MediaProperties; import ink.wgink.properties.media.MediaProperties;
import ink.wgink.util.UUIDUtil; import ink.wgink.util.UUIDUtil;
@ -26,8 +25,6 @@ import ink.wgink.util.date.DateUtil;
import ink.wgink.util.map.HashMapUtil; import ink.wgink.util.map.HashMapUtil;
import org.apache.catalina.connector.ClientAbortException; import org.apache.catalina.connector.ClientAbortException;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -44,8 +41,6 @@ import java.net.URLEncoder;
import java.nio.channels.Channels; import java.nio.channels.Channels;
import java.nio.channels.FileChannel; import java.nio.channels.FileChannel;
import java.nio.channels.WritableByteChannel; import java.nio.channels.WritableByteChannel;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -70,12 +65,12 @@ public class VideoServiceImpl extends DefaultBaseService implements IVideoServic
private IVideoDao videoDao; private IVideoDao videoDao;
@Override @Override
public String save(VideoVO videoVO) { public VideoUploadSuccessDTO save(VideoVO videoVO) {
return save(null, videoVO); return save(null, videoVO);
} }
@Override @Override
public String save(String token, VideoVO videoVO) { public VideoUploadSuccessDTO save(String token, VideoVO videoVO) {
String fileId = UUIDUtil.getUUID(); String fileId = UUIDUtil.getUUID();
Map<String, Object> params = HashMapUtil.beanToMap(videoVO); Map<String, Object> params = HashMapUtil.beanToMap(videoVO);
params.put("fileId", fileId); params.put("fileId", fileId);
@ -85,7 +80,8 @@ public class VideoServiceImpl extends DefaultBaseService implements IVideoServic
setAppSaveInfo(token, params); setAppSaveInfo(token, params);
} }
videoDao.save(params); videoDao.save(params);
return fileId;
return new VideoUploadSuccessDTO(params.get("fileId").toString(), params.get("fileName").toString(), Long.parseLong(params.get("fileSize").toString()));
} }
@Override @Override
@ -163,12 +159,12 @@ public class VideoServiceImpl extends DefaultBaseService implements IVideoServic
} }
@Override @Override
public String upload(MultipartFile video) { public VideoUploadSuccessDTO upload(MultipartFile video) {
return upload(null, video); return upload(null, video);
} }
@Override @Override
public String upload(String token, MultipartFile video) { public VideoUploadSuccessDTO upload(String token, MultipartFile video) {
String filePath = VIDEO_PATH + File.separator + DateUtil.getDays(); String filePath = VIDEO_PATH + File.separator + DateUtil.getDays();
String uploadFolderPath = mediaProperties.getUploadPath() + File.separator + filePath; String uploadFolderPath = mediaProperties.getUploadPath() + File.separator + filePath;
String fileName = video.getOriginalFilename(); String fileName = video.getOriginalFilename();
@ -183,7 +179,7 @@ public class VideoServiceImpl extends DefaultBaseService implements IVideoServic
if (videoDTO != null) { if (videoDTO != null) {
LOG.error("上传的【{}】视频已经存在,原文件为【{}】返回原文件ID", videoDTO.getFileName(), videoDTO.getFileName()); LOG.error("上传的【{}】视频已经存在,原文件为【{}】返回原文件ID", videoDTO.getFileName(), videoDTO.getFileName());
uploadFile.delete(); uploadFile.delete();
return videoDTO.getFileId(); return new VideoUploadSuccessDTO(videoDTO.getFileId());
} }
// 构建视频内容 // 构建视频内容