ZbPicToPicServiceImpl.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. package com.ruoyi.system.service.impl;
  2. import cn.hutool.core.collection.CollectionUtil;
  3. import cn.hutool.core.net.URLEncoder;
  4. import cn.hutool.core.util.ObjectUtil;
  5. import cn.hutool.core.util.RandomUtil;
  6. import cn.hutool.core.util.StrUtil;
  7. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  8. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  9. import com.ruoyi.common.config.RuoYiConfig;
  10. import com.ruoyi.common.utils.DateUtils;
  11. import com.ruoyi.common.utils.file.FileUtils;
  12. import com.ruoyi.system.domain.grallery.ZbPicToPic;
  13. import com.ruoyi.system.domain.grallery.ZbZip;
  14. import com.ruoyi.system.dto.PicToPicDto;
  15. import com.ruoyi.system.dto.UploadResult;
  16. import com.ruoyi.system.mapper.ZbPicToPicMapper;
  17. import com.ruoyi.system.service.IFileService;
  18. import com.ruoyi.system.service.IZbFileService;
  19. import com.ruoyi.system.service.IZbPicToPicService;
  20. import com.ruoyi.system.service.IZbZipService;
  21. import lombok.RequiredArgsConstructor;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.web.multipart.MultipartFile;
  24. import java.io.File;
  25. import java.io.FileOutputStream;
  26. import java.io.IOException;
  27. import java.nio.charset.Charset;
  28. import java.util.List;
  29. import java.util.stream.Collectors;
  30. import java.util.zip.ZipEntry;
  31. import java.util.zip.ZipOutputStream;
  32. /**
  33. * 图来图往Service业务层处理
  34. *
  35. * @author ruoyi
  36. * @date 2020-12-02
  37. */
  38. @Service
  39. @RequiredArgsConstructor
  40. public class ZbPicToPicServiceImpl extends ServiceImpl<ZbPicToPicMapper, ZbPicToPic> implements IZbPicToPicService {
  41. private final IFileService fileService;
  42. private final RuoYiConfig ruoYiConfig;
  43. private final IZbZipService zbZipService;
  44. private final IZbFileService zbFileService;
  45. /**
  46. * 查询图来图往列表
  47. *
  48. * @param zbPicToPic 图来图往
  49. * @return 图来图往
  50. */
  51. @Override
  52. public List<PicToPicDto> selectZbPicToPicList(ZbPicToPic zbPicToPic, Page<PicToPicDto> page) {
  53. return baseMapper.selectZbPicToPicList(zbPicToPic, page).stream().peek(x -> {
  54. x.setZipUrl(ObjectUtil.isEmpty(x.getZipUrl()) ? null : ruoYiConfig.getUrl() + x.getZipUrl());
  55. x.setQrCodeUrl(ObjectUtil.isEmpty(x.getQrCodeUrl()) ? null : ruoYiConfig.getUrl() + x.getQrCodeUrl());
  56. }).collect(Collectors.toList());
  57. }
  58. /**
  59. * 新增图来图往
  60. *
  61. * @param zbPicToPic 图来图往
  62. * @return 结果
  63. */
  64. @Override
  65. public int insertZbPicToPic(ZbPicToPic zbPicToPic) {
  66. zbPicToPic.setCreateTime(DateUtils.getNowDate());
  67. //Long qrCodeId = zbPicToPic.getQrCodeId();
  68. return baseMapper.insert(zbPicToPic);
  69. }
  70. /**
  71. * 修改图来图往
  72. *
  73. * @param zbPicToPic 图来图往
  74. * @return 结果
  75. */
  76. @Override
  77. public int updateZbPicToPic(ZbPicToPic zbPicToPic) {
  78. zbPicToPic.setUpdateTime(DateUtils.getNowDate());
  79. return baseMapper.updateById(zbPicToPic);
  80. }
  81. /**
  82. * 门户图来图往上传压缩包接口
  83. * @param files
  84. * @return
  85. */
  86. @Override
  87. public ZbZip uploadToZip(MultipartFile[] files) {
  88. List<UploadResult> upload = fileService.upload(files, false);
  89. String profile = RuoYiConfig.getProfile();
  90. String timeFormat = FileUtils.getTimeFileDir();
  91. String pathname = timeFormat + RandomUtil.randomString(20) + ".zip";
  92. File file = new File(profile + File.separator + pathname);
  93. FileUtils.checkOrCreateParentDir(file);
  94. try {
  95. FileOutputStream fileOutputStream = new FileOutputStream(file);
  96. ZipOutputStream zipOutputStream = new ZipOutputStream(fileOutputStream);
  97. for (MultipartFile multipartFile : files) {
  98. String originalFilename = multipartFile.getOriginalFilename();
  99. zipOutputStream.putNextEntry(new ZipEntry(originalFilename));
  100. zipOutputStream.write(multipartFile.getBytes());
  101. zipOutputStream.flush();
  102. }
  103. zipOutputStream.finish();
  104. zipOutputStream.close();
  105. } catch (IOException e) {
  106. e.printStackTrace();
  107. }
  108. fileService.upload(file);
  109. ZbZip zbZip = new ZbZip();
  110. zbZip.setFileIds(CollectionUtil.join(upload.stream().map(UploadResult::getFileId).collect(Collectors.toList()), ","));
  111. zbZip.setFileNum(files.length);
  112. zbZip.setName(file.getName());
  113. zbZip.setPath(pathname);
  114. zbZip.setSize(file.length());
  115. zbZip.setUploadTime(DateUtils.getNowDate());
  116. zbZip.setUrl("?path=" + URLEncoder.createDefault().encode(pathname, Charset.defaultCharset()));
  117. zbZipService.save(zbZip);
  118. return zbZip;
  119. }
  120. @Override
  121. public PicToPicDto getDetailById(Long picId) {
  122. PicToPicDto detail = baseMapper.getDetailById(picId);
  123. if (detail != null) {
  124. detail.setQrCodeUrl(StrUtil.isNotBlank(detail.getQrCodeUrl()) ? ruoYiConfig.getUrl() + detail.getQrCodeUrl() : null);
  125. detail.setZipUrl(StrUtil.isNotBlank(detail.getZipUrl()) ? ruoYiConfig.getUrl() + detail.getZipUrl() : null);
  126. }
  127. return detail;
  128. }
  129. }