# CHpan1.0 **Repository Path**: CHll/CHpan1.0 ## Basic Information - **Project Name**: CHpan1.0 - **Description**: 我的网盘第一版 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-02 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CHpan1.0 我的网盘第一版 # 我的网盘项目 这个项目会持续更新,不断地加入新的东西。 ## 第一版CHpan 使用springboot2.0+mybatisplus做为后端 前端页面使用semanticui+thymeleaf模板引擎实现 目前以加入的功能: - 用户的登录/注册 - 用户的文件上传/下载/删除 - 用户个人信息的修改 - 用户可以找回一个月之内删除的文件 思路分析: 因为是网盘项目第一个地方就是数据库中的设计应该能做到自关联这样就可以分辨出来各种文件之间的嵌套关系,我在文件对象中加入了文件文件类别用来区分文件夹和文件而且加入了自关联自己的夫文件夹的id,在Java中对文件类别通过枚举的方式将0和1转换为字符串文件和文件夹。 在前端每次点击目标文件夹时都会传递回来目标文件夹的id在在后端找到所有以这个文件夹id作为父文件夹的文件和文件夹包装为list对象通过model传递到前端遍历展示,这样文件的树形结构展示就完成了 第二个就是将文件储存到自己设定的一个文件夹中并且满足设定的树形结构 这里我的思路就是在数据库中的文件对象有一列时uri这里储存了这个文件对象所在的相对物理路径,就是只储存会变化的部分,一开始就设定在application.yml的那部分不会储存而是在后端加入,这样想要更改储存地点的话就可以直接修改appliaction中的属性就可以了。而用户在目标文件夹中存储文件时就会将属性文件的地址加上uri在加上被储存文件或者文件夹的名字即可。 文件的上传和下载就是普通的multipartfile做文件上传,ResponseEntity做文件下载 其他的部分在我的项目中都写了很详细的注释,并且也在方法上面写了实现思路 更新信息: 第一次修改:将文件删除改为逻辑删除并且添加了定时任务每个月的2月2日真正的删除文件,在那之前用户可以重新取回自己删除的文件 第二次修改:今天在将session验证修改为jwt验证时发现了由于上一次加入定时删除任务时将登录拦截器中的一部分代码误改了,导致即便是登录了也无法访问主页面等其他页面,这部分问题已经成功解决,但是jwt验证只改了一半这一半我都给注释掉了并且写好了注释,另外一半的修改会持续完善 第三次修改:修改了之前定时任务中filedao为空的错误,并加入了线程安全的哈希表作为用户信息缓存,也设定了缓存的自动更新时间 第四次修改:将之前自己写的缓存层替换为redis做缓存