feat: 新增附件分组功能
Created by: guqing
概述
新增对文章附件进行分组展示功能,包括如下功能:
- 在附件管理页对附件以文件夹和文件的形式展示
- 可以新增文件夹即附件分组
- 可以对附件进行移动(归类到文件夹或舍弃归类)
- 可以删除分组(如果文件夹下包含文件递归删除)
动机
附件分组功能可以更高效和简洁的管理附件,防止附件杂乱无章 例如我可以将文章插图归类到文章插图文件夹,将图库所需要展示的附件归类到图库文件夹等等
详细解释
细节讨论
- 分组是否允许多子级,如果不允许则只能新建第一层文件夹,文件夹里不允许包含文件夹
- 是否新增切换展示方式功能,点击切换按钮可以以文件夹形式(如果附件没有分组则展示附件)展示或扁平化分页展示附件列表(不以文件夹的形式展示)
- 删除文件夹时是否递归删除文件夹下的所有内容
- 是否支持排序
实现方式
附件分组功能
-
新建附件分组类并映射到表: | 属性名 | 类型 | 说明 | | ---------- | ------- | -------- | | id | Integer | 分组id | | parentId | Integer | 附级分组id | | name | String | 分组名称 | | createTime | Date | 创建时间 | | updateTime | Date | 更新时间 | | deleted | Boolean | 删除状态 |
-
为附件
Attachment
类新增附件分组id
属性以表示附件所属文件夹,如果为null
则表示附件不属于任何分组
附件列表功能 接口返回值
class 分组With附件DTO {
List 分组集合;
List 文件集合;
}
- 页面将
分组集合
以文件夹样式渲染,在将文件集合
以文件样式渲染得到附件管理列表 - 点击切换时扁平化显示附件(分页查询附件并以附件样式渲染)
- 点击文件夹时按
文件夹id
查询得到分组With附件DTO
并重复步骤1
,如果分组不允许多子层级则展示该分组下的文件
移动功能
如果是附件则将附件的分组id
更新为所属分组id,如果时分组则将分组的parentId
更新为所属分组id
删除功能
- 如果删除分组时一并删除分组下的文件和文件夹:递归将文件夹下的所有附件和分组的
deleted
更新为true
- 如果删除分组时不删除子级:
- [单层级] 将文件夹下的所有附件的
分组id
更新为null
- [多层级] 将文件夹下的所有附件的
分组id
更新为null
,并将所有子分组的parentId更新为上层分组id
- [单层级] 将文件夹下的所有附件的