回收站功能开发

This commit is contained in:
马超 2020-12-26 00:22:40 +08:00
parent 83e3c37707
commit 6e35c11fe3
13 changed files with 105 additions and 54 deletions

View File

@ -27,10 +27,7 @@
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>

View File

@ -4,16 +4,16 @@ import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
@EnableFeignClients
@MapperScan("com.qiwenshare.file.mapper")
@EnableScheduling
@EnableDiscoveryClient
@EnableTransactionManagement
public class FileApplication {
public static void main(String[] args) {

View File

@ -0,0 +1,8 @@
package com.qiwenshare.file.api;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qiwenshare.file.domain.RecoveryFile;
public interface IRecoveryFileService extends IService<RecoveryFile> {
}

View File

@ -7,18 +7,19 @@ import io.swagger.v3.oas.models.info.License;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class OpenAPIConfig {
@Bean
public OpenAPI qiwenFileOpenAPI() {
return new OpenAPI()
.info(new Info().title("qiwen-file API")
.description("基于springboot + vue 框架开发的Web文件系统旨在为用户提供一个简单、方便的文件存储方案能够以完善的目录结构体系对文件进行管理 。")
.version("v0.0.1")
.license(new License().name("MIT").url("http://springdoc.org")))
.info(new Info().title("奇文网盘 API")
.description("基于springboot + vue 框架开发的Web文件系统旨在为用户提供一个简单、方便的文件存储方案能够以完善的目录结构体系对文件进行管理 。")
.version("v0.0.1")
.license(new License().name("MIT").url("http://springdoc.org")))
.externalDocs(new ExternalDocumentation()
.description("gitee")
.url("https://www.gitee.com/qiwen-cloud/qiwen-file"));
.description("奇文网盘gitee地址")
.url("https://www.gitee.com/qiwen-cloud/qiwen-file"));
}
}

View File

@ -11,13 +11,13 @@ import com.qiwenshare.common.oss.AliyunOSSRename;
import com.qiwenshare.common.util.FileUtil;
import com.qiwenshare.common.util.PathUtil;
import com.qiwenshare.file.api.IFileService;
import com.qiwenshare.file.api.IRecoveryFileService;
import com.qiwenshare.file.api.IUserFileService;
import com.qiwenshare.file.api.IUserService;
import com.qiwenshare.file.config.QiwenFileConfig;
import com.qiwenshare.file.domain.FileBean;
import com.qiwenshare.file.domain.TreeNode;
import com.qiwenshare.file.domain.UserBean;
import com.qiwenshare.file.domain.UserFile;
import com.qiwenshare.file.domain.*;
import com.qiwenshare.file.dto.*;
import com.qiwenshare.file.service.RecoveryFileService;
import com.qiwenshare.file.service.UserFileService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -43,7 +43,9 @@ public class FileController {
@Resource
IUserService userService;
@Resource
UserFileService userFileService;
IUserFileService userFileService;
@Resource
IRecoveryFileService recoveryFileService;
@Resource
QiwenFileConfig qiwenFileConfig;
@ -208,6 +210,11 @@ public class FileController {
for (UserFile userFile : userFiles) {
userFileService.deleteUserFile(userFile,sessionUserBean);
RecoveryFile recoveryFile = new RecoveryFile();
recoveryFile.setUserFileId(userFile.getUserFileId());
recoveryFile.setDeleteTime(DateUtil.getCurrentTime());
recoveryFileService.save(recoveryFile);
}
result.setData("批量删除文件成功");
@ -229,6 +236,10 @@ public class FileController {
BeanUtil.copyProperties(deleteFileDto, userFile);
userFileService.deleteUserFile(userFile, sessionUserBean);
RecoveryFile recoveryFile = new RecoveryFile();
recoveryFile.setUserFileId(deleteFileDto.getUserFileId());
recoveryFile.setDeleteTime(DateUtil.getCurrentTime());
recoveryFileService.save(recoveryFile);
result.setSuccess(true);
String resultJson = JSON.toJSONString(result);
return resultJson;

View File

@ -51,8 +51,9 @@ public class UserController {
*/
public static final String CURRENT_MODULE = "用户管理";
@Operation(summary = "用户注册", description = "注册账号", tags = {"user"})
@PostMapping(value = "/adduser")
@PostMapping(value = "/register")
@ResponseBody
public RestResult<String> addUser(@RequestBody RegisterDTO registerDTO) {
RestResult<String> restResult = null;
@ -64,10 +65,10 @@ public class UserController {
}
@Operation(summary = "用户登录", description = "用户登录认证后才能进入系统", tags = {"user"})
@GetMapping("/userlogin")
@GetMapping("/login")
@ResponseBody
public RestResult<UserLoginVo> userLogin(
@Parameter(description = "登录用户名", required = false) String username,
@Parameter(description = "登录用户名") String username,
@Parameter(description = "登录密码") String password) {
RestResult<UserLoginVo> restResult = new RestResult<UserLoginVo>();
UserBean saveUserBean = userService.findUserInfoByTelephone(username);
@ -123,23 +124,4 @@ public class UserController {
return restResult;
}
// @Operation(summary = "得到用户信息通过id", description = "", tags = {"user"})
// @GetMapping("/getuserinfobyid")
// @ResponseBody
// public String getUserInfoById(int userId) {
// RestResult<UserBean> restResult = new RestResult<UserBean>();
//
// UserBean userBean = userService.getById(userId);
// if (userBean == null) {
// restResult.setSuccess(false);
// restResult.setErrorCode("100001");
// restResult.setErrorMessage("用户不存在!");
// } else {
// restResult.setSuccess(true);
// restResult.setData(userBean);
// }
// String resultJson = JSON.toJSONString(restResult);
// return resultJson;
// }
}

View File

@ -0,0 +1,27 @@
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.*;
@Data
@Table(name = "recoveryfile")
@Entity
@TableName("recoveryfile")
public class RecoveryFile {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@TableId(type = IdType.AUTO)
@Column(columnDefinition="bigint(20) comment '回收文件id'")
private Long recoveryFileId;
@Column(columnDefinition = "bigint(20) comment '用户文件id'")
private Long userFileId;
@Column(columnDefinition="varchar(25) comment '删除时间'")
private String deleteTime;
@Column(columnDefinition = "varchar(50) comment '删除批次号'")
private String deleteBatchNum;
}

View File

@ -46,4 +46,7 @@ public class UserFile {
@Column(columnDefinition="varchar(25) comment '删除时间'")
private String deleteTime;
@Column(columnDefinition = "varchar(50) comment '删除批次号'")
private String deleteBatchNum;
}

View File

@ -0,0 +1,6 @@
package com.qiwenshare.file.dto.user;
public class RegisterDTO {
}

View File

@ -0,0 +1,9 @@
package com.qiwenshare.file.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qiwenshare.file.domain.RecoveryFile;
public interface RecoveryFileMapper extends BaseMapper<RecoveryFile> {
}

View File

@ -0,0 +1,13 @@
package com.qiwenshare.file.service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qiwenshare.file.api.IRecoveryFileService;
import com.qiwenshare.file.domain.FileBean;
import com.qiwenshare.file.domain.RecoveryFile;
import com.qiwenshare.file.mapper.FileMapper;
import com.qiwenshare.file.mapper.RecoveryFileMapper;
import org.springframework.stereotype.Service;
@Service
public class RecoveryFileService extends ServiceImpl<RecoveryFileMapper, RecoveryFile> implements IRecoveryFileService {
}

View File

@ -18,6 +18,7 @@ import com.qiwenshare.file.mapper.FileMapper;
import com.qiwenshare.file.mapper.UserFileMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
@ -85,18 +86,11 @@ public class UserFileService extends ServiceImpl<UserFileMapper, UserFile> impl
@Override
public List<Map<String, Object>> selectFileByExtendName(List<String> fileNameList, long userId) {
// LambdaQueryWrapper<FileBean> wrapper = new LambdaQueryWrapper<>();
// wrapper.in(FileBean::getExtendName, fileNameList).eq(FileBean::getUserId, userId);
// List<FileBean> fileBeans = fileMapper.selectList(wrapper);
// return fileBeans;
return userFileMapper.selectFileByExtendName(fileNameList, userId);
}
@Override
public List<Map<String, Object>> selectFileNotInExtendNames(List<String> fileNameList, long userId) {
// LambdaQueryWrapper<FileBean> wrapper = new LambdaQueryWrapper<>();
// wrapper.notIn(FileBean::getExtendName, fileNameList).eq(FileBean::getUserId, userId);
// List<FileBean> fileBeans = fileMapper.selectList(wrapper);
return userFileMapper.selectFileNotInExtendNames(fileNameList, userId);
}
@ -122,19 +116,21 @@ public class UserFileService extends ServiceImpl<UserFileMapper, UserFile> impl
public List<UserFile> selectFilePathTreeByUserId(Long userId) {
LambdaQueryWrapper<UserFile> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(UserFile::getUserId, userId)
.eq(UserFile::getIsDir, 1);
.eq(UserFile::getIsDir, 1)
.eq(UserFile::getDeleteFlag, 0);
return userFileMapper.selectList(lambdaQueryWrapper);
}
@Override
public void deleteUserFile(UserFile userFile, UserBean sessionUserBean) {
StorageBean storageBean = filetransferService.selectStorageBean(new StorageBean(sessionUserBean.getUserId()));
if (userFile.getIsDir() == 1) {
LambdaUpdateWrapper<UserFile> userFileLambdaUpdateWrapper = new LambdaUpdateWrapper<UserFile>();
userFileLambdaUpdateWrapper.set(UserFile::getDeleteFlag, 1).set(UserFile::getDeleteTime, DateUtil.getCurrentTime())
.eq(UserFile::getUserFileId, userFile.getUserFileId());
userFileMapper.update(null, userFileLambdaUpdateWrapper);
@ -142,14 +138,10 @@ public class UserFileService extends ServiceImpl<UserFileMapper, UserFile> impl
updateFileDeleteStateByFilePath(filePath);
}else{
//userFileMapper.deleteById(userFile.getUserFileId());
UserFile userFileTemp = userFileMapper.selectById(userFile.getUserFileId());
FileBean fileBean = fileMapper.selectById(userFileTemp.getFileId());
LambdaUpdateWrapper<UserFile> userFileLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
userFileLambdaUpdateWrapper.set(UserFile::getDeleteFlag, 1)
.set(UserFile::getDeleteTime, DateUtil.getCurrentTime())
@ -161,6 +153,7 @@ public class UserFileService extends ServiceImpl<UserFileMapper, UserFile> impl
.eq(FileBean::getFileId, fileBean.getFileId());
}
}
private void updateFileDeleteStateByFilePath(String filePath) {
@ -196,5 +189,4 @@ public class UserFileService extends ServiceImpl<UserFileMapper, UserFile> impl
}
}

View File

@ -29,11 +29,13 @@
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-springdoc-ui</artifactId>
<version>3.0.2</version>
</dependency>
<!--Swagger End-->
<dependency>
<groupId>org.projectlombok</groupId>