|
@@ -1,9 +1,13 @@
|
|
|
package com.km.system.service.impl;
|
|
|
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
+import cn.hutool.core.io.FileUtil;
|
|
|
import cn.hutool.core.io.IoUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import com.km.common.core.config.KmConfig;
|
|
|
import com.km.common.core.constant.CacheNames;
|
|
|
+import com.km.common.core.constant.Constants;
|
|
|
import com.km.common.core.core.page.PageResult;
|
|
|
import com.km.common.core.exception.ServiceException;
|
|
|
import com.km.common.core.service.OssService;
|
|
@@ -45,7 +49,6 @@ import static com.km.system.domain.table.SysOssTableDef.SYS_OSS;
|
|
|
* 文件上传 服务层实现
|
|
|
*
|
|
|
* @author km
|
|
|
- * @author km
|
|
|
* @date 2023-11-30
|
|
|
*/
|
|
|
@RequiredArgsConstructor
|
|
@@ -60,7 +63,7 @@ public class SysOssServiceImpl extends BaseServiceImpl<SysOssMapper, SysOss> imp
|
|
|
}
|
|
|
|
|
|
private QueryWrapper buildQueryWrapper(SysOssBo bo) {
|
|
|
- QueryWrapper queryWrapper = super.buildBaseQueryWrapper()
|
|
|
+ return super.buildBaseQueryWrapper()
|
|
|
.where(SYS_OSS.FILE_NAME.like(bo.getFileName()))
|
|
|
.and(SYS_OSS.ORIGINAL_NAME.like(bo.getOriginalName()))
|
|
|
.and(SYS_OSS.FILE_SUFFIX.eq(bo.getFileSuffix()))
|
|
@@ -68,7 +71,6 @@ public class SysOssServiceImpl extends BaseServiceImpl<SysOssMapper, SysOss> imp
|
|
|
.and(SYS_OSS.CREATE_TIME.between(bo.getParams().get("beginCreateTime"), bo.getParams().get("endCreateTime")))
|
|
|
.and(SYS_OSS.SERVICE.eq(bo.getService()))
|
|
|
.orderBy(SYS_OSS.OSS_ID.asc());
|
|
|
- return queryWrapper;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -142,8 +144,9 @@ public class SysOssServiceImpl extends BaseServiceImpl<SysOssMapper, SysOss> imp
|
|
|
|
|
|
@Override
|
|
|
public SysOssVo upload(MultipartFile file) {
|
|
|
- String originalfileName = file.getOriginalFilename();
|
|
|
- String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length());
|
|
|
+ String originalFilename = file.getOriginalFilename();
|
|
|
+ assert originalFilename != null;
|
|
|
+ String suffix = StringUtils.substring(originalFilename, originalFilename.lastIndexOf("."), originalFilename.length());
|
|
|
OssClient storage = OssFactory.instance();
|
|
|
UploadResult uploadResult;
|
|
|
try {
|
|
@@ -152,28 +155,29 @@ public class SysOssServiceImpl extends BaseServiceImpl<SysOssMapper, SysOss> imp
|
|
|
throw new ServiceException(e.getMessage());
|
|
|
}
|
|
|
// 保存文件信息
|
|
|
- return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult);
|
|
|
+ return buildResultEntity(originalFilename, suffix, storage.getConfigKey(), uploadResult);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public SysOssVo upload(File file) {
|
|
|
- String originalfileName = file.getName();
|
|
|
- String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length());
|
|
|
+ String originalFileName = file.getName();
|
|
|
+ String suffix = StringUtils.substring(originalFileName, originalFileName.lastIndexOf("."), originalFileName.length());
|
|
|
OssClient storage = OssFactory.instance();
|
|
|
UploadResult uploadResult = storage.uploadSuffix(file, suffix);
|
|
|
// 保存文件信息
|
|
|
- return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult);
|
|
|
+ return buildResultEntity(originalFileName, suffix, storage.getConfigKey(), uploadResult);
|
|
|
}
|
|
|
|
|
|
- private SysOssVo buildResultEntity(String originalfileName, String suffix, String configKey, UploadResult uploadResult) {
|
|
|
+ private SysOssVo buildResultEntity(String originalFileName, String suffix, String configKey, UploadResult uploadResult) {
|
|
|
SysOss oss = new SysOss();
|
|
|
oss.setUrl(uploadResult.getUrl());
|
|
|
oss.setFileSuffix(suffix);
|
|
|
oss.setFileName(uploadResult.getFilename());
|
|
|
- oss.setOriginalName(originalfileName);
|
|
|
+ oss.setOriginalName(originalFileName);
|
|
|
oss.setService(configKey);
|
|
|
this.save(oss);
|
|
|
SysOssVo sysOssVo = MapstructUtils.convert(oss, SysOssVo.class);
|
|
|
+ assert sysOssVo != null;
|
|
|
return this.matchingUrl(sysOssVo);
|
|
|
}
|
|
|
|
|
@@ -185,8 +189,17 @@ public class SysOssServiceImpl extends BaseServiceImpl<SysOssMapper, SysOss> imp
|
|
|
|
|
|
List<SysOss> list = this.listByIds(ids);
|
|
|
for (SysOss sysOss : list) {
|
|
|
- OssClient storage = OssFactory.instance(sysOss.getService());
|
|
|
- storage.delete(sysOss.getUrl());
|
|
|
+ if (StrUtil.equals("Local",sysOss.getService())) {
|
|
|
+ // 删除本地文件
|
|
|
+ String filePath = KmConfig.getProfile() + StringUtils.substringAfter(sysOss.getFileName(), Constants.RESOURCE_PREFIX);
|
|
|
+ boolean deleted = FileUtil.del(filePath);
|
|
|
+ if (!deleted) {
|
|
|
+ throw new ServiceException(sysOss.getFileName()+ "文件删除失败,可能是因为文件不存在或无权限删除。");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ OssClient storage = OssFactory.instance(sysOss.getService());
|
|
|
+ storage.delete(sysOss.getUrl());
|
|
|
+ }
|
|
|
}
|
|
|
return this.removeByIds(ids);
|
|
|
}
|
|
@@ -198,6 +211,9 @@ public class SysOssServiceImpl extends BaseServiceImpl<SysOssMapper, SysOss> imp
|
|
|
* @return oss 匹配Url的OSS对象
|
|
|
*/
|
|
|
private SysOssVo matchingUrl(SysOssVo oss) {
|
|
|
+ if (StrUtil.equals("Local",oss.getService())){
|
|
|
+ return oss;
|
|
|
+ }
|
|
|
OssClient storage = OssFactory.instance(oss.getService());
|
|
|
// 仅修改桶类型为 private 的URL,临时URL时长为120s
|
|
|
if (AccessPolicyType.PRIVATE == storage.getAccessPolicy()) {
|
|
@@ -205,4 +221,18 @@ public class SysOssServiceImpl extends BaseServiceImpl<SysOssMapper, SysOss> imp
|
|
|
}
|
|
|
return oss;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public SysOssVo saveResultEntity(String originalFileName, String suffix, String url, String fileName) {
|
|
|
+ SysOss oss = new SysOss();
|
|
|
+ oss.setUrl(url);
|
|
|
+ oss.setFileSuffix(suffix);
|
|
|
+ oss.setFileName(fileName);
|
|
|
+ oss.setOriginalName(originalFileName);
|
|
|
+ oss.setService("Local");
|
|
|
+ this.save(oss);
|
|
|
+ SysOssVo sysOssVo = MapstructUtils.convert(oss, SysOssVo.class);
|
|
|
+ assert sysOssVo != null;
|
|
|
+ return sysOssVo;
|
|
|
+ }
|
|
|
}
|