FileChuckService.java 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package com.example.fms.service;
  2. import cn.hutool.core.io.FileUtil;
  3. import cn.hutool.core.util.IdUtil;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.example.fms.common.core.base.RedisConf;
  6. import com.example.fms.common.model.dto.UploadChuckDTO;
  7. import com.example.fms.common.model.vo.ConfigSettingVO;
  8. import com.example.fms.common.model.vo.UploadChuckVO;
  9. import com.example.fms.common.utils.ExcuteConfigUtils;
  10. import com.example.fms.common.utils.FileUtils;
  11. import com.example.fms.common.utils.JsonUtils;
  12. import com.example.fms.common.utils.RedisUtil;
  13. import lombok.RequiredArgsConstructor;
  14. import org.springframework.stereotype.Service;
  15. import java.util.List;
  16. @Service
  17. @RequiredArgsConstructor
  18. public class FileChuckService {
  19. private final RedisUtil redisUtil;
  20. public Boolean startChunks(UploadChuckDTO uploadChuckDTO) {
  21. String md5 = uploadChuckDTO.getMd5();
  22. if (md5 == null) {
  23. return false;
  24. }
  25. UploadChuckVO uploadChuckVO = new UploadChuckVO();
  26. uploadChuckVO.setOrginName(uploadChuckDTO.getFileName());
  27. String exrName = FileUtil.extName(uploadChuckDTO.getFileName());
  28. String fileName = IdUtil.simpleUUID() + "." + exrName;
  29. uploadChuckVO.setFileName(fileName);
  30. uploadChuckVO.setExrName(exrName);
  31. uploadChuckVO.setSourceId(uploadChuckDTO.getSourceId());
  32. List<ConfigSettingVO> configSettingVOS = ExcuteConfigUtils.excuteConfigVO();
  33. //2.根据传入id,获得配置类,根据配置类中的id去匹配sourceId来选择使用的上传方法
  34. ConfigSettingVO configSettingVO = configSettingVOS.stream().filter(item -> item.getId().equals(uploadChuckVO.getSourceId())).findFirst().orElse(null);
  35. String filePath = FileUtils.getDateFilePath(configSettingVO.getFilePath());
  36. uploadChuckVO.setFilePath(filePath);
  37. String key = this.getTemFileMessageKey(uploadChuckDTO.getMd5());
  38. String jsons = JSONObject.toJSONString(uploadChuckVO);
  39. redisUtil.set(key, jsons);
  40. return true;
  41. }
  42. public String getTemFileMessageKey(String md5) {
  43. String key = RedisConf.TEM_FILE_MESSAGE + RedisConf.SYMBOL_COLON + md5;
  44. return key;
  45. }
  46. public UploadChuckVO getTemFileMessage(String md5) {
  47. String key = this.getTemFileMessageKey(md5);
  48. String jsons = redisUtil.get(key);
  49. if (jsons == null) {
  50. return null;
  51. }
  52. UploadChuckVO uploadChuckVO = JsonUtils.jsonToPojo(jsons, UploadChuckVO.class);
  53. return uploadChuckVO;
  54. }
  55. public void removeTemFileMessage(String md5) {
  56. String key = this.getTemFileMessageKey(md5);
  57. redisUtil.delete(key);
  58. }
  59. }