From f81c345f7bf058fdfe5fee6f0dfd5de0f4cb767c Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期一, 12 五月 2025 16:29:02 +0800 Subject: [PATCH] Merge branch 'master' of http://114.132.189.42:9002/r/product-inventory-management-after --- src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java | 80 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 80 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java b/src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java new file mode 100644 index 0000000..f228680 --- /dev/null +++ b/src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java @@ -0,0 +1,80 @@ +package com.ruoyi.other.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.other.mapper.TempFileMapper; +import com.ruoyi.other.pojo.TempFile; +import com.ruoyi.other.service.TempFileService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.time.LocalDateTime; +import java.util.List; +import java.util.UUID; + +@Service +@Slf4j +public class TempFileServiceImpl extends ServiceImpl<TempFileMapper, TempFile> implements TempFileService { + + @Autowired + private TempFileMapper tempFileMapper; + + @Value("${file.temp-dir}") + private String tempDir; + + // 涓婁紶鍒颁复鏃剁洰褰� + @Override + public TempFile uploadFile(MultipartFile file) throws IOException { + // 1. 鐢熸垚涓存椂鏂囦欢ID鍜岃矾寰� + String tempId = UUID.randomUUID().toString(); + Path tempFilePath = Paths.get(tempDir, tempId + "_" + file.getOriginalFilename()); + + // 2. 纭繚鐩綍瀛樺湪 + Path parentDir = tempFilePath.getParent(); + if (parentDir != null) { + Files.createDirectories(parentDir); // 閫掑綊鍒涘缓鐩綍 + } + + // 3. 淇濆瓨鏂囦欢鍒颁复鏃剁洰褰� + file.transferTo(tempFilePath.toFile()); + + // 4. 淇濆瓨涓存椂鏂囦欢璁板綍 + TempFile tempFileRecord = new TempFile(); + tempFileRecord.setTempId(tempId); + tempFileRecord.setOriginalName(file.getOriginalFilename()); + tempFileRecord.setTempPath(tempFilePath.toString()); + tempFileRecord.setExpireTime(LocalDateTime.now().plusHours(2)); // 2灏忔椂鍚庤繃鏈� + tempFileMapper.insert(tempFileRecord); + + return tempFileRecord; + } + + @Scheduled(cron = "0 0 3 * * ?") // 姣忓ぉ鍑屾櫒3鐐规墽琛� + public void cleanupExpiredTempFiles() { + LambdaQueryWrapper<TempFile> wrapper = new LambdaQueryWrapper<>(); + wrapper.lt(TempFile::getExpireTime, LocalDateTime.now()); // expireTime < 褰撳墠鏃堕棿 + + List<TempFile> expiredFiles = tempFileMapper.selectList(wrapper); + for (TempFile file : expiredFiles) { + try { + // 鍒犻櫎鐗╃悊鏂囦欢 + Files.deleteIfExists(Paths.get(file.getTempPath())); + // 鍒犻櫎鏁版嵁搴撹褰� + tempFileMapper.deleteById(file); + log.info("宸叉竻鐞嗚繃鏈熶复鏃舵枃浠�: {}", file.getTempPath()); + } catch (IOException e) { + log.error("鍒犻櫎鏂囦欢澶辫触: {}", file.getTempPath(), e); + // 鍙�夋嫨璁板綍澶辫触鏃ュ織鎴栭噸璇� + } + } + log.info("杩囨湡涓存椂鏂囦欢娓呯悊瀹屾垚锛屽叡娓呯悊 {} 涓枃浠�", expiredFiles.size()); + } +} -- Gitblit v1.9.3