|
@@ -54,17 +54,16 @@ public class SysUploadServiceImpl implements SysUploadService {
|
|
|
|
|
|
/**
|
|
|
* 上传文件 (单文件大小不超过 n)
|
|
|
- * - 5MB = 5242880
|
|
|
- * - 20MB = 20971520
|
|
|
- * - 100MB = 104857600
|
|
|
- * - 1GB = 1073741824
|
|
|
+ * - target: 上传目标 (-1:本地, 1:腾讯云, 2:阿里云, 3.抖音云)
|
|
|
*/
|
|
|
@Override
|
|
|
- public SysUpload uploadSmall(MultipartFile multipartFile, Long category_id) {
|
|
|
+ public SysUpload uploadSmall(MultipartFile multipartFile, Long category_id, Integer target) {
|
|
|
try {
|
|
|
|
|
|
+ if (target == null) throw new CustException("target 上传目标不能为空 (-1:本地, 1:腾讯云, 2:阿里云, 3.抖音云)");
|
|
|
+
|
|
|
// 判断文件是否超过大小
|
|
|
- long MAX_SIZE = 20971520;
|
|
|
+ long MAX_SIZE = 100L * 1024 * 1024; // 100MB
|
|
|
if (multipartFile.getSize() > MAX_SIZE) {
|
|
|
throw new CustException("上传文件不能大于 " + MAX_SIZE / 1024 / 1024 + " MB,请使用大文件上传功能");
|
|
|
}
|
|
@@ -74,11 +73,17 @@ public class SysUploadServiceImpl implements SysUploadService {
|
|
|
SysUpload sysUploadEntity = sysUploadDao.selectOne(new LambdaQueryWrapper<SysUpload>().eq(SysUpload::getMd5, md5));
|
|
|
if (sysUploadEntity == null) {
|
|
|
|
|
|
- // [腾讯云-上传对象]
|
|
|
- SysUploadResult uploadResult = tencentCosService.putObject(multipartFile, null);
|
|
|
+ SysUploadResult uploadResult = new SysUploadResult();
|
|
|
|
|
|
-// // [抖音云-上传对象]
|
|
|
-// SysUploadResult uploadResult = douyinTosService.putObject(multipartFile, null);
|
|
|
+ // target: 上传目标 (-1:本地, 1:腾讯云, 2:阿里云, 3.抖音云)
|
|
|
+ if (target == 1) {
|
|
|
+ // [腾讯云-上传对象]
|
|
|
+ uploadResult = tencentCosService.putObject(multipartFile, null);
|
|
|
+ }
|
|
|
+ if (target == 3) {
|
|
|
+ // [抖音云-上传对象]
|
|
|
+ uploadResult = douyinTosService.putObject(multipartFile, null);
|
|
|
+ }
|
|
|
|
|
|
// [新增] 上传文件记录
|
|
|
sysUploadEntity = new SysUpload();
|
|
@@ -91,11 +96,12 @@ public class SysUploadServiceImpl implements SysUploadService {
|
|
|
sysUploadEntity.setUrl(uploadResult.getDomain() + "/" + uploadResult.getKey());
|
|
|
sysUploadEntity.setSize(multipartFile.getSize());
|
|
|
sysUploadEntity.setMd5(uploadResult.getE_tag());
|
|
|
+ sysUploadEntity.setTarget(target);
|
|
|
sysUploadEntity.setCreate_time(DateUtil.now());
|
|
|
sysUploadEntity.setUpdate_time(DateUtil.now());
|
|
|
sysUploadDao.insert(sysUploadEntity);
|
|
|
} else {
|
|
|
- // [更新] 上传文件记录
|
|
|
+ // [更新] 上传文件记录 (更换文件分类)
|
|
|
sysUploadEntity.setCategory_id(category_id);
|
|
|
sysUploadEntity.setUpdate_time(DateUtil.now());
|
|
|
sysUploadDao.updateById(sysUploadEntity);
|
|
@@ -113,20 +119,33 @@ public class SysUploadServiceImpl implements SysUploadService {
|
|
|
@Override
|
|
|
public Map<String, Object> removeUploadFile(SysUpload sysUpload) {
|
|
|
|
|
|
+ String object_key = sysUpload.getObject_key();
|
|
|
+
|
|
|
// [Delete] 删除文件记录
|
|
|
- SysUpload entity = sysUploadDao.selectOne(new LambdaQueryWrapper<SysUpload>().eq(SysUpload::getObject_key, sysUpload.getObject_key()));
|
|
|
+ SysUpload entity = sysUploadDao.selectOne(new LambdaQueryWrapper<SysUpload>().eq(SysUpload::getObject_key, object_key));
|
|
|
if (entity != null) {
|
|
|
- sysUploadDao.delete(new LambdaQueryWrapper<SysUpload>().eq(SysUpload::getObject_key, sysUpload.getObject_key()));
|
|
|
+ sysUploadDao.delete(new LambdaQueryWrapper<SysUpload>().eq(SysUpload::getObject_key, object_key));
|
|
|
}
|
|
|
|
|
|
// [异步任务] 创建一个 CompletableFuture 来执行异步任务
|
|
|
CompletableFuture.runAsync(() -> {
|
|
|
- // [腾讯云] 删除对象
|
|
|
- tencentCosService.deleteObject(sysUpload.getObject_key());
|
|
|
- System.out.println("Delete cos object: " + sysUpload.getObject_key());
|
|
|
+
|
|
|
+ // target: 上传目标 (-1:本地, 1:腾讯云, 2:阿里云, 3.抖音云)
|
|
|
+ Integer target = entity.getTarget();
|
|
|
+ if (target == 1) {
|
|
|
+ // [腾讯云] 删除对象
|
|
|
+ tencentCosService.deleteObject(object_key);
|
|
|
+ System.out.println("Delete tencent cos object: " + object_key);
|
|
|
+ }
|
|
|
+ if (target == 3) {
|
|
|
+ // [抖音云] 删除对象
|
|
|
+ douyinTosService.deleteObject(object_key);
|
|
|
+ System.out.println("Delete douyin tos object: " + object_key);
|
|
|
+ }
|
|
|
+
|
|
|
});
|
|
|
|
|
|
- return Map.of("object_key", sysUpload.getObject_key());
|
|
|
+ return Map.of("object_key", object_key);
|
|
|
}
|
|
|
|
|
|
}
|