From c84d4bf9c623d11afff2bfaf1b940108a45fb83e Mon Sep 17 00:00:00 2001 From: MAC <1162714483@qq.com> Date: Tue, 7 Dec 2021 23:41:49 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=9B=BE=E7=89=87=E9=A2=84=E8=A7=88):=20?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E9=A2=84=E8=A7=88=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FiletransferController.java | 39 +++++++++++++++++++ .../file/controller/OfficeController.java | 2 + .../com/qiwenshare/file/domain/Image.java | 32 +++++++++++++++ .../qiwenshare/file/mapper/ImageMapper.java | 12 ++++++ .../file/service/FiletransferService.java | 21 ++++++++++ .../qiwenshare/file/vo/file/FileListVo.java | 3 ++ src/main/resources/mapper/UserFileMapper.xml | 2 + 7 files changed, 111 insertions(+) create mode 100644 src/main/java/com/qiwenshare/file/domain/Image.java create mode 100644 src/main/java/com/qiwenshare/file/mapper/ImageMapper.java diff --git a/src/main/java/com/qiwenshare/file/controller/FiletransferController.java b/src/main/java/com/qiwenshare/file/controller/FiletransferController.java index 83a5617..44b43d9 100644 --- a/src/main/java/com/qiwenshare/file/controller/FiletransferController.java +++ b/src/main/java/com/qiwenshare/file/controller/FiletransferController.java @@ -1,6 +1,7 @@ package com.qiwenshare.file.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.qiwenshare.common.anno.MyLog; import com.qiwenshare.common.exception.NotLoginException; import com.qiwenshare.common.result.RestResult; @@ -12,10 +13,14 @@ import com.qiwenshare.file.domain.*; import com.qiwenshare.file.dto.file.DownloadFileDTO; import com.qiwenshare.file.dto.file.UploadFileDTO; import com.qiwenshare.file.dto.file.PreviewDTO; +import com.qiwenshare.file.mapper.ImageMapper; import com.qiwenshare.file.service.StorageService; import com.qiwenshare.file.vo.file.FileListVo; import com.qiwenshare.file.vo.file.UploadFileVo; import com.qiwenshare.ufop.constant.UploadFileStatusEnum; +import com.qiwenshare.ufop.factory.UFOPFactory; +import com.qiwenshare.ufop.operation.download.Downloader; +import com.qiwenshare.ufop.operation.download.domain.DownloadFile; import com.qiwenshare.ufop.util.UFOPUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -24,8 +29,12 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.List; @@ -52,6 +61,10 @@ public class FiletransferController { StorageService storageService; @Resource IUploadTaskService uploadTaskService; + @Resource + ImageMapper imageMapper; + @Resource + UFOPFactory ufopFactory; @Resource IUploadTaskDetailService uploadTaskDetailService; @@ -211,6 +224,32 @@ public class FiletransferController { } FileBean fileBean = fileService.getById(userFile.getFileId()); + /********************************** 图片预览适配 **************************************/ + LambdaQueryWrapper imageLambdaQueryWrapper = new LambdaQueryWrapper<>(); + imageLambdaQueryWrapper.eq(Image::getFileId, fileBean.getFileId()); + Image result = imageMapper.selectOne(imageLambdaQueryWrapper); + if (result == null) { + if (UFOPUtils.isImageFile(userFile.getExtendName())) { + Downloader downloader = ufopFactory.getDownloader(fileBean.getStorageType()); + DownloadFile downloadFile = new DownloadFile(); + downloadFile.setFileUrl(fileBean.getFileUrl()); + InputStream is = downloader.getInputStream(downloadFile); + BufferedImage src = null; + try { + src = ImageIO.read(is); + } catch (IOException e) { + e.printStackTrace(); + } + Image image = new Image(); + image.setImageWidth(src.getWidth()); + image.setImageHeight(src.getHeight()); + image.setFileId(fileBean.getFileId()); + imageMapper.insert(image); + } + } + + /***************************************************************************/ + String mime= MimeUtils.getMime(userFile.getExtendName()); httpServletResponse.setHeader("Content-Type", mime); String rangeString = httpServletRequest.getHeader("Range");//如果是video标签发起的请求就不会为null diff --git a/src/main/java/com/qiwenshare/file/controller/OfficeController.java b/src/main/java/com/qiwenshare/file/controller/OfficeController.java index 268a084..c245d7d 100644 --- a/src/main/java/com/qiwenshare/file/controller/OfficeController.java +++ b/src/main/java/com/qiwenshare/file/controller/OfficeController.java @@ -276,6 +276,8 @@ public class OfficeController { lambdaUpdateWrapper .set(FileBean::getIdentifier, md5Str) .set(FileBean::getFileSize, Long.valueOf(fileLength)) + .set(FileBean::getModifyTime, DateUtil.getCurrentTime()) + .set(FileBean::getModifyUserId, loginUser.getUserId()) .eq(FileBean::getFileId, fileBean.getFileId()); fileService.update(lambdaUpdateWrapper); diff --git a/src/main/java/com/qiwenshare/file/domain/Image.java b/src/main/java/com/qiwenshare/file/domain/Image.java new file mode 100644 index 0000000..7b163d4 --- /dev/null +++ b/src/main/java/com/qiwenshare/file/domain/Image.java @@ -0,0 +1,32 @@ +package com.qiwenshare.file.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import javax.persistence.*; + +/** + * @author MAC + * @version 1.0 + * @description: TODO + * @date 2021/12/7 22:05 + */ +@Data +@Table(name = "image") +@Entity +@TableName("image") +public class Image { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @TableId(type = IdType.AUTO) + @Column(columnDefinition="bigint(20)") + private Long imageId; + @Column(columnDefinition = "bigint(20)") + private Long fileId; + @Column(columnDefinition="int(5)") + private Integer imageWidth; + @Column(columnDefinition="int(5)") + private Integer imageHeight; +} diff --git a/src/main/java/com/qiwenshare/file/mapper/ImageMapper.java b/src/main/java/com/qiwenshare/file/mapper/ImageMapper.java new file mode 100644 index 0000000..0f98682 --- /dev/null +++ b/src/main/java/com/qiwenshare/file/mapper/ImageMapper.java @@ -0,0 +1,12 @@ +package com.qiwenshare.file.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qiwenshare.file.domain.Image; + +public interface ImageMapper extends BaseMapper { + + + + +} diff --git a/src/main/java/com/qiwenshare/file/service/FiletransferService.java b/src/main/java/com/qiwenshare/file/service/FiletransferService.java index f6a2b65..fd41af2 100644 --- a/src/main/java/com/qiwenshare/file/service/FiletransferService.java +++ b/src/main/java/com/qiwenshare/file/service/FiletransferService.java @@ -32,8 +32,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.awt.image.BufferedImage; import java.io.*; import java.util.List; import java.util.zip.Adler32; @@ -62,6 +64,8 @@ public class FiletransferService implements IFiletransferService { UploadTaskDetailMapper UploadTaskDetailMapper; @Resource UploadTaskMapper uploadTaskMapper; + @Resource + ImageMapper imageMapper; @Override public void uploadFile(HttpServletRequest request, UploadFileDTO uploadFileDto, Long userId) { @@ -130,6 +134,23 @@ public class FiletransferService implements IFiletransferService { lambdaUpdateWrapper.set(UploadTask::getUploadStatus, UploadFileStatusEnum.SUCCESS.getCode()) .eq(UploadTask::getIdentifier, uploadFileDto.getIdentifier()); uploadTaskMapper.update(null, lambdaUpdateWrapper); + if (UFOPUtils.isImageFile(uploadFileResult.getExtendName())) { + Downloader downloader = ufopFactory.getDownloader(uploadFileResult.getStorageType().getCode()); + DownloadFile downloadFile = new DownloadFile(); + downloadFile.setFileUrl(uploadFileResult.getFileUrl()); + InputStream is = downloader.getInputStream(downloadFile); + BufferedImage src = null; + try { + src = ImageIO.read(is); + } catch (IOException e) { + e.printStackTrace(); + } + Image image = new Image(); + image.setImageWidth(src.getWidth()); + image.setImageHeight(src.getHeight()); + image.setFileId(fileBean.getFileId()); + imageMapper.insert(image); + } } else if (UploadFileStatusEnum.UNCOMPLATE.equals(uploadFileResult.getStatus())) { UploadTaskDetail UploadTaskDetail = new UploadTaskDetail(); diff --git a/src/main/java/com/qiwenshare/file/vo/file/FileListVo.java b/src/main/java/com/qiwenshare/file/vo/file/FileListVo.java index ecc32b1..c84f209 100644 --- a/src/main/java/com/qiwenshare/file/vo/file/FileListVo.java +++ b/src/main/java/com/qiwenshare/file/vo/file/FileListVo.java @@ -41,4 +41,7 @@ public class FileListVo { private String deleteTime; private String deleteBatchNum; + + private Integer imageWidth; + private Integer imageHeight; } diff --git a/src/main/resources/mapper/UserFileMapper.xml b/src/main/resources/mapper/UserFileMapper.xml index 6df4505..11ce514 100644 --- a/src/main/resources/mapper/UserFileMapper.xml +++ b/src/main/resources/mapper/UserFileMapper.xml @@ -14,6 +14,7 @@ select * from userfile + left join image on userfile.fileId = image.fileId limit #{beginCount}, #{pageCount}