Files
fys-Multi-tenant/fys-admin/src/main/java/com/fuyuanshen/app/service/AppFileService.java

101 lines
3.4 KiB
Java
Raw Normal View History

package com.fuyuanshen.app.service;
2025-07-04 15:10:36 +08:00
import com.fuyuanshen.app.domain.bo.AppBusinessFileBo;
2025-07-03 14:07:32 +08:00
import com.fuyuanshen.app.domain.dto.AppFileDto;
2025-07-04 15:10:36 +08:00
import com.fuyuanshen.app.domain.vo.AppBusinessFileVo;
2025-07-03 14:07:32 +08:00
import com.fuyuanshen.app.domain.vo.AppFileVo;
2025-07-10 18:45:43 +08:00
import com.fuyuanshen.common.core.exception.ServiceException;
2025-07-04 15:10:36 +08:00
import com.fuyuanshen.common.oss.core.OssClient;
import com.fuyuanshen.common.oss.factory.OssFactory;
import com.fuyuanshen.common.satoken.utils.AppLoginHelper;
2025-12-01 10:34:41 +08:00
import com.fuyuanshen.equipment.utils.FileHashUtil;
2025-07-04 15:10:36 +08:00
import com.fuyuanshen.system.domain.vo.SysOssVo;
import com.fuyuanshen.system.service.ISysOssService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
2025-07-10 18:45:43 +08:00
import org.springframework.web.multipart.MultipartFile;
2025-12-01 10:34:41 +08:00
import java.io.IOException;
2025-07-03 14:07:32 +08:00
import java.util.List;
/**
* 登录校验方法
*
* @author Lion Li
*/
@RequiredArgsConstructor
@Slf4j
@Service
public class AppFileService {
2025-07-04 15:10:36 +08:00
private final ISysOssService sysOssService;
2025-07-03 14:07:32 +08:00
2025-07-04 15:10:36 +08:00
private final IAppBusinessFileService appBusinessFileService;
2025-12-01 10:34:41 +08:00
private final FileHashUtil fileHashUtil;
private final ISysOssService ossService;
2025-07-04 15:10:36 +08:00
public List<AppFileVo> list(AppBusinessFileBo bo) {
2025-09-30 15:42:59 +08:00
// bo.setCreateBy(AppLoginHelper.getUserId());
2025-07-04 15:10:36 +08:00
return appBusinessFileService.queryAppFileList(bo);
2025-07-03 14:07:32 +08:00
}
2025-12-01 10:34:41 +08:00
/**
* APP文件上传
*/
public Boolean add(AppFileDto bo) throws IOException {
2025-07-04 15:10:36 +08:00
2025-07-10 18:45:43 +08:00
MultipartFile[] files = bo.getFiles();
2025-12-01 10:34:41 +08:00
if (files == null || files.length == 0) {
2025-07-10 18:45:43 +08:00
throw new ServiceException("请选择要上传的文件");
}
2025-12-01 10:34:41 +08:00
if (files.length > 5) {
2025-07-10 18:45:43 +08:00
throw new ServiceException("最多只能上传5个文件");
}
for (int i = 0; i < files.length; i++) {
MultipartFile file = files[i];
// 上传文件
2025-12-01 10:34:41 +08:00
// SysOssVo upload = sysOssService.upload(file);
String fileHash = fileHashUtil.hash(file);
SysOssVo upload = ossService.updateHash(file, fileHash);
// 强制将HTTP替换为HTTPS
if (upload.getUrl() != null && upload.getUrl().startsWith("http://")) {
upload.setUrl(upload.getUrl().replaceFirst("^http://", "https://"));
}
2025-07-10 18:45:43 +08:00
if (upload == null) {
return false;
}
2025-07-03 14:07:32 +08:00
2025-07-10 18:45:43 +08:00
AppBusinessFileBo appBusinessFileBo = new AppBusinessFileBo();
appBusinessFileBo.setFileId(upload.getOssId());
appBusinessFileBo.setBusinessId(bo.getDeviceId());
appBusinessFileBo.setFileType(bo.getFileType());
appBusinessFileBo.setCreateBy(AppLoginHelper.getUserId());
appBusinessFileService.insertByBo(appBusinessFileBo);
2025-07-04 15:10:36 +08:00
}
2025-07-03 14:07:32 +08:00
2025-07-04 15:10:36 +08:00
2025-07-10 18:45:43 +08:00
return true;
2025-07-04 15:10:36 +08:00
}
2025-07-03 14:07:32 +08:00
2025-12-01 10:34:41 +08:00
2025-07-04 15:10:36 +08:00
public Boolean delete(Long[] ids) {
AppBusinessFileBo bo = new AppBusinessFileBo();
2025-09-30 15:42:59 +08:00
// bo.setCreateBy(AppLoginHelper.getUserId());
2025-07-04 15:10:36 +08:00
bo.setIds(List.of(ids));
List<AppBusinessFileVo> appBusinessFileVos = appBusinessFileService.queryList(bo);
List<Long> fileIds = appBusinessFileVos.stream().map(AppBusinessFileVo::getFileId).toList();
List<SysOssVo> list = sysOssService.listByIds(fileIds);
for (SysOssVo sysOss : list) {
OssClient storage = OssFactory.instance(sysOss.getService());
storage.delete(sysOss.getUrl());
}
return appBusinessFileService.deleteWithValidByIds(List.of(ids), true);
2025-07-03 14:07:32 +08:00
}
2025-12-01 10:34:41 +08:00
}