回收站功能开发
This commit is contained in:
parent
83e3c37707
commit
6e35c11fe3
@ -27,10 +27,7 @@
|
|||||||
<groupId>org.springframework.cloud</groupId>
|
<groupId>org.springframework.cloud</groupId>
|
||||||
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
|
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.cloud</groupId>
|
|
||||||
<artifactId>spring-cloud-starter-openfeign</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
@ -4,16 +4,16 @@ import org.mybatis.spring.annotation.MapperScan;
|
|||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
||||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
|
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
@EnableFeignClients
|
|
||||||
@MapperScan("com.qiwenshare.file.mapper")
|
@MapperScan("com.qiwenshare.file.mapper")
|
||||||
@EnableScheduling
|
@EnableScheduling
|
||||||
@EnableDiscoveryClient
|
@EnableDiscoveryClient
|
||||||
|
@EnableTransactionManagement
|
||||||
public class FileApplication {
|
public class FileApplication {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
@ -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> {
|
||||||
|
|
||||||
|
}
|
@ -7,18 +7,19 @@ import io.swagger.v3.oas.models.info.License;
|
|||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
public class OpenAPIConfig {
|
public class OpenAPIConfig {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public OpenAPI qiwenFileOpenAPI() {
|
public OpenAPI qiwenFileOpenAPI() {
|
||||||
return new OpenAPI()
|
return new OpenAPI()
|
||||||
.info(new Info().title("qiwen-file API")
|
.info(new Info().title("奇文网盘 API")
|
||||||
.description("基于springboot + vue 框架开发的Web文件系统,旨在为用户提供一个简单、方便的文件存储方案,能够以完善的目录结构体系,对文件进行管理 。")
|
.description("基于springboot + vue 框架开发的Web文件系统,旨在为用户提供一个简单、方便的文件存储方案,能够以完善的目录结构体系,对文件进行管理 。")
|
||||||
.version("v0.0.1")
|
.version("v0.0.1")
|
||||||
.license(new License().name("MIT").url("http://springdoc.org")))
|
.license(new License().name("MIT").url("http://springdoc.org")))
|
||||||
.externalDocs(new ExternalDocumentation()
|
.externalDocs(new ExternalDocumentation()
|
||||||
.description("gitee")
|
.description("奇文网盘gitee地址")
|
||||||
.url("https://www.gitee.com/qiwen-cloud/qiwen-file"));
|
.url("https://www.gitee.com/qiwen-cloud/qiwen-file"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,13 +11,13 @@ import com.qiwenshare.common.oss.AliyunOSSRename;
|
|||||||
import com.qiwenshare.common.util.FileUtil;
|
import com.qiwenshare.common.util.FileUtil;
|
||||||
import com.qiwenshare.common.util.PathUtil;
|
import com.qiwenshare.common.util.PathUtil;
|
||||||
import com.qiwenshare.file.api.IFileService;
|
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.api.IUserService;
|
||||||
import com.qiwenshare.file.config.QiwenFileConfig;
|
import com.qiwenshare.file.config.QiwenFileConfig;
|
||||||
import com.qiwenshare.file.domain.FileBean;
|
import com.qiwenshare.file.domain.*;
|
||||||
import com.qiwenshare.file.domain.TreeNode;
|
|
||||||
import com.qiwenshare.file.domain.UserBean;
|
|
||||||
import com.qiwenshare.file.domain.UserFile;
|
|
||||||
import com.qiwenshare.file.dto.*;
|
import com.qiwenshare.file.dto.*;
|
||||||
|
import com.qiwenshare.file.service.RecoveryFileService;
|
||||||
import com.qiwenshare.file.service.UserFileService;
|
import com.qiwenshare.file.service.UserFileService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
@ -43,7 +43,9 @@ public class FileController {
|
|||||||
@Resource
|
@Resource
|
||||||
IUserService userService;
|
IUserService userService;
|
||||||
@Resource
|
@Resource
|
||||||
UserFileService userFileService;
|
IUserFileService userFileService;
|
||||||
|
@Resource
|
||||||
|
IRecoveryFileService recoveryFileService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
QiwenFileConfig qiwenFileConfig;
|
QiwenFileConfig qiwenFileConfig;
|
||||||
@ -208,6 +210,11 @@ public class FileController {
|
|||||||
|
|
||||||
for (UserFile userFile : userFiles) {
|
for (UserFile userFile : userFiles) {
|
||||||
userFileService.deleteUserFile(userFile,sessionUserBean);
|
userFileService.deleteUserFile(userFile,sessionUserBean);
|
||||||
|
|
||||||
|
RecoveryFile recoveryFile = new RecoveryFile();
|
||||||
|
recoveryFile.setUserFileId(userFile.getUserFileId());
|
||||||
|
recoveryFile.setDeleteTime(DateUtil.getCurrentTime());
|
||||||
|
recoveryFileService.save(recoveryFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
result.setData("批量删除文件成功");
|
result.setData("批量删除文件成功");
|
||||||
@ -229,6 +236,10 @@ public class FileController {
|
|||||||
BeanUtil.copyProperties(deleteFileDto, userFile);
|
BeanUtil.copyProperties(deleteFileDto, userFile);
|
||||||
userFileService.deleteUserFile(userFile, sessionUserBean);
|
userFileService.deleteUserFile(userFile, sessionUserBean);
|
||||||
|
|
||||||
|
RecoveryFile recoveryFile = new RecoveryFile();
|
||||||
|
recoveryFile.setUserFileId(deleteFileDto.getUserFileId());
|
||||||
|
recoveryFile.setDeleteTime(DateUtil.getCurrentTime());
|
||||||
|
recoveryFileService.save(recoveryFile);
|
||||||
result.setSuccess(true);
|
result.setSuccess(true);
|
||||||
String resultJson = JSON.toJSONString(result);
|
String resultJson = JSON.toJSONString(result);
|
||||||
return resultJson;
|
return resultJson;
|
||||||
|
@ -51,8 +51,9 @@ public class UserController {
|
|||||||
*/
|
*/
|
||||||
public static final String CURRENT_MODULE = "用户管理";
|
public static final String CURRENT_MODULE = "用户管理";
|
||||||
|
|
||||||
|
|
||||||
@Operation(summary = "用户注册", description = "注册账号", tags = {"user"})
|
@Operation(summary = "用户注册", description = "注册账号", tags = {"user"})
|
||||||
@PostMapping(value = "/adduser")
|
@PostMapping(value = "/register")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public RestResult<String> addUser(@RequestBody RegisterDTO registerDTO) {
|
public RestResult<String> addUser(@RequestBody RegisterDTO registerDTO) {
|
||||||
RestResult<String> restResult = null;
|
RestResult<String> restResult = null;
|
||||||
@ -64,10 +65,10 @@ public class UserController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "用户登录", description = "用户登录认证后才能进入系统", tags = {"user"})
|
@Operation(summary = "用户登录", description = "用户登录认证后才能进入系统", tags = {"user"})
|
||||||
@GetMapping("/userlogin")
|
@GetMapping("/login")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public RestResult<UserLoginVo> userLogin(
|
public RestResult<UserLoginVo> userLogin(
|
||||||
@Parameter(description = "登录用户名", required = false) String username,
|
@Parameter(description = "登录用户名") String username,
|
||||||
@Parameter(description = "登录密码") String password) {
|
@Parameter(description = "登录密码") String password) {
|
||||||
RestResult<UserLoginVo> restResult = new RestResult<UserLoginVo>();
|
RestResult<UserLoginVo> restResult = new RestResult<UserLoginVo>();
|
||||||
UserBean saveUserBean = userService.findUserInfoByTelephone(username);
|
UserBean saveUserBean = userService.findUserInfoByTelephone(username);
|
||||||
@ -123,23 +124,4 @@ public class UserController {
|
|||||||
return restResult;
|
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;
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
}
|
@ -46,4 +46,7 @@ public class UserFile {
|
|||||||
@Column(columnDefinition="varchar(25) comment '删除时间'")
|
@Column(columnDefinition="varchar(25) comment '删除时间'")
|
||||||
private String deleteTime;
|
private String deleteTime;
|
||||||
|
|
||||||
|
@Column(columnDefinition = "varchar(50) comment '删除批次号'")
|
||||||
|
private String deleteBatchNum;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
package com.qiwenshare.file.dto.user;
|
||||||
|
|
||||||
|
|
||||||
|
public class RegisterDTO {
|
||||||
|
|
||||||
|
}
|
@ -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> {
|
||||||
|
|
||||||
|
}
|
@ -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 {
|
||||||
|
}
|
@ -18,6 +18,7 @@ import com.qiwenshare.file.mapper.FileMapper;
|
|||||||
import com.qiwenshare.file.mapper.UserFileMapper;
|
import com.qiwenshare.file.mapper.UserFileMapper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -85,18 +86,11 @@ public class UserFileService extends ServiceImpl<UserFileMapper, UserFile> impl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Map<String, Object>> selectFileByExtendName(List<String> fileNameList, long userId) {
|
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);
|
return userFileMapper.selectFileByExtendName(fileNameList, userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Map<String, Object>> selectFileNotInExtendNames(List<String> fileNameList, long userId) {
|
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);
|
return userFileMapper.selectFileNotInExtendNames(fileNameList, userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,19 +116,21 @@ public class UserFileService extends ServiceImpl<UserFileMapper, UserFile> impl
|
|||||||
public List<UserFile> selectFilePathTreeByUserId(Long userId) {
|
public List<UserFile> selectFilePathTreeByUserId(Long userId) {
|
||||||
LambdaQueryWrapper<UserFile> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<UserFile> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
lambdaQueryWrapper.eq(UserFile::getUserId, userId)
|
lambdaQueryWrapper.eq(UserFile::getUserId, userId)
|
||||||
.eq(UserFile::getIsDir, 1);
|
.eq(UserFile::getIsDir, 1)
|
||||||
|
.eq(UserFile::getDeleteFlag, 0);
|
||||||
return userFileMapper.selectList(lambdaQueryWrapper);
|
return userFileMapper.selectList(lambdaQueryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteUserFile(UserFile userFile, UserBean sessionUserBean) {
|
public void deleteUserFile(UserFile userFile, UserBean sessionUserBean) {
|
||||||
|
|
||||||
StorageBean storageBean = filetransferService.selectStorageBean(new StorageBean(sessionUserBean.getUserId()));
|
StorageBean storageBean = filetransferService.selectStorageBean(new StorageBean(sessionUserBean.getUserId()));
|
||||||
|
|
||||||
if (userFile.getIsDir() == 1) {
|
if (userFile.getIsDir() == 1) {
|
||||||
|
|
||||||
LambdaUpdateWrapper<UserFile> userFileLambdaUpdateWrapper = new LambdaUpdateWrapper<UserFile>();
|
LambdaUpdateWrapper<UserFile> userFileLambdaUpdateWrapper = new LambdaUpdateWrapper<UserFile>();
|
||||||
userFileLambdaUpdateWrapper.set(UserFile::getDeleteFlag, 1).set(UserFile::getDeleteTime, DateUtil.getCurrentTime())
|
userFileLambdaUpdateWrapper.set(UserFile::getDeleteFlag, 1).set(UserFile::getDeleteTime, DateUtil.getCurrentTime())
|
||||||
|
|
||||||
.eq(UserFile::getUserFileId, userFile.getUserFileId());
|
.eq(UserFile::getUserFileId, userFile.getUserFileId());
|
||||||
userFileMapper.update(null, userFileLambdaUpdateWrapper);
|
userFileMapper.update(null, userFileLambdaUpdateWrapper);
|
||||||
|
|
||||||
@ -142,14 +138,10 @@ public class UserFileService extends ServiceImpl<UserFileMapper, UserFile> impl
|
|||||||
updateFileDeleteStateByFilePath(filePath);
|
updateFileDeleteStateByFilePath(filePath);
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
//userFileMapper.deleteById(userFile.getUserFileId());
|
|
||||||
UserFile userFileTemp = userFileMapper.selectById(userFile.getUserFileId());
|
UserFile userFileTemp = userFileMapper.selectById(userFile.getUserFileId());
|
||||||
FileBean fileBean = fileMapper.selectById(userFileTemp.getFileId());
|
FileBean fileBean = fileMapper.selectById(userFileTemp.getFileId());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LambdaUpdateWrapper<UserFile> userFileLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
LambdaUpdateWrapper<UserFile> userFileLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||||
userFileLambdaUpdateWrapper.set(UserFile::getDeleteFlag, 1)
|
userFileLambdaUpdateWrapper.set(UserFile::getDeleteFlag, 1)
|
||||||
.set(UserFile::getDeleteTime, DateUtil.getCurrentTime())
|
.set(UserFile::getDeleteTime, DateUtil.getCurrentTime())
|
||||||
@ -161,6 +153,7 @@ public class UserFileService extends ServiceImpl<UserFileMapper, UserFile> impl
|
|||||||
.eq(FileBean::getFileId, fileBean.getFileId());
|
.eq(FileBean::getFileId, fileBean.getFileId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateFileDeleteStateByFilePath(String filePath) {
|
private void updateFileDeleteStateByFilePath(String filePath) {
|
||||||
@ -196,5 +189,4 @@ public class UserFileService extends ServiceImpl<UserFileMapper, UserFile> impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
2
pom.xml
2
pom.xml
@ -29,11 +29,13 @@
|
|||||||
<artifactId>springdoc-openapi-ui</artifactId>
|
<artifactId>springdoc-openapi-ui</artifactId>
|
||||||
<version>1.5.2</version>
|
<version>1.5.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.xiaoymin</groupId>
|
<groupId>com.github.xiaoymin</groupId>
|
||||||
<artifactId>knife4j-springdoc-ui</artifactId>
|
<artifactId>knife4j-springdoc-ui</artifactId>
|
||||||
<version>3.0.2</version>
|
<version>3.0.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!--Swagger End-->
|
<!--Swagger End-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.projectlombok</groupId>
|
<groupId>org.projectlombok</groupId>
|
||||||
|
Loading…
Reference in New Issue
Block a user