From 50c1ba4125e527d74394219d53858b3abfeae2cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E8=B6=85?= <1162714483@qq.com> Date: Sat, 10 Apr 2021 18:50:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=88=86=E4=BA=AB=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E7=BC=BA=E9=99=B7=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../file/api/IShareFileService.java | 6 +- .../qiwenshare/file/api/IShareService.java | 7 +- .../qiwenshare/file/api/IUserFileService.java | 1 + .../file/controller/ShareController.java | 82 ++++++++++++------- ...BySecretDTO.java => ShareFileListDTO.java} | 4 +- .../file/dto/sharefile/ShareListDTO.java | 17 ++++ .../file/mapper/ShareFileMapper.java | 6 ++ .../qiwenshare/file/mapper/ShareMapper.java | 6 +- .../qiwenshare/file/service/FileService.java | 2 + .../file/service/FiletransferService.java | 2 + .../file/service/OperationLogService.java | 2 + .../file/service/RecoveryFileService.java | 2 + .../file/service/ShareFileService.java | 24 ++++++ .../qiwenshare/file/service/ShareService.java | 16 +++- .../file/service/UserFileService.java | 38 +++++++++ .../qiwenshare/file/service/UserService.java | 2 + .../qiwenshare/file/vo/share/ShareListVO.java | 35 ++++++++ .../resources/config/application.properties | 2 - .../resources/mybatis/mapper/FileMapper.xml | 37 --------- .../mybatis/mapper/ShareFileMapper.xml | 61 ++++++++++++++ .../resources/mybatis/mapper/ShareMapper.xml | 41 ++++++---- .../mybatis/mapper/UserFileMapper.xml | 2 +- 22 files changed, 301 insertions(+), 94 deletions(-) rename file-web/src/main/java/com/qiwenshare/file/dto/sharefile/{ShareFileListBySecretDTO.java => ShareFileListDTO.java} (75%) create mode 100644 file-web/src/main/java/com/qiwenshare/file/dto/sharefile/ShareListDTO.java create mode 100644 file-web/src/main/java/com/qiwenshare/file/vo/share/ShareListVO.java create mode 100644 file-web/src/main/resources/mybatis/mapper/ShareFileMapper.xml diff --git a/file-web/src/main/java/com/qiwenshare/file/api/IShareFileService.java b/file-web/src/main/java/com/qiwenshare/file/api/IShareFileService.java index 25b58b0..01cf35e 100644 --- a/file-web/src/main/java/com/qiwenshare/file/api/IShareFileService.java +++ b/file-web/src/main/java/com/qiwenshare/file/api/IShareFileService.java @@ -3,7 +3,11 @@ package com.qiwenshare.file.api; import com.baomidou.mybatisplus.extension.service.IService; import com.qiwenshare.file.domain.Share; import com.qiwenshare.file.domain.ShareFile; +import com.qiwenshare.file.vo.share.ShareFileListVO; + +import java.util.List; public interface IShareFileService extends IService { - + void batchInsertShareFile(List shareFiles); + List selectShareFileList(String shareBatchNum, String filePath); } diff --git a/file-web/src/main/java/com/qiwenshare/file/api/IShareService.java b/file-web/src/main/java/com/qiwenshare/file/api/IShareService.java index 01b3778..ff8a0e9 100644 --- a/file-web/src/main/java/com/qiwenshare/file/api/IShareService.java +++ b/file-web/src/main/java/com/qiwenshare/file/api/IShareService.java @@ -4,11 +4,14 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.qiwenshare.file.domain.RecoveryFile; import com.qiwenshare.file.domain.Share; import com.qiwenshare.file.domain.ShareFile; +import com.qiwenshare.file.dto.sharefile.ShareListDTO; import com.qiwenshare.file.vo.share.ShareFileListVO; +import com.qiwenshare.file.vo.share.ShareListVO; +import org.apache.ibatis.annotations.Param; import java.util.List; public interface IShareService extends IService { - void batchInsertShareFile(List shareFiles); - List selectShareFileList(String shareBatchNum, String filePath); + List selectShareList(ShareListDTO shareListDTO, Long userId); + int selectShareListTotalCount(ShareListDTO shareListDTO, Long userId); } diff --git a/file-web/src/main/java/com/qiwenshare/file/api/IUserFileService.java b/file-web/src/main/java/com/qiwenshare/file/api/IUserFileService.java index 1f5d2ee..6dbaad3 100644 --- a/file-web/src/main/java/com/qiwenshare/file/api/IUserFileService.java +++ b/file-web/src/main/java/com/qiwenshare/file/api/IUserFileService.java @@ -22,5 +22,6 @@ public interface IUserFileService extends IService { List selectFileListLikeRightFilePath(String filePath, long userId); List selectFilePathTreeByUserId(Long userId); void deleteUserFile(Long userFileId, Long sessionUserId); + UserFile repeatUserFileDeal(UserFile userFile); } diff --git a/file-web/src/main/java/com/qiwenshare/file/controller/ShareController.java b/file-web/src/main/java/com/qiwenshare/file/controller/ShareController.java index 71b6156..9200f36 100644 --- a/file-web/src/main/java/com/qiwenshare/file/controller/ShareController.java +++ b/file-web/src/main/java/com/qiwenshare/file/controller/ShareController.java @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.RandomUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qiwenshare.common.exception.NotLoginException; import com.qiwenshare.common.util.DateUtil; import com.qiwenshare.common.result.RestResult; import com.qiwenshare.file.anno.MyLog; @@ -15,18 +16,17 @@ import com.qiwenshare.file.domain.UserFile; import com.qiwenshare.file.dto.sharefile.*; import com.qiwenshare.file.vo.share.ShareFileListVO; import com.qiwenshare.file.vo.share.ShareFileVO; +import com.qiwenshare.file.vo.share.ShareListVO; import com.qiwenshare.file.vo.share.ShareTypeVO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.text.ParseException; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.UUID; +import java.util.*; @Tag(name = "share", description = "该接口为文件分享接口") @RestController @@ -38,6 +38,8 @@ public class ShareController { @Resource IUserService userService; @Resource + IShareFileService shareFileService; + @Resource IShareService shareService; @Resource IFileService fileService; @@ -51,6 +53,9 @@ public class ShareController { public RestResult shareFile( @RequestBody ShareFileDTO shareSecretDTO, @RequestHeader("token") String token) { ShareFileVO shareSecretVO = new ShareFileVO(); UserBean sessionUserBean = userService.getUserBeanByToken(token); + if (sessionUserBean == null) { + throw new NotLoginException(); + } String uuid = UUID.randomUUID().toString().replace("-", ""); Share share = new Share(); @@ -71,7 +76,7 @@ public class ShareController { List saveFileList = new ArrayList<>(); for (ShareFile shareFile : fileList) { UserFile userFile = userFileService.getById(shareFile.getUserFileId()); - if (userFile.getUserId() != sessionUserBean.getUserId()) { + if (userFile.getUserId().compareTo(sessionUserBean.getUserId()) != 0) { return RestResult.fail().message("您只能分享自己的文件"); } if (userFile.getIsDir() == 1) { @@ -90,7 +95,7 @@ public class ShareController { } - shareService.batchInsertShareFile(saveFileList); + shareFileService.batchInsertShareFile(saveFileList); shareSecretVO.setShareBatchNum(uuid); return RestResult.success().data(shareSecretVO); @@ -99,12 +104,14 @@ public class ShareController { @Operation(summary = "保存分享文件", description = "用来将别人分享的文件保存到自己的网盘中", tags = {"share"}) @PostMapping(value = "/savesharefile") @MyLog(operation = "保存分享文件", module = CURRENT_MODULE) + @Transactional(rollbackFor=Exception.class) @ResponseBody public RestResult saveShareFile(@RequestBody SaveShareFileDTO saveShareFileDTO, @RequestHeader("token") String token) { - //{"filePath":"/mac/","files":"[{\"userFileId\":555},{\"userFileId\":266}]"} UserBean sessionUserBean = userService.getUserBeanByToken(token); List fileList = JSON.parseArray(saveShareFileDTO.getFiles(), ShareFile.class); + String savefilePath = saveShareFileDTO.getFilePath(); + Long userId = sessionUserBean.getUserId(); List saveUserFileList = new ArrayList<>(); for (ShareFile shareFile : fileList) { @@ -112,27 +119,27 @@ public class ShareController { if (userFile.getIsDir() == 1) { List userfileList = userFileService.selectFileListLikeRightFilePath(userFile.getFilePath() + userFile.getFileName(), userFile.getUserId()); log.info("查询文件列表:" + JSON.toJSONString(userfileList)); - for (UserFile userFile1 : userfileList) { - userFile.setUserFileId(null); - userFile1.setUserId(sessionUserBean.getUserId()); - userFile1.setFilePath(userFile1.getFilePath().replaceFirst(userFile.getFilePath(), saveShareFileDTO.getFilePath())); - saveUserFileList.add(userFile1); - log.info("当前文件:" + JSON.toJSONString(userFile1)); - if (userFile1.getIsDir() == 0) { - fileService.increaseFilePointCount(userFile1.getFileId()); + String filePath = userFile.getFilePath(); + userfileList.forEach(p->{ + p.setUserFileId(null); + p.setUserId(userId); + p.setFilePath(p.getFilePath().replaceFirst(filePath, savefilePath)); + p = userFileService.repeatUserFileDeal(p); + saveUserFileList.add(p); + log.info("当前文件:" + JSON.toJSONString(p)); + if (p.getIsDir() == 0) { + fileService.increaseFilePointCount(p.getFileId()); } - } - userFile.setUserFileId(null); - userFile.setUserId(sessionUserBean.getUserId()); - userFile.setFilePath(saveShareFileDTO.getFilePath()); - saveUserFileList.add(userFile); + }); } else { - userFile.setUserFileId(null); - userFile.setUserId(sessionUserBean.getUserId()); - userFile.setFilePath(saveShareFileDTO.getFilePath()); - saveUserFileList.add(userFile); fileService.increaseFilePointCount(userFile.getFileId()); } + + userFile.setUserFileId(null); + userFile.setUserId(userId); + userFile.setFilePath(savefilePath); + userFile = userFileService.repeatUserFileDeal(userFile); + saveUserFileList.add(userFile); } log.info("----------" + JSON.toJSONString(saveUserFileList)); userFileService.saveBatch(saveUserFileList); @@ -140,13 +147,33 @@ public class ShareController { return RestResult.success(); } - @Operation(summary = "分享列表", description = "分享列表", tags = {"share"}) + @Operation(summary = "查看已分享列表", description = "查看已分享列表", tags = {"share"}) + @GetMapping(value = "/shareList") + @ResponseBody + public RestResult shareList(ShareListDTO shareListDTO, @RequestHeader("token") String token) { + UserBean sessionUserBean = userService.getUserBeanByToken(token); + if (sessionUserBean == null) { + throw new NotLoginException(); + } + List shareList = shareService.selectShareList(shareListDTO, sessionUserBean.getUserId()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + + int total = shareService.selectShareListTotalCount(shareListDTO, sessionUserBean.getUserId()); + + Map map = new HashMap<>(); + map.put("total", total); + map.put("list", shareList); + return RestResult.success().data(map); + } + + + @Operation(summary = "分享文件列表", description = "分享列表", tags = {"share"}) @GetMapping(value = "/sharefileList") @ResponseBody - public RestResult> shareFileListBySecret(ShareFileListBySecretDTO shareFileListBySecretDTO) { + public RestResult> shareFileList(ShareFileListDTO shareFileListBySecretDTO) { String shareBatchNum = shareFileListBySecretDTO.getShareBatchNum(); String shareFilePath = shareFileListBySecretDTO.getShareFilePath(); - List list = shareService.selectShareFileList(shareBatchNum, shareFilePath); + List list = shareFileService.selectShareFileList(shareBatchNum, shareFilePath); for (ShareFileListVO shareFileListVO : list) { shareFileListVO.setShareFilePath(shareFilePath); } @@ -163,7 +190,6 @@ public class ShareController { ShareTypeVO shareTypeVO = new ShareTypeVO(); shareTypeVO.setShareType(share.getShareType()); return RestResult.success().data(shareTypeVO); - } @Operation(summary = "校验提取码", description = "校验提取码", tags = {"share"}) diff --git a/file-web/src/main/java/com/qiwenshare/file/dto/sharefile/ShareFileListBySecretDTO.java b/file-web/src/main/java/com/qiwenshare/file/dto/sharefile/ShareFileListDTO.java similarity index 75% rename from file-web/src/main/java/com/qiwenshare/file/dto/sharefile/ShareFileListBySecretDTO.java rename to file-web/src/main/java/com/qiwenshare/file/dto/sharefile/ShareFileListDTO.java index 22c6c31..be65dd4 100644 --- a/file-web/src/main/java/com/qiwenshare/file/dto/sharefile/ShareFileListBySecretDTO.java +++ b/file-web/src/main/java/com/qiwenshare/file/dto/sharefile/ShareFileListDTO.java @@ -4,8 +4,8 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @Data -@Schema(name = "分享列表DTO",required = true) -public class ShareFileListBySecretDTO { +@Schema(name = "分享文件列表DTO",required = true) +public class ShareFileListDTO { @Schema(description="批次号") private String shareBatchNum; diff --git a/file-web/src/main/java/com/qiwenshare/file/dto/sharefile/ShareListDTO.java b/file-web/src/main/java/com/qiwenshare/file/dto/sharefile/ShareListDTO.java new file mode 100644 index 0000000..24070a9 --- /dev/null +++ b/file-web/src/main/java/com/qiwenshare/file/dto/sharefile/ShareListDTO.java @@ -0,0 +1,17 @@ +package com.qiwenshare.file.dto.sharefile; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(name = "分享列表DTO",required = true) +public class ShareListDTO { + @Schema(description="分享文件路径") + private String shareFilePath; + @Schema(description="批次号") + private String shareBatchNum; + @Schema(description = "当前页码") + private Long currentPage; + @Schema(description = "一页显示数量") + private Long pageCount; +} diff --git a/file-web/src/main/java/com/qiwenshare/file/mapper/ShareFileMapper.java b/file-web/src/main/java/com/qiwenshare/file/mapper/ShareFileMapper.java index 7c931a4..22ca079 100644 --- a/file-web/src/main/java/com/qiwenshare/file/mapper/ShareFileMapper.java +++ b/file-web/src/main/java/com/qiwenshare/file/mapper/ShareFileMapper.java @@ -3,6 +3,12 @@ package com.qiwenshare.file.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qiwenshare.file.domain.Share; import com.qiwenshare.file.domain.ShareFile; +import com.qiwenshare.file.vo.share.ShareFileListVO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface ShareFileMapper extends BaseMapper { + void batchInsertShareFile(List shareFiles); + List selectShareFileList(@Param("shareBatchNum") String shareBatchNum, @Param("shareFilePath") String filePath); } diff --git a/file-web/src/main/java/com/qiwenshare/file/mapper/ShareMapper.java b/file-web/src/main/java/com/qiwenshare/file/mapper/ShareMapper.java index c3b4b40..f94f1db 100644 --- a/file-web/src/main/java/com/qiwenshare/file/mapper/ShareMapper.java +++ b/file-web/src/main/java/com/qiwenshare/file/mapper/ShareMapper.java @@ -5,11 +5,13 @@ import com.qiwenshare.file.domain.FileBean; import com.qiwenshare.file.domain.Share; import com.qiwenshare.file.domain.ShareFile; import com.qiwenshare.file.vo.share.ShareFileListVO; +import com.qiwenshare.file.vo.share.ShareListVO; import org.apache.ibatis.annotations.Param; import java.util.List; public interface ShareMapper extends BaseMapper { - void batchInsertShareFile(List shareFiles); - List selectShareFileList(@Param("shareBatchNum") String shareBatchNum, @Param("shareFilePath") String filePath); + + List selectShareList(String shareFilePath,String shareBatchNum, Long beginCount, Long pageCount, Long userId); + int selectShareListTotalCount(String shareFilePath,String shareBatchNum, Long userId); } diff --git a/file-web/src/main/java/com/qiwenshare/file/service/FileService.java b/file-web/src/main/java/com/qiwenshare/file/service/FileService.java index b0e4358..b98f075 100644 --- a/file-web/src/main/java/com/qiwenshare/file/service/FileService.java +++ b/file-web/src/main/java/com/qiwenshare/file/service/FileService.java @@ -6,11 +6,13 @@ import com.qiwenshare.file.domain.FileBean; import com.qiwenshare.file.mapper.FileMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; @Slf4j @Service +@Transactional(rollbackFor=Exception.class) public class FileService extends ServiceImpl implements IFileService { @Resource diff --git a/file-web/src/main/java/com/qiwenshare/file/service/FiletransferService.java b/file-web/src/main/java/com/qiwenshare/file/service/FiletransferService.java index e112e81..8dd250d 100644 --- a/file-web/src/main/java/com/qiwenshare/file/service/FiletransferService.java +++ b/file-web/src/main/java/com/qiwenshare/file/service/FiletransferService.java @@ -33,9 +33,11 @@ import com.qiwenshare.file.mapper.StorageMapper; import com.qiwenshare.file.mapper.UserFileMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; @Slf4j @Service +@Transactional(rollbackFor=Exception.class) public class FiletransferService implements IFiletransferService { @Resource diff --git a/file-web/src/main/java/com/qiwenshare/file/service/OperationLogService.java b/file-web/src/main/java/com/qiwenshare/file/service/OperationLogService.java index 5f4c5dd..9a404b5 100644 --- a/file-web/src/main/java/com/qiwenshare/file/service/OperationLogService.java +++ b/file-web/src/main/java/com/qiwenshare/file/service/OperationLogService.java @@ -8,12 +8,14 @@ import com.qiwenshare.file.api.IOperationLogService; import com.qiwenshare.file.domain.OperationLogBean; import com.qiwenshare.file.mapper.OperationLogMapper; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; @Service +@Transactional(rollbackFor=Exception.class) public class OperationLogService extends ServiceImpl implements IOperationLogService { @Resource diff --git a/file-web/src/main/java/com/qiwenshare/file/service/RecoveryFileService.java b/file-web/src/main/java/com/qiwenshare/file/service/RecoveryFileService.java index 7e0fac2..67c5e1a 100644 --- a/file-web/src/main/java/com/qiwenshare/file/service/RecoveryFileService.java +++ b/file-web/src/main/java/com/qiwenshare/file/service/RecoveryFileService.java @@ -16,6 +16,7 @@ import com.qiwenshare.file.mapper.UserFileMapper; import com.qiwenshare.file.vo.file.RecoveryFileListVo; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; @@ -24,6 +25,7 @@ import java.util.concurrent.Executors; @Slf4j @Service +@Transactional(rollbackFor=Exception.class) public class RecoveryFileService extends ServiceImpl implements IRecoveryFileService { @Resource UserFileMapper userFileMapper; diff --git a/file-web/src/main/java/com/qiwenshare/file/service/ShareFileService.java b/file-web/src/main/java/com/qiwenshare/file/service/ShareFileService.java index 0d71e08..cb12a60 100644 --- a/file-web/src/main/java/com/qiwenshare/file/service/ShareFileService.java +++ b/file-web/src/main/java/com/qiwenshare/file/service/ShareFileService.java @@ -1,17 +1,41 @@ package com.qiwenshare.file.service; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qiwenshare.file.api.IShareFileService; import com.qiwenshare.file.api.IShareService; import com.qiwenshare.file.domain.Share; import com.qiwenshare.file.domain.ShareFile; +import com.qiwenshare.file.domain.UserFile; import com.qiwenshare.file.mapper.ShareFileMapper; import com.qiwenshare.file.mapper.ShareMapper; +import com.qiwenshare.file.mapper.UserFileMapper; +import com.qiwenshare.file.vo.share.ShareFileListVO; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; @Slf4j @Service +@Transactional(rollbackFor=Exception.class) public class ShareFileService extends ServiceImpl implements IShareFileService { + @Resource + ShareFileMapper shareFileMapper; + @Resource + UserFileMapper userFileMapper; + @Override + public void batchInsertShareFile(List shareFiles) { + shareFileMapper.batchInsertShareFile(shareFiles); + } + + @Override + public List selectShareFileList(String shareBatchNum, String filePath) { + return shareFileMapper.selectShareFileList(shareBatchNum, filePath); + } } diff --git a/file-web/src/main/java/com/qiwenshare/file/service/ShareService.java b/file-web/src/main/java/com/qiwenshare/file/service/ShareService.java index 0f21bdf..491562d 100644 --- a/file-web/src/main/java/com/qiwenshare/file/service/ShareService.java +++ b/file-web/src/main/java/com/qiwenshare/file/service/ShareService.java @@ -5,27 +5,35 @@ import com.qiwenshare.file.api.IShareService; import com.qiwenshare.file.domain.RecoveryFile; import com.qiwenshare.file.domain.Share; import com.qiwenshare.file.domain.ShareFile; +import com.qiwenshare.file.dto.sharefile.ShareListDTO; import com.qiwenshare.file.mapper.RecoveryFileMapper; import com.qiwenshare.file.mapper.ShareMapper; import com.qiwenshare.file.vo.share.ShareFileListVO; +import com.qiwenshare.file.vo.share.ShareListVO; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; @Slf4j @Service +@Transactional(rollbackFor=Exception.class) public class ShareService extends ServiceImpl implements IShareService { @Resource ShareMapper shareMapper; + @Override - public void batchInsertShareFile(List shareFiles) { - shareMapper.batchInsertShareFile(shareFiles); + public List selectShareList(ShareListDTO shareListDTO, Long userId) { + Long beginCount = (shareListDTO.getCurrentPage() - 1) * shareListDTO.getPageCount(); + return shareMapper.selectShareList(shareListDTO.getShareFilePath(), + shareListDTO.getShareBatchNum(), + beginCount, shareListDTO.getPageCount(), userId); } @Override - public List selectShareFileList(String shareBatchNum, String filePath) { - return shareMapper.selectShareFileList(shareBatchNum, filePath); + public int selectShareListTotalCount(ShareListDTO shareListDTO, Long userId) { + return shareMapper.selectShareListTotalCount(shareListDTO.getShareFilePath(), shareListDTO.getShareBatchNum(), userId); } } diff --git a/file-web/src/main/java/com/qiwenshare/file/service/UserFileService.java b/file-web/src/main/java/com/qiwenshare/file/service/UserFileService.java index f7f7d3d..b6c5cb8 100644 --- a/file-web/src/main/java/com/qiwenshare/file/service/UserFileService.java +++ b/file-web/src/main/java/com/qiwenshare/file/service/UserFileService.java @@ -15,6 +15,7 @@ import com.qiwenshare.file.mapper.UserFileMapper; import com.qiwenshare.file.vo.file.FileListVo; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; @@ -24,6 +25,7 @@ import java.util.concurrent.Executors; @Slf4j @Service +@Transactional(rollbackFor=Exception.class) public class UserFileService extends ServiceImpl implements IUserFileService { @Resource UserFileMapper userFileMapper; @@ -214,6 +216,42 @@ public class UserFileService extends ServiceImpl impl } + @Override + public UserFile repeatUserFileDeal(UserFile userFile) { + String fileName = userFile.getFileName(); + String filePath = userFile.getFilePath(); + String extendName = userFile.getExtendName(); + Integer deleteFlag = userFile.getDeleteFlag(); + Long userId = userFile.getUserId(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserFile::getFilePath, filePath) + .eq(UserFile::getExtendName, extendName) + .eq(UserFile::getDeleteFlag, deleteFlag) + .eq(UserFile::getUserId, userId) + .eq(UserFile::getFileName, fileName); + List list = userFileMapper.selectList(lambdaQueryWrapper); + if (list == null) { + return userFile; + } + if (list.isEmpty()) { + return userFile; + } + int i = 0; + + while (list != null && !list.isEmpty()) { + i++; + lambdaQueryWrapper.eq(UserFile::getFilePath, filePath) + .eq(UserFile::getExtendName, extendName) + .eq(UserFile::getDeleteFlag, deleteFlag) + .eq(UserFile::getUserId, userId) + .eq(UserFile::getFileName, fileName + "(" + i + ")"); + list = userFileMapper.selectList(lambdaQueryWrapper); + } + userFile.setFileName(fileName + "(" + i + ")"); + return userFile; + + } + private void updateFileDeleteStateByFilePath(String filePath, String deleteBatchNum, Long userId) { new Thread(()->{ List fileList = selectFileListLikeRightFilePath(filePath, userId); diff --git a/file-web/src/main/java/com/qiwenshare/file/service/UserService.java b/file-web/src/main/java/com/qiwenshare/file/service/UserService.java index 36077dc..385d62c 100644 --- a/file-web/src/main/java/com/qiwenshare/file/service/UserService.java +++ b/file-web/src/main/java/com/qiwenshare/file/service/UserService.java @@ -16,6 +16,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.crypto.hash.SimpleHash; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; @@ -23,6 +24,7 @@ import java.util.regex.Pattern; @Slf4j @Service +@Transactional(rollbackFor=Exception.class) public class UserService extends ServiceImpl implements IUserService { @Resource diff --git a/file-web/src/main/java/com/qiwenshare/file/vo/share/ShareListVO.java b/file-web/src/main/java/com/qiwenshare/file/vo/share/ShareListVO.java new file mode 100644 index 0000000..bf8362a --- /dev/null +++ b/file-web/src/main/java/com/qiwenshare/file/vo/share/ShareListVO.java @@ -0,0 +1,35 @@ +package com.qiwenshare.file.vo.share; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.persistence.Column; + +@Schema(description="分享列表VO") +@Data +public class ShareListVO { + private Long shareId; + private Long userId; + private String shareTime; + private String endTime; + private String extractionCode; + private String shareBatchNum; + private Integer shareType;//0公共,1私密,2好友 + private Integer shareStatus;//0正常,1已失效,2已撤销 + private Long shareFileId; + private Long userFileId; + private String shareFilePath; + private Long fileId; + 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 String timeStampName; + private String fileUrl; + private Long fileSize; + private Integer storageType; +} diff --git a/file-web/src/main/resources/config/application.properties b/file-web/src/main/resources/config/application.properties index db543ad..341c6aa 100644 --- a/file-web/src/main/resources/config/application.properties +++ b/file-web/src/main/resources/config/application.properties @@ -54,8 +54,6 @@ qiwen-file.share-mode=false qiwen-file.storage-type=0 qiwen-file.cache-mode=0 -#是否启用阿里云oss -#qiwen-file.aliyun.oss.enabled=false #阿里云oss基本配置 qiwen-file.aliyun.oss.endpoint= qiwen-file.aliyun.oss.access-key-id= diff --git a/file-web/src/main/resources/mybatis/mapper/FileMapper.xml b/file-web/src/main/resources/mybatis/mapper/FileMapper.xml index 842b665..37edae5 100644 --- a/file-web/src/main/resources/mybatis/mapper/FileMapper.xml +++ b/file-web/src/main/resources/mybatis/mapper/FileMapper.xml @@ -6,7 +6,6 @@ - INSERT ignore INTO file (userId, fileName,timeStampName, fileUrl, filePath, extendName, uploadTime, fileSize, isDir) @@ -18,40 +17,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/file-web/src/main/resources/mybatis/mapper/ShareFileMapper.xml b/file-web/src/main/resources/mybatis/mapper/ShareFileMapper.xml new file mode 100644 index 0000000..a0448ef --- /dev/null +++ b/file-web/src/main/resources/mybatis/mapper/ShareFileMapper.xml @@ -0,0 +1,61 @@ + + + + + + + + + INSERT ignore INTO sharefile (shareBatchNum, userFileId, shareFilePath) + VALUES + + (#{file.shareBatchNum}, #{file.userFileId}, #{file.shareFilePath}) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/file-web/src/main/resources/mybatis/mapper/ShareMapper.xml b/file-web/src/main/resources/mybatis/mapper/ShareMapper.xml index fb9b9f6..3ce7065 100644 --- a/file-web/src/main/resources/mybatis/mapper/ShareMapper.xml +++ b/file-web/src/main/resources/mybatis/mapper/ShareMapper.xml @@ -6,23 +6,34 @@ - - - INSERT ignore INTO sharefile (shareBatchNum, userFileId, shareFilePath) - VALUES - - (#{file.shareBatchNum}, #{file.userFileId}, #{file.shareFilePath}) - - - - + SELECT * FROM share a + LEFT JOIN sharefile b ON b.shareBatchNum = a.shareBatchNum + LEFT JOIN userfile c ON c.userFileId = b.userFileId + LEFT JOIN file d ON d.fileId = c.fileId + WHERE shareFilePath = #{shareFilePath} + + AND a.shareBatchNum = #{shareBatchNum} + + AND c.userId = #{userId} + order BY shareTime desc + limit #{beginCount}, #{pageCount} + + + + diff --git a/file-web/src/main/resources/mybatis/mapper/UserFileMapper.xml b/file-web/src/main/resources/mybatis/mapper/UserFileMapper.xml index 652dbc6..190d5ef 100644 --- a/file-web/src/main/resources/mybatis/mapper/UserFileMapper.xml +++ b/file-web/src/main/resources/mybatis/mapper/UserFileMapper.xml @@ -28,8 +28,8 @@ ORDER BY isDir desc limit #{beginCount}, #{pageCount} - + left join file on file.fileId = userfile.fileId where extendName in