Browse Source

feat: 更新文档

master
yuanjs@qutke.com 2 weeks ago
parent
commit
c38410d835
  1. 426
      README.md

426
README.md

@ -4936,43 +4936,9 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 测试实战
### 自定义注解+AOP实战文件分享设计实战
### 第十六章 自定义注解+AOP实战文件分享设计实战
#### 第1集 【业务难点】查看他人分享文件列表业务设计
**简介: 【业务难点】查看他人分享文件列表业务设计**
#### 【业务难点】查看他人分享文件列表业务设计
* 需求
@ -4980,8 +4946,6 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 选择部分或者全部分享的文件,或者进入对应的文件夹,转存到自己网盘
<img src="D:/学习/2025/AI智能化云盘学习笔记/笔记/img/image-20250209170723762.png" alt="image-20250209170723762" style="zoom:50%;" />
* 思考难点
* 上述业务逻辑如何实现?
@ -5009,23 +4973,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
#### 第2集 AI智能化云盘-基本分享信息接口开发实战
**简介: AI智能化云盘-基本分享信息接口开发实战**
#### AI智能化云盘-基本分享信息接口开发实战
* 需求
* 用户访问分享链接,进入对应的分享文件页面
@ -5048,7 +4996,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 业务逻辑开发
```
```java
@Override
public ShareSimpleDTO simpleDetail(Long shareId) {
@ -5074,7 +5022,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 令牌生成
```
```java
/**
* 创建分享的令牌
*/
@ -5126,23 +5074,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
#### 第3集 AI智能化云盘-分享链接校验码接口开发
**简介: AI智能化云盘-分享链接校验码提口开发**
#### AI智能化云盘-分享链接校验码接口开发
* 需求
@ -5160,7 +5092,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 编码实战
```
```java
public String checkShareCode(ShareCheckReq req) {
ShareDO shareDO = shareMapper.selectOne(new QueryWrapper<ShareDO>().eq("id", req.getShareId())
@ -5186,27 +5118,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
#### 第4集 AI智能化云盘-查看分享详情接口开发
**简介: AI智能化云盘-查看分享详情接口开发**
#### AI智能化云盘-查看分享详情接口开发
* 需求
@ -5218,8 +5130,6 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 如何校验访问token和分享ID的关联性
* 哪些接口需要校验token,如何实现复用?
<img src="D:/学习/2025/AI智能化云盘学习笔记/笔记/img/image-20250209182912151.png" alt="image-20250209182912151" style="zoom:20%;" />
* 业务逻辑
* 查询分享记录实体
@ -5230,7 +5140,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 编码实战
```
```java
public ShareDetailDTO detail(Long shareId) {
//1、查询分享记录实体,检查分享状态
ShareDO shareDO = checkShareStatus(shareId);
@ -5249,19 +5159,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
}
```
#### 第5集 自定义注解+AOP实现文件分享token校验实战《上》
#### 自定义注解+AOP实现文件分享token校验实战《上》
**简介: 自定义注解+AOP实现文件分享token校验实战**
@ -5309,7 +5207,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 自定义注解`ShareCodeCheck`编码实战
```
```java
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@ -5319,7 +5217,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 定义切面类
```
```java
@Aspect
@Component
@Slf4j
@ -5351,27 +5249,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
}
```
#### 第6集 自定义注解+AOP实现文件分享token校验实战《下》
**简介: 自定义注解+AOP实现文件分享token校验实战**
#### 自定义注解+AOP实现文件分享token校验实战《下》
* 需求
@ -5380,7 +5258,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 编码实战
```
```java
/**
* 定义 @Pointcut注解表达式
* 方式一:@annotation:当执行的方法上拥有指定的注解时生效(我们采用这)
@ -5425,7 +5303,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 查看分享详情接口配置注解
```
```java
@GetMapping("detail")
@ShareCodeCheck
public JsonData detail(){
@ -5436,24 +5314,9 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
### 网盘分享文件转存+全链路测试实战
![logo](D:/学习/2025/AI智能化云盘学习笔记/笔记/img/image-20230918114907133-5008948.png) **愿景:"IT路上的持续充电平台,让技术不再难学"**
**更多高级课程请访问 xdclass.net**
### 第十七章 网盘分享文件转存+全链路测试实战
#### 第1集 查看某个分享文件夹下的文件列表接口实战
**简介: 查看某个分享文件夹下的文件列表接口实战**
#### 查看某个分享文件夹下的文件列表接口实战
* 需求
* 开发查看某个分享链接的子文件列表接口
@ -5471,7 +5334,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 接口开发+自定义注解
```
```java
@PostMapping("list_share_file")
@ShareCodeCheck
public JsonData listShareFile(@RequestBody ShareFileQueryReq req){
@ -5485,7 +5348,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 业务逻辑
```
```java
public List<AccountFileDTO> listShareFile(ShareFileQueryReq req) {
//1、检查分享链接状态
ShareDO shareDO = checkShareStatus(req.getShareId());
@ -5509,23 +5372,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
#### 第2集 网盘分享文件转存接口设计和开发实战
#### 网盘分享文件转存接口设计和开发实战
**简介: 网盘分享文件转存接口设计和开发实战**
@ -5551,7 +5398,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 修改校验逻辑
```
```java
private ShareDO checkShareStatus(Long shareId) {
ShareDO shareDO = shareMapper.selectById(shareId);
if (shareDO == null) {
@ -5574,7 +5421,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 处理转存逻辑
```
```java
public void transferShareFile(ShareFileTransferReq req) {
// 1、分享链接是否状态准确
@ -5613,17 +5460,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
#### 第3集 网盘分享文件+转存全链路接口测试实战
#### 网盘分享文件+转存全链路接口测试实战
**简介: 网盘分享转存全链路接口测试实战**
@ -5637,9 +5474,8 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* Bug修复
```
//计算存储空间大小,检查是否足够
if(!fileService.checkAndUpdateCapacity(req.getAccountId(),batchTransferFileList.stream()
```java
//计算存储空间大小,检查是否足够 if(!fileService.checkAndUpdateCapacity(req.getAccountId(),batchTransferFileList.stream()
.map(accountFileDO -> accountFileDO.getFileSize() == null ? 0 : accountFileDO.getFileSize())
.mapToLong(Long::valueOf).sum())){
throw new BizException(BizCodeEnum.FILE_STORAGE_NOT_ENOUGH);
@ -5656,32 +5492,9 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 账号B登录(登录token记得替换, 增加share-token), 转存a1目录到自己的根目录
* 账号B登录(登录token记得替换),查看自己根目录下的文件夹,还有a1目录下的子文件内容
<img src="D:/学习/2025/AI智能化云盘学习笔记/笔记/img/image-20250209170723762.png" alt="image-20250209170723762" style="zoom:50%;" />
![logo](D:/学习/2025/AI智能化云盘学习笔记/笔记/img/image-20230918114907133-5008948.png) **愿景:"IT路上的持续充电平台,让技术不再难学"**
**更多高级课程请访问 xdclass.net**
### 第十八章 AI网盘回收站设计和编码开发实战
### AI网盘回收站设计和编码开发实战
#### 第1集 网盘回收站需求背景和业务逻辑讲解
**简介: 网盘回收站需求背景和业务逻辑讲解**
#### 网盘回收站需求背景和业务逻辑讲解
* 业务需求
@ -5709,23 +5522,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
#### 第2集 当前用户的个人回收站文件列表开发实战
**简介: 当前用户的个人回收站文件列表开发实战**
#### 当前用户的个人回收站文件列表开发实战
* 需求
@ -5742,7 +5539,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 编码实战
```
```java
@Override
public List<AccountFileDTO> listRecycleFiles(Long accountId) {
@ -5763,19 +5560,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
#### 第3集 AI网盘彻底删除回收站文件设计和开发实战
**简介: AI网盘彻底删除回收站文件设计和开发实战**
#### AI网盘彻底删除回收站文件设计和开发实战
* 需求背景
* 回收站文件用于临时存储删除的文件
@ -5793,7 +5578,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 编码实战
```
```java
public void delete(FileDelReq fileDelReq) {
//文件ID数量是否合法
// 要删除的文件Ids
@ -5822,25 +5607,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
#### 第4集 回收站查看和彻底删除回收站接口测试
**简介: 回收站查看和彻底删除回收站接口测试**
#### 回收站查看和彻底删除回收站接口测试
* 需求
* 测试查看我的回收站列表
@ -5848,35 +5615,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 测试实战
<img src="D:/学习/2025/AI智能化云盘学习笔记/笔记/img/image-20250209170723762.png" alt="image-20250209170723762" style="zoom:50%;" />
#### 第5集 网盘回收站还原文件或者文件夹设计
**简介: 网盘回收站还原文件或者文件夹设计**
#### 网盘回收站还原文件或者文件夹设计
* 需求
@ -5884,8 +5623,6 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
- 支持批量恢复操作,提高用户操作效率
- 业务逻辑有哪些注意事项考虑?
<img src="D:/学习/2025/AI智能化云盘学习笔记/笔记/img/image-20250211145958919.png" alt="image-20250211145958919" style="zoom:30%;" />
* 业务逻辑
* 检查是否满足:文件ID数量是否合法
@ -5896,7 +5633,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 编码实战
```
```java
@Transactional(rollbackFor = Exception.class)
public void restoreFile(FileRecycleReq req) {
@ -5938,23 +5675,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
#### 第6集 网盘回收站还原文件接口测试实战
**简介: 网盘回收站还原文件接口测试实战**
#### 网盘回收站还原文件接口测试实战
* 需求
@ -5963,27 +5684,9 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 测试实战
<img src="D:/学习/2025/AI智能化云盘学习笔记/笔记/img/image-20250211145958919.png" alt="image-20250211145958919" style="zoom:30%;" />
### AI网盘文件搜索和下载功能开发实战
![logo](D:/学习/2025/AI智能化云盘学习笔记/笔记/img/image-20230918114907133-5008948.png) **愿景:"IT路上的持续充电平台,让技术不再难学"**
**更多高级课程请访问 xdclass.net**
### 第十九章 AI网盘文件搜索和下载功能开发实战
#### 第1集 网盘搜索功能需求介绍和接口设计说明
**简介: 网盘搜索功能需求介绍和接口设计说明**
#### 网盘搜索功能需求介绍和接口设计说明
* 需求
@ -5997,7 +5700,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 编码实战
```
```java
@Override
public List<AccountFileDTO> searchList(Long accountId, String search) {
List<AccountFileDO> accountFileDOList = accountFileMapper.selectList(new QueryWrapper<AccountFileDO>()
@ -6012,21 +5715,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
#### 第2集 网盘下载功能需求介绍和多方案思考选择
**简介: 网盘下载功能需求介绍和多方案思考选择**
#### 网盘下载功能需求介绍和多方案思考选择
* 需求
@ -6095,23 +5784,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 依赖于**HTTP协议中的`Range`请求头**,当浏览器发起下载请求时,可以通过`Range`头指定从文件的某个字节开始下载
* 用户存在多个浏览器,版本问题、厂商问题等 导致不支持,因此web端不做这个功能
#### 第3集 网盘多文件下载功能设计和开发实战
**简介: 网盘多文件下载功能设计和开发实战**
#### 网盘多文件下载功能设计和开发实战
* 需求
* 开发文件下载功能,前端请求后端,后端请求文件存储获取下载地址
@ -6122,7 +5795,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
* 编码实战(可以支持单个或者多个文件下载)
```
```java
@Override
public List<DownloadUrlDTO> getDownloadUrl(FileDownloadReq req) {
//获得要下载的用户文件对象
@ -6155,22 +5828,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){
```
#### 第4集 网盘下载功能相关链路测试实战和规划
**简介: 网盘下载功能相关链路测试实战和规划**
#### 网盘下载功能相关链路测试实战和规划
* 需求
* 测试AI云网盘文件下载功能

Loading…
Cancel
Save