新增release上传接口

This commit is contained in:
wanggeng 2021-11-01 11:22:59 +08:00
parent f9e3ddafd9
commit d27caef780
7 changed files with 265 additions and 18 deletions

View File

@ -52,6 +52,18 @@ public class FileAppController extends DefaultBaseController {
return asyncUploadSingle(token, file, UploadTypeEnum.FILE, params);
}
@ApiOperation(value = "上传文件", notes = "上传文件接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "userId", value = "userId", paramType = "path"),
@ApiImplicitParam(name = "file", value = "文件name", paramType = "query")
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PostMapping("upload-file-release/{userId}")
public Callable<SuccessResultData<String>> uploadFileByUserId(@PathVariable("userId") String userId, @RequestParam("file") MultipartFile file) {
Map<String, Object> params = requestParams();
return asyncUploadSingleByUserId(userId, file, UploadTypeEnum.FILE, params);
}
@ApiOperation(value = "上传图片", notes = "上传图片接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "token", paramType = "header"),
@ -64,6 +76,18 @@ public class FileAppController extends DefaultBaseController {
return asyncUploadSingle(token, image, UploadTypeEnum.IMAGE, params);
}
@ApiOperation(value = "上传图片", notes = "上传图片接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "userId", value = "userId", paramType = "path"),
@ApiImplicitParam(name = "image", value = "文件name", paramType = "query")
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PostMapping("upload-image-release/{userId}")
public Callable<SuccessResultData<String>> uploadImageByUserId(@PathVariable("userId") String userId, @RequestParam("image") MultipartFile image) {
Map<String, Object> params = requestParams();
return asyncUploadSingleByUserId(userId, image, UploadTypeEnum.IMAGE, params);
}
@ApiOperation(value = "上传视频", notes = "上传视频接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "token", paramType = "header"),
@ -79,6 +103,21 @@ public class FileAppController extends DefaultBaseController {
return asyncUploadSingle(token, video, UploadTypeEnum.VIDEO, params);
}
@ApiOperation(value = "上传视频", notes = "上传视频接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "userId", value = "userId", paramType = "path"),
@ApiImplicitParam(name = "video", value = "文件video", paramType = "query")
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PostMapping("upload-video-release/{userId}")
public Callable<SuccessResultData<String>> uploadVideoByUserId(@PathVariable("userId") String userId, @RequestParam("video") MultipartFile video) {
if (fileProperties.getMediaMaxDuration() != null && fileProperties.getMediaMaxDuration().getApp() != null) {
fileService.checkVideoDurationAllow(video, fileProperties.getMediaMaxDuration().getApp().getVideo());
}
Map<String, Object> params = requestParams();
return asyncUploadSingleByUserId(userId, video, UploadTypeEnum.VIDEO, params);
}
@ApiOperation(value = "上传音频", notes = "上传音频接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "token", paramType = "header"),
@ -94,6 +133,21 @@ public class FileAppController extends DefaultBaseController {
return asyncUploadSingle(token, audio, UploadTypeEnum.AUDIO, params);
}
@ApiOperation(value = "上传音频", notes = "上传音频接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "userId", value = "userId", paramType = "path"),
@ApiImplicitParam(name = "audio", value = "文件audio", paramType = "query")
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PostMapping("upload-audio-release/{userId}")
public Callable<SuccessResultData<String>> uploadAudioByUserId(@PathVariable("userId") String userId, @RequestParam("audio") MultipartFile audio) {
if (fileProperties.getMediaMaxDuration() != null && fileProperties.getMediaMaxDuration().getApp() != null) {
fileService.checkAudioDurationAllow(audio, fileProperties.getMediaMaxDuration().getApp().getAudio());
}
Map<String, Object> params = requestParams();
return asyncUploadSingleByUserId(userId, audio, UploadTypeEnum.AUDIO, params);
}
@ApiOperation(value = "上传图片", notes = "上传图片接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "image", value = "文件name", paramType = "query")
@ -111,6 +165,17 @@ public class FileAppController extends DefaultBaseController {
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("list")
public List<FileDTO> list(@RequestHeader("token") String token, @RequestParam("ids") String ids) {
List<String> idList = Arrays.asList(ids.split(","));
return fileService.list(idList);
}
@ApiOperation(value = "文件列表", notes = "文件列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "ids", value = "id列表逗号分隔", paramType = "query")
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("list-release")
public List<FileDTO> list(@RequestParam("ids") String ids) {
List<String> idList = Arrays.asList(ids.split(","));
return fileService.list(idList);
@ -127,4 +192,15 @@ public class FileAppController extends DefaultBaseController {
return () -> new SuccessResultData<>(fileService.uploadSingle(token, uploadFile, uploadTypeEnum, params));
}
/**
* 上传文件
*
* @param uploadFile
* @param params
* @return
*/
private Callable<SuccessResultData<String>> asyncUploadSingleByUserId(String userId, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) {
return () -> new SuccessResultData<>(fileService.uploadSingleByUserId(userId, uploadFile, uploadTypeEnum, params));
}
}

View File

@ -31,6 +31,16 @@ public interface IDefaultFileService {
*/
void uploadFile(String token, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) throws SystemException;
/**
* 文件上传
*
* @param userId 用户ID
* @param uploadFile
* @param uploadTypeEnum
* @param params
*/
void uploadFileByUserId(String userId, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params);
/**
* 物理删除文件
*
@ -50,6 +60,19 @@ public interface IDefaultFileService {
*/
void saveUploadFileInfo(String token, String fileName, String uploadPath, String uploadFileName, String fileType, long fileSize, Map<String, Object> params);
/**
* 保存文件信息
*
* @param userId
* @param fileName
* @param uploadPath
* @param uploadFileName
* @param fileType
* @param fileSize
* @param params
*/
void saveUploadFileInfoByUserId(String userId, String fileName, String uploadPath, String uploadFileName, String fileType, long fileSize, Map<String, Object> params);
/**
* 获取上传文件路径
*
@ -81,4 +104,5 @@ public interface IDefaultFileService {
* @param canRange
*/
void downLoadFile(HttpServletRequest request, HttpServletResponse response, FilePO filePO, boolean isOpen, boolean canRange);
}

View File

@ -152,6 +152,17 @@ public interface IFileService {
*/
String uploadSingle(String token, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params);
/**
* 文件上传
*
* @param userId
* @param uploadFile
* @param uploadTypeEnum
* @param params
* @return
*/
String uploadSingleByUserId(String userId, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params);
/**
* 文件上传
*

View File

@ -34,7 +34,17 @@ public interface IMinIoFileService {
* @param params
*/
void uploadFile(String token, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params);
/**
* 文件上传
*
* @param userId 用户ID
* @param uploadFile
* @param uploadTypeEnum
* @param params
*/
void uploadFileByUserId(String userId, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params);
/**
* 下载文件
*

View File

@ -67,6 +67,24 @@ public class DefaultFileServiceImpl extends DefaultBaseService implements IDefau
*/
@Override
public void uploadFile(String token, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) throws SystemException {
uploadFile(token, uploadFile, uploadTypeEnum, params, false);
}
@Override
public void uploadFileByUserId(String userId, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) {
uploadFile(userId, uploadFile, uploadTypeEnum, params, true);
}
/**
* 上传文件
*
* @param tokenOrUserId
* @param uploadFile
* @param uploadTypeEnum
* @param params
* @param useUserId
*/
private void uploadFile(String tokenOrUserId, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params, boolean useUserId) {
String baseUploadPath = fileProperties.getUploadPath();
if (StringUtils.isBlank(baseUploadPath)) {
throw new SystemException("上传路径未配置");
@ -96,11 +114,19 @@ public class DefaultFileServiceImpl extends DefaultBaseService implements IDefau
params.clear();
FileInfoDTO fileInfoDTO = fileInfoDTOs.get(0);
params.put("fileSummary", "REF:" + fileInfoDTO.getFileId());
saveFile(token, params, fileInfoDTO.getFileName(), fileInfoDTO.getFilePath(), fileInfoDTO.getFileUrl(), fileInfoDTO.getFileType(), fileInfoDTO.getFileSize());
if (useUserId) {
saveFileByUserId(tokenOrUserId, params, fileInfoDTO.getFileName(), fileInfoDTO.getFilePath(), fileInfoDTO.getFileUrl(), fileInfoDTO.getFileType(), fileInfoDTO.getFileSize());
} else {
saveFile(tokenOrUserId, params, fileInfoDTO.getFileName(), fileInfoDTO.getFilePath(), fileInfoDTO.getFileUrl(), fileInfoDTO.getFileType(), fileInfoDTO.getFileSize());
}
return;
}
params.put("fileSummary", "MD5:" + fileMd5);
saveUploadFileInfo(token, fileName, uploadPath, uploadFileName, fileType, fileSize, params);
if (useUserId) {
saveUploadFileInfoByUserId(tokenOrUserId, fileName, uploadPath, uploadFileName, fileType, fileSize, params);
} else {
saveUploadFileInfo(tokenOrUserId, fileName, uploadPath, uploadFileName, fileType, fileSize, params);
}
}
@Override
@ -180,13 +206,7 @@ public class DefaultFileServiceImpl extends DefaultBaseService implements IDefau
* @param fileSize 文件大小
*/
private void saveFile(String token, Map<String, Object> params, String fileName, String fileFullPath, String fileUrl, String fileType, long fileSize) {
params.put("fileId", UUIDUtil.getUUID());
params.put("fileName", fileName);
params.put("filePath", fileFullPath);
params.put("fileUrl", fileUrl);
params.put("fileType", fileType);
params.put("fileSize", fileSize);
params.put("isBack", 0);
setFileParams(params, fileName, fileFullPath, fileUrl, fileType, fileSize);
if (StringUtils.isBlank(token)) {
setSaveInfo(params);
} else {
@ -195,8 +215,44 @@ public class DefaultFileServiceImpl extends DefaultBaseService implements IDefau
fileDao.save(params);
}
/**
* 保存文件
*
* @param userId
* @param params
* @param fileName
* @param fileFullPath
* @param fileUrl
* @param fileType
* @param fileSize
*/
private void saveFileByUserId(String userId, Map<String, Object> params, String fileName, String fileFullPath, String fileUrl, String fileType, long fileSize) {
setFileParams(params, fileName, fileFullPath, fileUrl, fileType, fileSize);
setSaveInfoByUserId(params, userId);
fileDao.save(params);
}
private void setFileParams(Map<String, Object> params, String fileName, String fileFullPath, String fileUrl, String fileType, long fileSize) {
params.put("fileId", UUIDUtil.getUUID());
params.put("fileName", fileName);
params.put("filePath", fileFullPath);
params.put("fileUrl", fileUrl);
params.put("fileType", fileType);
params.put("fileSize", fileSize);
params.put("isBack", 0);
}
@Override
public void saveUploadFileInfo(String token, String fileName, String uploadPath, String uploadFileName, String fileType, long fileSize, Map<String, Object> params) {
saveUploadFileInfo(token, fileName, uploadPath, uploadFileName, fileType, fileSize, params, false);
}
@Override
public void saveUploadFileInfoByUserId(String userId, String fileName, String uploadPath, String uploadFileName, String fileType, long fileSize, Map<String, Object> params) {
saveUploadFileInfo(userId, fileName, uploadPath, uploadFileName, fileType, fileSize, params, true);
}
private void saveUploadFileInfo(String tokenOrUserId, String fileName, String uploadPath, String uploadFileName, String fileType, long fileSize, Map<String, Object> params, boolean useUserId) {
String fixPath = uploadPath.replace(fileProperties.getUploadPath(), "");
if ("\\".equals(File.separator)) {
fixPath = fixPath.replace("\\", "/");
@ -211,7 +267,11 @@ public class DefaultFileServiceImpl extends DefaultBaseService implements IDefau
File photo = new File(fileFullPath);
fileSize = photo.length();
}
saveFile(token, params, fileName, fileFullPath, String.format("files/%s/%s", fixPath, uploadFileName), fileType, fileSize);
if (useUserId) {
saveFileByUserId(tokenOrUserId, params, fileName, fileFullPath, String.format("files/%s/%s", fixPath, uploadFileName), fileType, fileSize);
} else {
saveFile(tokenOrUserId, params, fileName, fileFullPath, String.format("files/%s/%s", fixPath, uploadFileName), fileType, fileSize);
}
}
@Override

View File

@ -122,6 +122,12 @@ public class FileServiceImpl extends DefaultBaseService implements IFileService
return params.get("fileId").toString();
}
@Override
public String uploadSingleByUserId(String userId, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) {
uploadFileByUserId(userId, uploadFile, uploadTypeEnum, params);
return params.get("fileId").toString();
}
@Override
public FileDTO uploadSingleForFileDTO(String token, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) throws SystemException {
uploadFile(token, uploadFile, uploadTypeEnum, params);
@ -150,6 +156,23 @@ public class FileServiceImpl extends DefaultBaseService implements IFileService
}
}
/**
* 上传文件
*
* @param userId
* @param uploadFile
* @param uploadTypeEnum
* @param params
* @throws SystemException
*/
private void uploadFileByUserId(String userId, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) throws SystemException {
if (fileProperties.getUseMinIo()) {
minIoFileService.uploadFileByUserId(userId, uploadFile, uploadTypeEnum, params);
} else {
defaultFileService.uploadFileByUserId(userId, uploadFile, uploadTypeEnum, params);
}
}
@Override
public void uploadErrorExcelFileInfo(String fileName, String uploadPath, long fileSize, Map<String, Object> params) {
defaultFileService.saveUploadFileInfo(null, fileName, uploadPath, fileName, "xls", fileSize, params);

View File

@ -68,6 +68,24 @@ public class MinIoFileServiceImpl extends DefaultBaseService implements IMinIoFi
@Override
public void uploadFile(String token, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) {
uploadFile(token, uploadFile, uploadTypeEnum, params, false);
}
@Override
public void uploadFileByUserId(String userId, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) {
uploadFile(userId, uploadFile, uploadTypeEnum, params, true);
}
/**
* 上传文件
*
* @param tokenOrUserId
* @param uploadFile
* @param uploadTypeEnum
* @param params
* @param useUserId 是否使用外来userId
*/
private void uploadFile(String tokenOrUserId, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params, boolean useUserId) {
String fileId = UUIDUtil.getUUID();
params.put("fileId", fileId);
@ -80,7 +98,11 @@ public class MinIoFileServiceImpl extends DefaultBaseService implements IMinIoFi
String bucketName = getBucketName(uploadTypeEnum);
// 上传文件
upload(uploadFileName, fileSize, bucketName, uploadFile);
saveFile(token, fileId, fileName, fileType, fileSize, bucketName);
if (useUserId) {
saveFileByUserId(tokenOrUserId, fileId, fileName, fileType, fileSize, bucketName);
} else {
saveFile(tokenOrUserId, fileId, fileName, fileType, fileSize, bucketName);
}
}
@Override
@ -187,6 +209,32 @@ public class MinIoFileServiceImpl extends DefaultBaseService implements IMinIoFi
* @param bucketName 桶名称
*/
private void saveFile(String token, String fileId, String fileName, String fileType, long fileSize, String bucketName) {
Map<String, Object> params = getFileParams(fileId, fileName, fileType, fileSize, bucketName);
if (StringUtils.isBlank(token)) {
setSaveInfo(params);
} else {
setAppSaveInfo(token, params);
}
fileDao.save(params);
}
/**
* 保存用户
*
* @param userId 用户ID
* @param fileId
* @param fileName
* @param fileType
* @param fileSize
* @param bucketName
*/
private void saveFileByUserId(String userId, String fileId, String fileName, String fileType, long fileSize, String bucketName) {
Map<String, Object> params = getFileParams(fileId, fileName, fileType, fileSize, bucketName);
setSaveInfoByUserId(params, userId);
fileDao.save(params);
}
private Map<String, Object> getFileParams(String fileId, String fileName, String fileType, long fileSize, String bucketName) {
Map<String, Object> params = getHashMap(2);
params.put("fileId", fileId);
params.put("fileName", fileName);
@ -196,12 +244,7 @@ public class MinIoFileServiceImpl extends DefaultBaseService implements IMinIoFi
params.put("fileSize", fileSize);
params.put("fileSummary", "minio");
params.put("isBack", 1);
if (StringUtils.isBlank(token)) {
setSaveInfo(params);
} else {
setAppSaveInfo(token, params);
}
fileDao.save(params);
return params;
}
/**