package com.example.fms.service; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSONObject; import com.example.fms.common.core.base.RedisConf; import com.example.fms.common.model.dto.UploadChuckDTO; import com.example.fms.common.model.vo.ConfigSettingVO; import com.example.fms.common.model.vo.UploadChuckVO; import com.example.fms.common.utils.ExcuteConfigUtils; import com.example.fms.common.utils.FileUtils; import com.example.fms.common.utils.JsonUtils; import com.example.fms.common.utils.RedisUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; @Service @RequiredArgsConstructor public class FileChuckService { private final RedisUtil redisUtil; public Boolean startChunks(UploadChuckDTO uploadChuckDTO) { String md5 = uploadChuckDTO.getMd5(); if (md5 == null) { return false; } UploadChuckVO uploadChuckVO = new UploadChuckVO(); uploadChuckVO.setOrginName(uploadChuckDTO.getFileName()); String exrName = FileUtil.extName(uploadChuckDTO.getFileName()); String fileName = IdUtil.simpleUUID() + "." + exrName; uploadChuckVO.setFileName(fileName); uploadChuckVO.setExrName(exrName); uploadChuckVO.setSourceId(uploadChuckDTO.getSourceId()); List configSettingVOS = ExcuteConfigUtils.excuteConfigVO(); //2.根据传入id,获得配置类,根据配置类中的id去匹配sourceId来选择使用的上传方法 ConfigSettingVO configSettingVO = configSettingVOS.stream().filter(item -> item.getId().equals(uploadChuckVO.getSourceId())).findFirst().orElse(null); String filePath = FileUtils.getDateFilePath(configSettingVO.getFilePath()); uploadChuckVO.setFilePath(filePath); String key = this.getTemFileMessageKey(uploadChuckDTO.getMd5()); String jsons = JSONObject.toJSONString(uploadChuckVO); redisUtil.set(key, jsons); return true; } public String getTemFileMessageKey(String md5) { String key = RedisConf.TEM_FILE_MESSAGE + RedisConf.SYMBOL_COLON + md5; return key; } public UploadChuckVO getTemFileMessage(String md5) { String key = this.getTemFileMessageKey(md5); String jsons = redisUtil.get(key); if (jsons == null) { return null; } UploadChuckVO uploadChuckVO = JsonUtils.jsonToPojo(jsons, UploadChuckVO.class); return uploadChuckVO; } public void removeTemFileMessage(String md5) { String key = this.getTemFileMessageKey(md5); redisUtil.delete(key); } }