文件上传

This commit is contained in:
2025-10-31 22:55:16 +08:00
parent 7fd1720826
commit 4e8fd1f38e
10 changed files with 779 additions and 0 deletions

View File

@@ -0,0 +1,102 @@
package com.vetti.hotake.service;
import com.vetti.hotake.domain.HotakeSysFile;
import com.vetti.hotake.domain.dto.HotakeSysFileDto;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
/**
* 文件管理Service接口
*
* @author ID
* @date 2025-09-06
*/
public interface IHotakeSysFileService {
/**
* 查询文件管理
*
* @param id 文件管理主键
* @return 文件管理
*/
public HotakeSysFile selectHotakeSysFileById(Long id);
/**
* 查询文件管理列表
*
* @param hotakeSysFile 文件管理
* @return 文件管理集合
*/
public List<HotakeSysFileDto> selectHotakeSysFileList(HotakeSysFile hotakeSysFile);
/**
* 新增文件管理
*
* @param hotakeSysFile 文件管理
* @return 结果
*/
public HotakeSysFile insertHotakeSysFile(MultipartFile file, HotakeSysFile hotakeSysFile);
/**
* 修改文件管理
*
* @param hotakeSysFile 文件管理
* @return 结果
*/
public int updateHotakeSysFile(MultipartFile file, HotakeSysFile hotakeSysFile);
/**
* 批量删除文件管理
*
* @param ids 需要删除的文件管理主键集合
* @return 结果
*/
public int deleteHotakeSysFileByIds(Long[] ids);
/**
* 删除文件管理信息
*
* @param id 文件管理主键
* @return 结果
*/
public int deleteHotakeSysFileById(Long id);
/**
* 批量新增文件管理
*
* @param hotakeSysFileList 文件管理列表
* @return 结果
*/
public int batchInsertHotakeSysFile(List<HotakeSysFile> hotakeSysFileList);
int availableSysFile(Long id);
/**
* 获取文件url
*
* @param data
* @return
*/
String url(HotakeSysFile data);
/**
* 获取文件url
*
* @param id
* @return
*/
String url(Long id);
/**
* 获取文件url
*
* @param ids
* @return
*/
Map<Long, String> url(Long[] ids);
public void updateData(MultipartFile file, HotakeSysFile hotakeSysFile);
}

View File

@@ -0,0 +1,221 @@
package com.vetti.hotake.service.impl;
import com.vetti.common.config.MinioConfig;
import com.vetti.common.core.service.BaseServiceImpl;
import com.vetti.common.enums.FillTypeEnum;
import com.vetti.common.utils.file.FileTypeUtils;
import com.vetti.common.utils.file.FileUtils;
import com.vetti.common.utils.file.MinioUtil;
import com.vetti.common.utils.sign.Md5Utils;
import com.vetti.hotake.domain.HotakeSysFile;
import com.vetti.hotake.domain.dto.HotakeSysFileDto;
import com.vetti.hotake.mapper.HotakeSysFileMapper;
import com.vetti.hotake.service.IHotakeSysFileService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.vetti.common.utils.SecurityUtils.getLoginUser;
/**
* 文件管理Service业务层处理
*
* @author ID
* @date 2025-09-06
*/
@SuppressWarnings("all")
@Service
public class HotakeSysFileServiceImpl extends BaseServiceImpl implements IHotakeSysFileService {
@Resource
private HotakeSysFileMapper hotakeSysFileMapper;
@Resource
MinioUtil minioUtil;
@Resource
MinioConfig minioConfig;
/**
* 查询文件管理
*
* @param id 文件管理主键
* @return 文件管理
*/
@Transactional(readOnly = true)
@Override
public HotakeSysFile selectHotakeSysFileById(Long id) {
return hotakeSysFileMapper.selectHotakeSysFileById(id);
}
/**
* 查询文件管理列表
*
* @param HotakeSysFile 文件管理
* @return 文件管理
*/
@Transactional(readOnly = true)
@Override
public List<HotakeSysFileDto> selectHotakeSysFileList(HotakeSysFile HotakeSysFile) {
List<HotakeSysFileDto> l = new ArrayList<>();
List<HotakeSysFile> dataL = hotakeSysFileMapper.selectHotakeSysFileList(HotakeSysFile);
if (CollectionUtils.isNotEmpty(dataL)) {
dataL.forEach(e -> {
l.add(HotakeSysFileDto.build(url(e), e));
});
}
return l;
}
/**
* 新增文件管理
*
* @param HotakeSysFile 文件管理
* @return 结果
*/
@Transactional(rollbackFor = Exception.class)
@Override
public HotakeSysFile insertHotakeSysFile(MultipartFile file, HotakeSysFile HotakeSysFile) {
if (file == null) {
throw new IllegalArgumentException("文件不能为空");
}
if (StringUtils.isEmpty(HotakeSysFile.getCode())) {
throw new IllegalArgumentException("CODE不能为空");
}
if (StringUtils.isEmpty(HotakeSysFile.getMinioBucketName())) {
throw new IllegalArgumentException("桶不能为空");
}
if (checkCode(HotakeSysFile)) {
throw new IllegalArgumentException("CODE不能重复");
}
HotakeSysFile.setUploadPlatform(1);//PC
updateData(file, HotakeSysFile);
fill(FillTypeEnum.INSERT.getCode(), HotakeSysFile);
hotakeSysFileMapper.insertHotakeSysFile(HotakeSysFile);
return HotakeSysFile;
}
private boolean checkCode(HotakeSysFile HotakeSysFile) {
HotakeSysFile query = new HotakeSysFile();
query.setCode(HotakeSysFile.getCode());
query.setMinioBucketName(HotakeSysFile.getMinioBucketName());
List<HotakeSysFile> HotakeSysFiles = hotakeSysFileMapper.selectHotakeSysFileList(HotakeSysFile);
if (HotakeSysFiles.isEmpty()) {
return false;
}
return true;
}
@Override
public void updateData(MultipartFile file, HotakeSysFile HotakeSysFile) {
try {
String fileUrl = minioUtil.uploadFile(file, minioUtil.objectName(getLoginUser().getUserId()), HotakeSysFile.getMinioBucketName());
HotakeSysFile.setStoragePath(fileUrl);
HotakeSysFile.setAvailable(1);//可用
// HotakeSysFile.setUploadPlatform(1);//PC
HotakeSysFile.setFileName(FileUtils.cleanFileName(file.getOriginalFilename()));
HotakeSysFile.setFileType(FileTypeUtils.getFileType(file.getOriginalFilename()));
HotakeSysFile.setFileSize(file.getSize());
HotakeSysFile.setFileMd5(Md5Utils.getFileMd5(FileUtils.convert(file)));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 修改文件管理
*
* @param HotakeSysFile 文件管理
* @return 结果
*/
@Transactional(rollbackFor = Exception.class)
@Override
public int updateHotakeSysFile(MultipartFile file, HotakeSysFile HotakeSysFile) {
HotakeSysFile old = hotakeSysFileMapper.selectHotakeSysFileById(HotakeSysFile.getId());
if (file == null) {
old.setRemark(HotakeSysFile.getRemark());
fill(FillTypeEnum.UPDATE.getCode(), old);
return hotakeSysFileMapper.updateHotakeSysFile(old);
}
HotakeSysFile.setUploadPlatform(1);//PC
updateData(file, HotakeSysFile);
fill(FillTypeEnum.UPDATE.getCode(), HotakeSysFile);
return hotakeSysFileMapper.updateHotakeSysFile(HotakeSysFile);
}
/**
* 批量删除文件管理
*
* @param ids 需要删除的文件管理主键
* @return 结果
*/
@Transactional(rollbackFor = Exception.class)
@Override
public int deleteHotakeSysFileByIds(Long[] ids) {
return hotakeSysFileMapper.deleteHotakeSysFileByIds(ids);
}
/**
* 删除文件管理信息
*
* @param id 文件管理主键
* @return 结果
*/
@Transactional(rollbackFor = Exception.class)
@Override
public int deleteHotakeSysFileById(Long id) {
return hotakeSysFileMapper.deleteHotakeSysFileById(id);
}
/**
* 批量新增文件管理
*
* @param HotakeSysFileList 文件管理列表
* @return 结果
*/
@Transactional(rollbackFor = Exception.class)
@Override
public int batchInsertHotakeSysFile(List<HotakeSysFile> HotakeSysFileList) {
return hotakeSysFileMapper.batchInsertHotakeSysFile(HotakeSysFileList);
}
@Override
public int availableSysFile(Long id) {
HotakeSysFile HotakeSysFile = hotakeSysFileMapper.selectHotakeSysFileById(id);
HotakeSysFile.setAvailable(2);
fill(FillTypeEnum.UPDATE.getCode(), HotakeSysFile);
return hotakeSysFileMapper.updateHotakeSysFile(HotakeSysFile);
}
@Override
public String url(HotakeSysFile data) {
return minioConfig.getEndpoint() + "/" + data.getMinioBucketName() + "/" + data.getStoragePath();
}
@Override
public String url(Long id) {
return url(hotakeSysFileMapper.selectHotakeSysFileById(id));
}
@Override
public Map<Long, String> url(Long[] ids) {
List<HotakeSysFile> l = hotakeSysFileMapper.selectHotakeSysFileByIds(ids);
if (CollectionUtils.isEmpty(l)) {
return null;
}
Map<Long, String> map = new HashMap<>();
l.forEach(e -> {
map.put(e.getId(), url(e));
});
return map;
}
}