diff --git a/pom.xml b/pom.xml index af45ce7..b0a76b9 100644 --- a/pom.xml +++ b/pom.xml @@ -122,6 +122,12 @@ commons-io 2.11.0 + + com.mpatric + mp3agic + 0.9.1 + + diff --git a/src/main/java/com/qiwenshare/file/api/IFileService.java b/src/main/java/com/qiwenshare/file/api/IFileService.java index 2bed764..d9766f2 100644 --- a/src/main/java/com/qiwenshare/file/api/IFileService.java +++ b/src/main/java/com/qiwenshare/file/api/IFileService.java @@ -2,14 +2,15 @@ package com.qiwenshare.file.api; import com.baomidou.mybatisplus.extension.service.IService; import com.qiwenshare.file.domain.FileBean; +import com.qiwenshare.file.vo.file.FileDetailVO; public interface IFileService extends IService { Long getFilePointCount(String fileId); void unzipFile(String userFileId, int unzipMode, String filePath); - public void updateFileDetail(String userFileId, String identifier, long fileSize, long modifyUserId); - + void updateFileDetail(String userFileId, String identifier, long fileSize, long modifyUserId); + FileDetailVO getFileDetail(String userFileId); } diff --git a/src/main/java/com/qiwenshare/file/api/IUserFileService.java b/src/main/java/com/qiwenshare/file/api/IUserFileService.java index 64a1ece..1f0f863 100644 --- a/src/main/java/com/qiwenshare/file/api/IUserFileService.java +++ b/src/main/java/com/qiwenshare/file/api/IUserFileService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.qiwenshare.file.domain.UserFile; import com.qiwenshare.file.vo.file.FileListVo; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -17,8 +18,9 @@ public interface IUserFileService extends IService { IPage getFileByFileType(Integer fileTypeId, Long currentPage, Long pageCount, long userId); List selectUserFileListByPath(String filePath, Long userId); - List selectFileListLikeRightFilePath(String filePath, long userId); List selectFilePathTreeByUserId(Long userId); void deleteUserFile(String userFileId, Long sessionUserId); + List selectUserFileByLikeRightFilePath(@Param("filePath") String filePath, @Param("userId") long userId); + } diff --git a/src/main/java/com/qiwenshare/file/controller/FileController.java b/src/main/java/com/qiwenshare/file/controller/FileController.java index c75cf6a..9a46839 100644 --- a/src/main/java/com/qiwenshare/file/controller/FileController.java +++ b/src/main/java/com/qiwenshare/file/controller/FileController.java @@ -24,6 +24,7 @@ import com.qiwenshare.file.dto.file.*; import com.qiwenshare.file.io.QiwenFile; import com.qiwenshare.file.util.QiwenFileUtil; import com.qiwenshare.file.util.TreeNode; +import com.qiwenshare.file.vo.file.FileDetailVO; import com.qiwenshare.file.vo.file.FileListVo; import com.qiwenshare.file.vo.file.SearchFileVO; import io.swagger.v3.oas.annotations.Operation; @@ -165,10 +166,11 @@ public class FileController { .eq(UserFile::getUserFileId, renameFileDto.getUserFileId()); userFileService.update(lambdaUpdateWrapper); if (1 == userFile.getIsDir()) { - List list = userFileService.selectFileListLikeRightFilePath(userFile.getFilePath() + userFile.getFileName() + "/", sessionUserBean.getUserId()); + List list = userFileService.selectUserFileByLikeRightFilePath(new QiwenFile(userFile.getFilePath(), userFile.getFileName(), true).getPath(), sessionUserBean.getUserId()); for (UserFile newUserFile : list) { - newUserFile.setFilePath(newUserFile.getFilePath().replaceFirst(userFile.getFilePath() + userFile.getFileName() + "/", userFile.getFilePath() + renameFileDto.getFileName() + "/")); + newUserFile.setFilePath(newUserFile.getFilePath().replaceFirst(new QiwenFile(userFile.getFilePath(), userFile.getFileName(), userFile.getIsDir() == 1).getPath(), + new QiwenFile(userFile.getFilePath(), renameFileDto.getFileName(), userFile.getIsDir() == 1).getPath())); userFileService.updateById(newUserFile); } } @@ -429,6 +431,15 @@ public class FileController { return RestResult.success().message("修改文件成功"); } + @Operation(summary = "查询文件详情", description = "查询文件详情", tags = {"file"}) + @RequestMapping(value = "/detail", method = RequestMethod.GET) + @ResponseBody + public RestResult queryFileDetail( + @Parameter(description = "用户文件Id", required = true) String userFileId){ + FileDetailVO vo = fileService.getFileDetail(userFileId); + return RestResult.success().data(vo); + } + diff --git a/src/main/java/com/qiwenshare/file/controller/FiletransferController.java b/src/main/java/com/qiwenshare/file/controller/FiletransferController.java index 421bcdd..75b8d7c 100644 --- a/src/main/java/com/qiwenshare/file/controller/FiletransferController.java +++ b/src/main/java/com/qiwenshare/file/controller/FiletransferController.java @@ -155,11 +155,8 @@ public class FiletransferController { if (userFile.getIsDir() == 0) { userFileIds.add(userFileId); } else { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.likeRight(UserFile::getFilePath, userFile.getFilePath() + QiwenFile.separator + userFile.getFileName()) - .eq(UserFile::getUserId, userFile.getUserId()) - .eq(UserFile::getDeleteFlag, 0); - List userFileList = userFileService.list(lambdaQueryWrapper); + QiwenFile qiwenFile = new QiwenFile(userFile.getFilePath(), userFile.getFileName(), true); + List userFileList = userFileService.selectUserFileByLikeRightFilePath(qiwenFile.getPath(), userFile.getUserId()); List userFileIds1 = userFileList.stream().map(UserFile::getUserFileId).collect(Collectors.toList()); userFileIds.add(userFile.getUserFileId()); userFileIds.addAll(userFileIds1); diff --git a/src/main/java/com/qiwenshare/file/controller/ShareController.java b/src/main/java/com/qiwenshare/file/controller/ShareController.java index 0d5700e..12574de 100644 --- a/src/main/java/com/qiwenshare/file/controller/ShareController.java +++ b/src/main/java/com/qiwenshare/file/controller/ShareController.java @@ -81,7 +81,7 @@ public class ShareController { } if (userFile.getIsDir() == 1) { QiwenFile qiwenFile = new QiwenFile(userFile.getFilePath(), userFile.getFileName(), true); - List userfileList = userFileService.selectFileListLikeRightFilePath(qiwenFile.getPath(), sessionUserBean.getUserId()); + List userfileList = userFileService.selectUserFileByLikeRightFilePath(qiwenFile.getPath(), sessionUserBean.getUserId()); for (UserFile userFile1 : userfileList) { ShareFile shareFile1 = new ShareFile(); shareFile1.setUserFileId(userFile1.getUserFileId()); @@ -121,7 +121,7 @@ public class ShareController { String savefileName = fileDealComp.getRepeatFileName(userFile, savefilePath); if (userFile.getIsDir() == 1) { - List userfileList = userFileService.selectFileListLikeRightFilePath(userFile.getFilePath() + userFile.getFileName(), userFile.getUserId()); + List userfileList = userFileService.selectUserFileByLikeRightFilePath(new QiwenFile(userFile.getFilePath(), userFile.getFileName(), true).getPath(), userFile.getUserId()); log.info("查询文件列表:" + JSON.toJSONString(userfileList)); String filePath = userFile.getFilePath(); userfileList.forEach(p->{ diff --git a/src/main/java/com/qiwenshare/file/domain/Music.java b/src/main/java/com/qiwenshare/file/domain/Music.java new file mode 100644 index 0000000..3a24b4e --- /dev/null +++ b/src/main/java/com/qiwenshare/file/domain/Music.java @@ -0,0 +1,59 @@ +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 2022/4/27 23:44 + */ +@Data +@Table(name = "music") +@Entity +@TableName("music") +public class Music { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @TableId(type = IdType.AUTO) + @Column(columnDefinition="bigint(20)") + private String musicId; + @Column(columnDefinition = "bigint(20) comment '文件id'") + private String fileId; + private String track; + @Column + private String artist; + @Column + private String title; + @Column + private String album; + @Column + private String year; + @Column + private String genre; + @Column + private String comment; + @Column + private String lyrics; + @Column + private String composer; + @Column + private String publicer; + @Column + private String originalArtist; + @Column + private String albumArtist; + @Column + private String copyright; + @Column + private String url; + @Column + private String encoder; + @Column(columnDefinition = "mediumblob") + private String albumImage; +} diff --git a/src/main/java/com/qiwenshare/file/mapper/MusicMapper.java b/src/main/java/com/qiwenshare/file/mapper/MusicMapper.java new file mode 100644 index 0000000..eca53be --- /dev/null +++ b/src/main/java/com/qiwenshare/file/mapper/MusicMapper.java @@ -0,0 +1,13 @@ +package com.qiwenshare.file.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qiwenshare.file.domain.Image; +import com.qiwenshare.file.domain.Music; + +public interface MusicMapper extends BaseMapper { + + + + +} diff --git a/src/main/java/com/qiwenshare/file/mapper/UserFileMapper.java b/src/main/java/com/qiwenshare/file/mapper/UserFileMapper.java index 53be18d..16d39ff 100644 --- a/src/main/java/com/qiwenshare/file/mapper/UserFileMapper.java +++ b/src/main/java/com/qiwenshare/file/mapper/UserFileMapper.java @@ -7,6 +7,8 @@ import com.qiwenshare.file.domain.UserFile; import com.qiwenshare.file.vo.file.FileListVo; import org.apache.ibatis.annotations.Param; +import java.util.List; + public interface UserFileMapper extends BaseMapper { void updateFilepathByPathAndName(String oldfilePath, String newfilePath, String fileName, String extendName, long userId); @@ -22,6 +24,8 @@ public interface UserFileMapper extends BaseMapper { @Param("newFilePath") String newfilePath, @Param("userId") long userId); + List selectUserFileByLikeRightFilePath(@Param("filePath") String filePath, @Param("userId") long userId); + IPage selectPageVo(Page page, @Param("userFile") UserFile userFile, @Param("fileTypeId") Integer fileTypeId); Long selectStorageSizeByUserId(@Param("userId") Long userId); } diff --git a/src/main/java/com/qiwenshare/file/service/FileService.java b/src/main/java/com/qiwenshare/file/service/FileService.java index 62ac69f..ad08101 100644 --- a/src/main/java/com/qiwenshare/file/service/FileService.java +++ b/src/main/java/com/qiwenshare/file/service/FileService.java @@ -1,7 +1,9 @@ package com.qiwenshare.file.service; +import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qiwenshare.common.exception.QiwenException; @@ -10,10 +12,15 @@ import com.qiwenshare.common.util.DateUtil; import com.qiwenshare.file.api.IFileService; import com.qiwenshare.file.component.AsyncTaskComp; import com.qiwenshare.file.domain.FileBean; +import com.qiwenshare.file.domain.Image; +import com.qiwenshare.file.domain.Music; import com.qiwenshare.file.domain.UserFile; import com.qiwenshare.file.mapper.FileMapper; +import com.qiwenshare.file.mapper.ImageMapper; +import com.qiwenshare.file.mapper.MusicMapper; import com.qiwenshare.file.mapper.UserFileMapper; import com.qiwenshare.file.util.QiwenFileUtil; +import com.qiwenshare.file.vo.file.FileDetailVO; import com.qiwenshare.ufop.factory.UFOPFactory; import com.qiwenshare.ufop.operation.download.Downloader; import com.qiwenshare.ufop.operation.download.domain.DownloadFile; @@ -50,6 +57,10 @@ public class FileService extends ServiceImpl implements IF @Resource AsyncTaskComp asyncTaskComp; + @Resource + MusicMapper musicMapper; + @Resource + ImageMapper imageMapper; @Override public Long getFilePointCount(String fileId) { @@ -107,7 +118,7 @@ public class FileService extends ServiceImpl implements IF } } - + @Override public void updateFileDetail(String userFileId, String identifier, long fileSize, long modifyUserId) { UserFile userFile = userFileMapper.selectById(userFileId); @@ -120,4 +131,18 @@ public class FileService extends ServiceImpl implements IF fileMapper.updateById(fileBean); } + @Override + public FileDetailVO getFileDetail(String userFileId) { + UserFile userFile = userFileMapper.selectById(userFileId); + FileBean fileBean = fileMapper.selectById(userFile.getFileId()); + Music music = musicMapper.selectOne(new QueryWrapper().eq("fileId", userFile.getFileId())); + Image image = imageMapper.selectOne(new QueryWrapper().eq("fileId", userFile.getFileId())); + FileDetailVO fileDetailVO = new FileDetailVO(); + BeanUtil.copyProperties(userFile, fileDetailVO); + BeanUtil.copyProperties(fileBean, fileDetailVO); + fileDetailVO.setMusic(music); + fileDetailVO.setImage(image); + return fileDetailVO; + } + } diff --git a/src/main/java/com/qiwenshare/file/service/FiletransferService.java b/src/main/java/com/qiwenshare/file/service/FiletransferService.java index 3dfd528..8f691e2 100644 --- a/src/main/java/com/qiwenshare/file/service/FiletransferService.java +++ b/src/main/java/com/qiwenshare/file/service/FiletransferService.java @@ -1,8 +1,12 @@ package com.qiwenshare.file.service; +import cn.hutool.core.util.IdUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.mpatric.mp3agic.ID3v1; +import com.mpatric.mp3agic.ID3v2; +import com.mpatric.mp3agic.Mp3File; import com.qiwenshare.common.util.DateUtil; import com.qiwenshare.common.util.MimeUtils; import com.qiwenshare.common.util.security.JwtUser; @@ -22,6 +26,8 @@ import com.qiwenshare.ufop.constant.UploadFileStatusEnum; import com.qiwenshare.ufop.exception.operation.DownloadException; import com.qiwenshare.ufop.exception.operation.UploadException; import com.qiwenshare.ufop.factory.UFOPFactory; +import com.qiwenshare.ufop.operation.copy.Copier; +import com.qiwenshare.ufop.operation.copy.domain.CopyFile; import com.qiwenshare.ufop.operation.delete.Deleter; import com.qiwenshare.ufop.operation.delete.domain.DeleteFile; import com.qiwenshare.ufop.operation.download.Downloader; @@ -34,14 +40,18 @@ import com.qiwenshare.ufop.operation.upload.domain.UploadFileResult; import com.qiwenshare.ufop.util.UFOPUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import sun.nio.cs.ext.GBK; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.image.BufferedImage; import java.io.*; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.Base64; import java.util.HashMap; import java.util.List; @@ -73,6 +83,8 @@ public class FiletransferService implements IFiletransferService { UploadTaskMapper uploadTaskMapper; @Resource ImageMapper imageMapper; + @Resource + MusicMapper musicMapper; @Resource PictureFileMapper pictureFileMapper; @@ -214,8 +226,89 @@ public class FiletransferService implements IFiletransferService { image.setFileId(fileBean.getFileId()); imageMapper.insert(image); } + if ("mp3".equalsIgnoreCase(uploadFileResult.getExtendName())) { + Downloader downloader = ufopFactory.getDownloader(uploadFileResult.getStorageType().getCode()); + DownloadFile downloadFile = new DownloadFile(); + downloadFile.setFileUrl(uploadFileResult.getFileUrl()); + InputStream inputStream = downloader.getInputStream(downloadFile); + File outFile = UFOPUtils.getTempFile(uploadFileResult.getFileUrl()); + if (!outFile.exists()) { + outFile.createNewFile(); + } + FileOutputStream fileOutputStream = new FileOutputStream(outFile); + IOUtils.copy(inputStream, fileOutputStream); + fileOutputStream.close(); + Mp3File mp3file = new Mp3File(outFile); + Music music = new Music(); + music.setMusicId(IdUtil.getSnowflakeNextIdStr()); + music.setFileId(fileBean.getFileId()); + if (mp3file.hasId3v1Tag()) { + ID3v1 id3v1Tag = mp3file.getId3v1Tag(); + music.setTrack(formatChatset(id3v1Tag.getTrack())); + music.setArtist(formatChatset(id3v1Tag.getTrack())); + music.setTitle(formatChatset(id3v1Tag.getTitle())); + music.setAlbum(formatChatset(id3v1Tag.getAlbum())); + music.setYear(formatChatset(id3v1Tag.getYear())); + music.setGenre(formatChatset(id3v1Tag.getGenre() + " (" + id3v1Tag.getGenreDescription() + ")")); + music.setComment(formatChatset(id3v1Tag.getComment())); + } + Mp3File mp3file2 = new Mp3File(outFile); + if (mp3file2.hasId3v2Tag()) { + ID3v2 id3v2Tag = mp3file2.getId3v2Tag(); + if (StringUtils.isEmpty(music.getTrack())) { + music.setTrack(formatChatset(id3v2Tag.getTrack())); + } + if (StringUtils.isEmpty(music.getArtist())) { + music.setArtist(formatChatset(id3v2Tag.getArtist())); + } + if (StringUtils.isEmpty(music.getTitle())) { + music.setTitle(formatChatset(id3v2Tag.getTitle())); + } + if (StringUtils.isEmpty(music.getAlbum())) { + music.setAlbum(formatChatset(id3v2Tag.getAlbum())); + } + if (StringUtils.isEmpty(music.getYear())) { + music.setYear(formatChatset(id3v2Tag.getYear())); + } + if (StringUtils.isEmpty(music.getGenre())) { + music.setGenre(formatChatset(id3v2Tag.getGenre() + " (" + id3v2Tag.getGenreDescription() + ")")); + } + if (StringUtils.isEmpty(music.getComment())) { + music.setComment(formatChatset(id3v2Tag.getComment())); + } + music.setLyrics(formatChatset(id3v2Tag.getLyrics())); + music.setComposer(formatChatset(id3v2Tag.getComposer())); + music.setPublicer(formatChatset(id3v2Tag.getPublisher())); + music.setOriginalArtist(formatChatset(id3v2Tag.getOriginalArtist())); + music.setAlbumArtist(formatChatset(id3v2Tag.getAlbumArtist())); + music.setCopyright(formatChatset(id3v2Tag.getCopyright())); + music.setUrl(formatChatset(id3v2Tag.getUrl())); + music.setEncoder(formatChatset(id3v2Tag.getEncoder())); + + byte[] albumImageData = id3v2Tag.getAlbumImage(); + + if (albumImageData != null) { + File outFile1 = UFOPUtils.getTempFile(uploadFileResult.getFileName() + ".png"); + if (!outFile1.exists()) { + outFile1.createNewFile(); + } + music.setAlbumImage(Base64.getEncoder().encodeToString(albumImageData)); +// FileOutputStream fileOutputStream1 = new FileOutputStream(outFile1); +// IOUtils.write(albumImageData, fileOutputStream1); +// Copier copier = ufopFactory.getCopier(); +// CopyFile copyFile = new CopyFile(); +// copyFile.setExtendName("png"); +// String fileUrl = copier.copy(new FileInputStream(outFile1), copyFile); +// music.setAlbumImageUrl(fileUrl); + + System.out.println("Have album image data, length: " + albumImageData.length + " bytes"); + System.out.println("Album image mime type: " + id3v2Tag.getAlbumImageMimeType()); + } + } + musicMapper.insert(music); + } } catch (Exception e) { - log.error("生成图片缩略图失败!"); + log.error("生成图片缩略图失败!", e); } } else if (UploadFileStatusEnum.UNCOMPLATE.equals(uploadFileResult.getStatus())) { @@ -244,6 +337,17 @@ public class FiletransferService implements IFiletransferService { } + private String formatChatset(String str) { + if (str == null) { + return ""; + } + if (java.nio.charset.Charset.forName("ISO-8859-1").newEncoder().canEncode(str)) { + byte[] bytes = str.getBytes(StandardCharsets.ISO_8859_1); + return new String(bytes, Charset.forName("GBK")); + } + return str; + } + @Override public void downloadFile(HttpServletResponse httpServletResponse, DownloadFileDTO downloadFileDTO) { UserFile userFile = userFileMapper.selectById(downloadFileDTO.getUserFileId()); @@ -307,7 +411,8 @@ public class FiletransferService implements IFiletransferService { InputStream inputStream = downloader.getInputStream(downloadFile); BufferedInputStream bis = new BufferedInputStream(inputStream); try { - zos.putNextEntry(new ZipEntry(userFile1.getFilePath().replaceFirst(filePath, "") + "/" + userFile1.getFileName() + "." + userFile1.getExtendName())); + QiwenFile qiwenFile = new QiwenFile(userFile1.getFilePath().replaceFirst(filePath, ""), userFile1.getFileName() + "." + userFile1.getExtendName(), false); + zos.putNextEntry(new ZipEntry(qiwenFile.getPath())); byte[] buffer = new byte[1024]; int i = bis.read(buffer); @@ -327,8 +432,9 @@ public class FiletransferService implements IFiletransferService { } } } else { + QiwenFile qiwenFile = new QiwenFile(userFile1.getFilePath(), userFile1.getFileName(), true); // 空文件夹的处理 - zos.putNextEntry(new ZipEntry(userFile1.getFilePath() + userFile1.getFileName() + "/")); + zos.putNextEntry(new ZipEntry(qiwenFile.getPath() + QiwenFile.separator)); // 没有文件,不需要文件的copy zos.closeEntry(); } diff --git a/src/main/java/com/qiwenshare/file/service/UserFileService.java b/src/main/java/com/qiwenshare/file/service/UserFileService.java index ffff5b0..fc367b3 100644 --- a/src/main/java/com/qiwenshare/file/service/UserFileService.java +++ b/src/main/java/com/qiwenshare/file/service/UserFileService.java @@ -15,6 +15,7 @@ import com.qiwenshare.common.util.security.SessionUtil; import com.qiwenshare.file.api.IUserFileService; import com.qiwenshare.file.domain.RecoveryFile; import com.qiwenshare.file.domain.UserFile; +import com.qiwenshare.file.io.QiwenFile; import com.qiwenshare.file.mapper.FileMapper; import com.qiwenshare.file.mapper.FileTypeMapper; import com.qiwenshare.file.mapper.RecoveryFileMapper; @@ -100,11 +101,11 @@ public class UserFileService extends ServiceImpl impl userFileMapper.updateFilepathByPathAndName(oldfilePath, newfilePath, fileName, extendName, userId); //移动子目录 - oldfilePath = oldfilePath + "/" + fileName; - newfilePath = newfilePath + "/" + fileName; + oldfilePath = new QiwenFile(oldfilePath, fileName, true).getPath(); + newfilePath = new QiwenFile(newfilePath, fileName, true).getPath(); if (StringUtils.isEmpty(extendName)) { //为空说明是目录,则需要移动子目录 - List list = selectFileListLikeRightFilePath(oldfilePath, userId); + List list = selectUserFileByLikeRightFilePath(oldfilePath, userId); for (UserFile newUserFile : list) { newUserFile.setFilePath(newUserFile.getFilePath().replaceFirst(oldfilePath, newfilePath)); @@ -127,8 +128,8 @@ public class UserFileService extends ServiceImpl impl //移动子目录 - oldfilePath = oldfilePath + "/" + fileName; - newfilePath = newfilePath + "/" + fileName; + oldfilePath = new QiwenFile(oldfilePath, fileName, true).getPath(); + newfilePath = new QiwenFile(newfilePath, fileName, true).getPath(); oldfilePath = oldfilePath.replace("\\", "\\\\\\\\"); oldfilePath = oldfilePath.replace("'", "\\'"); @@ -161,23 +162,6 @@ public class UserFileService extends ServiceImpl impl return userFileMapper.selectList(lambdaQueryWrapper); } - @Override - public List selectFileListLikeRightFilePath(String filePath, long userId) { - filePath = filePath.replace("\\", "\\\\\\\\"); - filePath = filePath.replace("'", "\\'"); - filePath = filePath.replace("%", "\\%"); - filePath = filePath.replace("_", "\\_"); - - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - - log.info("查询文件路径:" + filePath); - - lambdaQueryWrapper.eq(UserFile::getUserId, userId) - .likeRight(UserFile::getFilePath, filePath) - .eq(UserFile::getDeleteFlag, 0); - return userFileMapper.selectList(lambdaQueryWrapper); - } - @Override public List selectFilePathTreeByUserId(Long userId) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -200,7 +184,7 @@ public class UserFileService extends ServiceImpl impl .eq(UserFile::getUserFileId, userFileId); userFileMapper.update(null, userFileLambdaUpdateWrapper); - String filePath = userFile.getFilePath() + "/" + userFile.getFileName(); + String filePath = new QiwenFile(userFile.getFilePath(), userFile.getFileName(), true).getPath(); updateFileDeleteStateByFilePath(filePath, uuid, sessionUserId); }else{ @@ -222,9 +206,14 @@ public class UserFileService extends ServiceImpl impl } + @Override + public List selectUserFileByLikeRightFilePath(String filePath, long userId) { + return userFileMapper.selectUserFileByLikeRightFilePath(filePath, userId); + } + private void updateFileDeleteStateByFilePath(String filePath, String deleteBatchNum, Long userId) { executor.execute(() -> { - List fileList = selectFileListLikeRightFilePath(filePath, userId); + List fileList = selectUserFileByLikeRightFilePath(filePath, userId); for (int i = 0; i < fileList.size(); i++){ UserFile userFileTemp = fileList.get(i); //标记删除标志 diff --git a/src/main/java/com/qiwenshare/file/vo/file/FileDetailVO.java b/src/main/java/com/qiwenshare/file/vo/file/FileDetailVO.java new file mode 100644 index 0000000..d53eadf --- /dev/null +++ b/src/main/java/com/qiwenshare/file/vo/file/FileDetailVO.java @@ -0,0 +1,53 @@ +package com.qiwenshare.file.vo.file; + +import com.qiwenshare.file.domain.Image; +import com.qiwenshare.file.domain.Music; +import lombok.Data; + +/** + * @author MAC + * @version 1.0 + * @description: TODO + * @date 2022/4/28 23:45 + */ +@Data +public class FileDetailVO { + private String fileId; + + private String timeStampName; + + private String fileUrl; + + private Long fileSize; + + private Integer storageType; + + private Integer pointCount; + + private String identifier; + + private String userFileId; + + private Long userId; + + + private String fileName; + + private String filePath; + + private String extendName; + + private Integer isDir; + + private String uploadTime; + + private Integer deleteFlag; + + private String deleteTime; + + private String deleteBatchNum; + + private Image image; + + private Music music; +} 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 d640706..d9e906a 100644 --- a/src/main/java/com/qiwenshare/file/vo/file/FileListVo.java +++ b/src/main/java/com/qiwenshare/file/vo/file/FileListVo.java @@ -1,5 +1,6 @@ package com.qiwenshare.file.vo.file; +import com.qiwenshare.file.domain.Music; import lombok.Data; @Data @@ -41,4 +42,5 @@ public class FileListVo { private Integer imageWidth; private Integer imageHeight; + } diff --git a/src/main/resources/mapper/UserFileMapper.xml b/src/main/resources/mapper/UserFileMapper.xml index 6fb5840..02f1f01 100644 --- a/src/main/resources/mapper/UserFileMapper.xml +++ b/src/main/resources/mapper/UserFileMapper.xml @@ -6,8 +6,6 @@ - - + + UPDATE userfile SET filePath=REPLACE(filePath, #{param1}, #{param2})