refactor(storage): 重构本地存储服务的文件上传功能
This commit is contained in:
+15
-3
@@ -23,11 +23,15 @@ import static cn.odboy.constant.SystemConst.SYMBOL_SUBTRACT;
|
|||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
import cn.hutool.core.io.IoUtil;
|
import cn.hutool.core.io.IoUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.poi.excel.BigExcelWriter;
|
import cn.hutool.poi.excel.BigExcelWriter;
|
||||||
import cn.hutool.poi.excel.ExcelUtil;
|
import cn.hutool.poi.excel.ExcelUtil;
|
||||||
import cn.odboy.constant.FileTypeEnum;
|
import cn.odboy.constant.FileTypeEnum;
|
||||||
import cn.odboy.constant.SystemConst;
|
import cn.odboy.constant.SystemConst;
|
||||||
import cn.odboy.framework.exception.BadRequestException;
|
import cn.odboy.framework.exception.BadRequestException;
|
||||||
|
import jakarta.servlet.ServletOutputStream;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -42,9 +46,6 @@ import java.util.LinkedHashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import jakarta.servlet.ServletOutputStream;
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import lombok.experimental.UtilityClass;
|
import lombok.experimental.UtilityClass;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.poi.util.IOUtils;
|
import org.apache.poi.util.IOUtils;
|
||||||
@@ -386,4 +387,15 @@ public final class KitFileUtil extends FileUtil {
|
|||||||
public static String getMd5(File file) {
|
public static String getMd5(File file) {
|
||||||
return getMd5(getByte(file));
|
return getMd5(getByte(file));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取文件名前缀
|
||||||
|
*
|
||||||
|
* @param originalFilename 原始文件名
|
||||||
|
* @param firstName 首选文件名,如果不为空,则返回
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
public static String getPrefix(String originalFilename, String firstName) {
|
||||||
|
return StrUtil.isBlank(firstName) ? getPrefix(originalFilename) : firstName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import static cn.odboy.constant.SystemConst.SYMBOL_SUBTRACT;
|
|||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
import cn.hutool.core.io.IoUtil;
|
import cn.hutool.core.io.IoUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.poi.excel.BigExcelWriter;
|
import cn.hutool.poi.excel.BigExcelWriter;
|
||||||
import cn.hutool.poi.excel.ExcelUtil;
|
import cn.hutool.poi.excel.ExcelUtil;
|
||||||
import cn.odboy.constant.FileTypeEnum;
|
import cn.odboy.constant.FileTypeEnum;
|
||||||
@@ -386,4 +387,15 @@ public final class KitFileUtil extends FileUtil {
|
|||||||
public static String getMd5(File file) {
|
public static String getMd5(File file) {
|
||||||
return getMd5(getByte(file));
|
return getMd5(getByte(file));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取文件名前缀
|
||||||
|
*
|
||||||
|
* @param originalFilename 原始文件名
|
||||||
|
* @param firstName 首选文件名,如果不为空,则返回
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
public static String getPrefix(String originalFilename, String firstName) {
|
||||||
|
return StrUtil.isBlank(firstName) ? getPrefix(originalFilename) : firstName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -74,7 +74,7 @@ public class SystemLocalStorageController {
|
|||||||
@ApiOperation("上传图片")
|
@ApiOperation("上传图片")
|
||||||
@PostMapping("/uploadPicture")
|
@PostMapping("/uploadPicture")
|
||||||
public ResponseEntity<SystemLocalStorageTb> uploadPicture(@RequestParam MultipartFile file) {
|
public ResponseEntity<SystemLocalStorageTb> uploadPicture(@RequestParam MultipartFile file) {
|
||||||
SystemLocalStorageTb localStorage = localStorageService.uploadPictureV1(file);
|
SystemLocalStorageTb localStorage = localStorageService.uploadPicture(file);
|
||||||
return ResponseEntity.ok(localStorage);
|
return ResponseEntity.ok(localStorage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-6
@@ -16,7 +16,6 @@
|
|||||||
package cn.odboy.system.dal.dataobject;
|
package cn.odboy.system.dal.dataobject;
|
||||||
|
|
||||||
import cn.odboy.base.KitBaseUserTimeTb;
|
import cn.odboy.base.KitBaseUserTimeTb;
|
||||||
import cn.odboy.util.KitBeanUtil;
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
@@ -46,8 +45,4 @@ public class SystemLocalStorageTb extends KitBaseUserTimeTb {
|
|||||||
private String size;
|
private String size;
|
||||||
@ApiModelProperty(value = "日期分组")
|
@ApiModelProperty(value = "日期分组")
|
||||||
private String dateGroup;
|
private String dateGroup;
|
||||||
|
}
|
||||||
public void copy(SystemLocalStorageTb source) {
|
|
||||||
KitBeanUtil.copyToTarget(source, this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
+18
-8
@@ -22,7 +22,6 @@ import cn.hutool.core.io.IORuntimeException;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.odboy.base.KitPageResult;
|
import cn.odboy.base.KitPageResult;
|
||||||
import cn.odboy.constant.FileTypeEnum;
|
import cn.odboy.constant.FileTypeEnum;
|
||||||
import cn.odboy.framework.context.KitSpringBeanHolder;
|
|
||||||
import cn.odboy.framework.exception.BadRequestException;
|
import cn.odboy.framework.exception.BadRequestException;
|
||||||
import cn.odboy.framework.properties.AppProperties;
|
import cn.odboy.framework.properties.AppProperties;
|
||||||
import cn.odboy.framework.server.core.KitFileLocalUploadHelper;
|
import cn.odboy.framework.server.core.KitFileLocalUploadHelper;
|
||||||
@@ -40,11 +39,14 @@ import java.io.File;
|
|||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class SystemLocalStorageService {
|
public class SystemLocalStorageService {
|
||||||
|
|
||||||
@@ -54,6 +56,9 @@ public class SystemLocalStorageService {
|
|||||||
private KitFileLocalUploadHelper fileUploadPathHelper;
|
private KitFileLocalUploadHelper fileUploadPathHelper;
|
||||||
@Autowired
|
@Autowired
|
||||||
private AppProperties properties;
|
private AppProperties properties;
|
||||||
|
@Lazy
|
||||||
|
@Autowired
|
||||||
|
private SystemLocalStorageService localStorageService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 上传 -> TestPassed
|
* 上传 -> TestPassed
|
||||||
@@ -75,8 +80,7 @@ public class SystemLocalStorageService {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
String formatSize = KitFileUtil.getSize(size);
|
String formatSize = KitFileUtil.getSize(size);
|
||||||
String prefixName =
|
String prefixName = KitFileUtil.getPrefix(multipartFile.getOriginalFilename(), name);
|
||||||
StrUtil.isBlank(name) ? KitFileUtil.getPrefix(multipartFile.getOriginalFilename()) : name;
|
|
||||||
SystemLocalStorageTb localStorage = new SystemLocalStorageTb();
|
SystemLocalStorageTb localStorage = new SystemLocalStorageTb();
|
||||||
localStorage.setRealName(file.getName());
|
localStorage.setRealName(file.getName());
|
||||||
localStorage.setName(prefixName);
|
localStorage.setName(prefixName);
|
||||||
@@ -88,6 +92,7 @@ public class SystemLocalStorageService {
|
|||||||
systemLocalStorageMapper.insert(localStorage);
|
systemLocalStorageMapper.insert(localStorage);
|
||||||
return localStorage;
|
return localStorage;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
log.error("上传文件失败", e);
|
||||||
KitFileUtil.del(file);
|
KitFileUtil.del(file);
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
@@ -100,9 +105,7 @@ public class SystemLocalStorageService {
|
|||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void updateLocalStorageById(SystemLocalStorageTb args) {
|
public void updateLocalStorageById(SystemLocalStorageTb args) {
|
||||||
SystemLocalStorageTb localStorage = systemLocalStorageMapper.selectById(args.getId());
|
systemLocalStorageMapper.updateById(args);
|
||||||
localStorage.copy(args);
|
|
||||||
systemLocalStorageMapper.insertOrUpdate(localStorage);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -159,15 +162,22 @@ public class SystemLocalStorageService {
|
|||||||
return systemLocalStorageMapper.selectList(wrapper);
|
return systemLocalStorageMapper.selectList(wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SystemLocalStorageTb uploadPictureV1(MultipartFile file) {
|
/**
|
||||||
|
* 上传图片
|
||||||
|
*/
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public SystemLocalStorageTb uploadPicture(MultipartFile file) {
|
||||||
// 判断文件是否为图片
|
// 判断文件是否为图片
|
||||||
String suffix = KitFileUtil.getSuffix(file.getOriginalFilename());
|
String suffix = KitFileUtil.getSuffix(file.getOriginalFilename());
|
||||||
if (!FileTypeEnum.IMAGE.getCode().equals(KitFileUtil.getFileType(suffix))) {
|
if (!FileTypeEnum.IMAGE.getCode().equals(KitFileUtil.getFileType(suffix))) {
|
||||||
throw new BadRequestException("只能上传图片");
|
throw new BadRequestException("只能上传图片");
|
||||||
}
|
}
|
||||||
return KitSpringBeanHolder.getBean(SystemLocalStorageService.class).uploadFile(null, file);
|
return localStorageService.uploadFile(null, file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出文件上传记录
|
||||||
|
*/
|
||||||
public void exportLocalStorageXlsx(HttpServletResponse response, SystemQueryStorageArgs args) {
|
public void exportLocalStorageXlsx(HttpServletResponse response, SystemQueryStorageArgs args) {
|
||||||
List<SystemLocalStorageTb> systemLocalStorageTbs = this.queryLocalStorageByArgs(args);
|
List<SystemLocalStorageTb> systemLocalStorageTbs = this.queryLocalStorageByArgs(args);
|
||||||
List<SystemLocalStorageExportRowVo> rowVos =
|
List<SystemLocalStorageExportRowVo> rowVos =
|
||||||
|
|||||||
Reference in New Issue
Block a user