From 40f4657d6f52bc05b9b44997ac89334a8555d082 Mon Sep 17 00:00:00 2001 From: Odboy Date: Wed, 14 Jan 2026 22:53:10 +0800 Subject: [PATCH] =?UTF-8?q?refactor(storage):=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E5=AD=98=E5=82=A8=E6=9C=8D=E5=8A=A1=E7=9A=84?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/odboy/util/KitFileUtil.java | 18 ++++++++++--- .../main/java/cn/odboy/util/KitFileUtil.java | 12 +++++++++ .../SystemLocalStorageController.java | 2 +- .../dal/dataobject/SystemLocalStorageTb.java | 7 +---- .../service/SystemLocalStorageService.java | 26 +++++++++++++------ 5 files changed, 47 insertions(+), 18 deletions(-) diff --git a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/util/KitFileUtil.java b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/util/KitFileUtil.java index 3b029042..911ad3f4 100644 --- a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/util/KitFileUtil.java +++ b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/util/KitFileUtil.java @@ -23,11 +23,15 @@ import static cn.odboy.constant.SystemConst.SYMBOL_SUBTRACT; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.poi.excel.BigExcelWriter; import cn.hutool.poi.excel.ExcelUtil; import cn.odboy.constant.FileTypeEnum; import cn.odboy.constant.SystemConst; 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.FileInputStream; import java.io.IOException; @@ -42,9 +46,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; 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.extern.slf4j.Slf4j; import org.apache.poi.util.IOUtils; @@ -386,4 +387,15 @@ public final class KitFileUtil extends FileUtil { public static String getMd5(File 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; + } } diff --git a/cutejava/cutejava-framework/src/main/java/cn/odboy/util/KitFileUtil.java b/cutejava/cutejava-framework/src/main/java/cn/odboy/util/KitFileUtil.java index a2a8df19..597f7db7 100644 --- a/cutejava/cutejava-framework/src/main/java/cn/odboy/util/KitFileUtil.java +++ b/cutejava/cutejava-framework/src/main/java/cn/odboy/util/KitFileUtil.java @@ -23,6 +23,7 @@ import static cn.odboy.constant.SystemConst.SYMBOL_SUBTRACT; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.poi.excel.BigExcelWriter; import cn.hutool.poi.excel.ExcelUtil; import cn.odboy.constant.FileTypeEnum; @@ -386,4 +387,15 @@ public final class KitFileUtil extends FileUtil { public static String getMd5(File 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; + } } diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/controller/SystemLocalStorageController.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/controller/SystemLocalStorageController.java index 4ebaa181..32cdd47d 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/controller/SystemLocalStorageController.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/controller/SystemLocalStorageController.java @@ -74,7 +74,7 @@ public class SystemLocalStorageController { @ApiOperation("上传图片") @PostMapping("/uploadPicture") public ResponseEntity uploadPicture(@RequestParam MultipartFile file) { - SystemLocalStorageTb localStorage = localStorageService.uploadPictureV1(file); + SystemLocalStorageTb localStorage = localStorageService.uploadPicture(file); return ResponseEntity.ok(localStorage); } diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemLocalStorageTb.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemLocalStorageTb.java index bded4f86..92739b24 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemLocalStorageTb.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemLocalStorageTb.java @@ -16,7 +16,6 @@ package cn.odboy.system.dal.dataobject; import cn.odboy.base.KitBaseUserTimeTb; -import cn.odboy.util.KitBeanUtil; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -46,8 +45,4 @@ public class SystemLocalStorageTb extends KitBaseUserTimeTb { private String size; @ApiModelProperty(value = "日期分组") private String dateGroup; - - public void copy(SystemLocalStorageTb source) { - KitBeanUtil.copyToTarget(source, this); - } -} \ No newline at end of file +} diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemLocalStorageService.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemLocalStorageService.java index a9938b07..437bcc68 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemLocalStorageService.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemLocalStorageService.java @@ -22,7 +22,6 @@ import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.util.StrUtil; import cn.odboy.base.KitPageResult; import cn.odboy.constant.FileTypeEnum; -import cn.odboy.framework.context.KitSpringBeanHolder; import cn.odboy.framework.exception.BadRequestException; import cn.odboy.framework.properties.AppProperties; import cn.odboy.framework.server.core.KitFileLocalUploadHelper; @@ -40,11 +39,14 @@ import java.io.File; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +@Slf4j @Service public class SystemLocalStorageService { @@ -54,6 +56,9 @@ public class SystemLocalStorageService { private KitFileLocalUploadHelper fileUploadPathHelper; @Autowired private AppProperties properties; + @Lazy + @Autowired + private SystemLocalStorageService localStorageService; /** * 上传 -> TestPassed @@ -75,8 +80,7 @@ public class SystemLocalStorageService { } try { String formatSize = KitFileUtil.getSize(size); - String prefixName = - StrUtil.isBlank(name) ? KitFileUtil.getPrefix(multipartFile.getOriginalFilename()) : name; + String prefixName = KitFileUtil.getPrefix(multipartFile.getOriginalFilename(), name); SystemLocalStorageTb localStorage = new SystemLocalStorageTb(); localStorage.setRealName(file.getName()); localStorage.setName(prefixName); @@ -88,6 +92,7 @@ public class SystemLocalStorageService { systemLocalStorageMapper.insert(localStorage); return localStorage; } catch (Exception e) { + log.error("上传文件失败", e); KitFileUtil.del(file); throw e; } @@ -100,9 +105,7 @@ public class SystemLocalStorageService { */ @Transactional(rollbackFor = Exception.class) public void updateLocalStorageById(SystemLocalStorageTb args) { - SystemLocalStorageTb localStorage = systemLocalStorageMapper.selectById(args.getId()); - localStorage.copy(args); - systemLocalStorageMapper.insertOrUpdate(localStorage); + systemLocalStorageMapper.updateById(args); } /** @@ -159,15 +162,22 @@ public class SystemLocalStorageService { return systemLocalStorageMapper.selectList(wrapper); } - public SystemLocalStorageTb uploadPictureV1(MultipartFile file) { + /** + * 上传图片 + */ + @Transactional(rollbackFor = Exception.class) + public SystemLocalStorageTb uploadPicture(MultipartFile file) { // 判断文件是否为图片 String suffix = KitFileUtil.getSuffix(file.getOriginalFilename()); if (!FileTypeEnum.IMAGE.getCode().equals(KitFileUtil.getFileType(suffix))) { throw new BadRequestException("只能上传图片"); } - return KitSpringBeanHolder.getBean(SystemLocalStorageService.class).uploadFile(null, file); + return localStorageService.uploadFile(null, file); } + /** + * 导出文件上传记录 + */ public void exportLocalStorageXlsx(HttpServletResponse response, SystemQueryStorageArgs args) { List systemLocalStorageTbs = this.queryLocalStorageByArgs(args); List rowVos =