From c38410d835db8dfcd1e363c7ace8c8723a2a2cca Mon Sep 17 00:00:00 2001 From: "yuanjs@qutke.com" Date: Tue, 17 Jun 2025 19:06:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 426 ++++++------------------------------------------------ 1 file changed, 42 insertions(+), 384 deletions(-) diff --git a/README.md b/README.md index 6ad1c3e..cdf8f9a 100644 --- a/README.md +++ b/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){ * 选择部分或者全部分享的文件,或者进入对应的文件夹,转存到自己网盘 - image-20250209170723762 - * 思考难点 * 上述业务逻辑如何实现? @@ -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().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,如何实现复用? - image-20250209182912151 - * 业务逻辑 * 查询分享记录实体 @@ -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 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目录下的子文件内容 -image-20250209170723762 - - - - - - - - - - - - - - - -![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 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){ * 测试实战 -image-20250209170723762 - - - - - - - - - - - - - - - - - - - - - - - - - -#### 第5集 网盘回收站还原文件或者文件夹设计 - -**简介: 网盘回收站还原文件或者文件夹设计** +#### 网盘回收站还原文件或者文件夹设计 * 需求 @@ -5884,8 +5623,6 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ - 支持批量恢复操作,提高用户操作效率 - 业务逻辑有哪些注意事项考虑? - image-20250211145958919 - * 业务逻辑 * 检查是否满足:文件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){ * 测试实战 - image-20250211145958919 - - - - - - - +### 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 searchList(Long accountId, String search) { List accountFileDOList = accountFileMapper.selectList(new QueryWrapper() @@ -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 getDownloadUrl(FileDownloadReq req) { //获得要下载的用户文件对象 @@ -6154,23 +5827,8 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ } ``` - - - - - - - - - - - - - - -#### 第4集 网盘下载功能相关链路测试实战和规划 -**简介: 网盘下载功能相关链路测试实战和规划** +#### 网盘下载功能相关链路测试实战和规划 * 需求 * 测试AI云网盘文件下载功能