网盘(DiskController)¶
提供 KMS 知识管理模块「网盘域」的核心能力:部门网盘集合查询、网盘更新/删除/批量删除、网盘结构树、当前用户可见的网盘集合(含个人/公司/Wiki/团队网盘的自动创建逻辑)。所有端点均返回 JSON 资源。
企业网盘本地目录同步(配置路径、手动双向同步、任务查询)见独立文档
disk-sync.md(DiskSyncController,5 个端点)。Disk实体含可选字段syncLocalPath(列SYNC_LOCAL_PATH)。
- 接口类型:REST 资源(
@RestController,类级与所有方法级produces = MediaType.APPLICATION_JSON_VALUE) - 基址:
${myapps.context-path.kms:}/api/kms(类级@RequestMapping仅声明单一前缀,无/kms备用前缀;与 FolderController、TeamController 一致,与 FileController/CategoryController 不同) - Tag:kms网盘模块
公共说明¶
- 鉴权(据源码
KmsMvcConfig+KmsSecurityFilter):KmsMvcConfig注册全局 Servlet 过滤器KmsSecurityFilter(URL 模式/*,context-path 为/时为/kms/*)。本控制器路径/api/kms/disks*、/api/kms/disksTree均不在KmsSecurityFilter.isExcludeURI的豁免名单内(豁免仅覆盖/login.*、/admin、/domain.*、/tray/service、/authtime、service/OfficeServer、.*outsideshare/.*/preview、静态资源后缀、actuator/health等),亦不匹配 S3 数据面前缀(/s3、/kms/s3)。过滤器调用Security.getUserIdFromToken(request),取不到用户则返回 HTTP401。因此所有端点均需 accessToken,可通过以下任一方式传递(据Security.getUserIdFromToken):query 参数accessToken、query 参数access_token(移动端)、请求头accessToken、CookieaccessToken、请求头Authorization: Bearer <token>。完整鉴权机制见 index.md「鉴权说明」。 - 执行用户:控制器内
getUser()(继承自AbstractBaseController)调用Security.getUserIdFromToken(request)还原当前用户 id,再经 Feign(UserAPI.getUserById)装载KmsUser。无userCode参数。 - 响应结构:统一
Resource(见 ../index.md「统一响应结构」),字段为errcode/errmsg/data/errors。KMS 的Resource为AbstractBaseController内部类,其构造器对data执行ESAPI.encode(data)做 XSS 编码,故data中的 HTML 特殊字符会被转义。 - HTTP 状态码与错误码(据源码
AbstractBaseController全局异常处理):成功默认 HTTP 200;InvalidRequestException→ HTTP 400 / errcode=400;UnauthorizedException→ HTTP 403 / errcode=403;ForbiddenException→ HTTP 403 / errcode=403;ResourceNotFoundException→ HTTP 404 / errcode=404;其他Exception→ HTTP 500 / errcode=500。 - 路径变量:
diskId为 KMS 内部主键(明文 id),非 DES 加密密文。
1. 获取部门网盘集合¶
分页查询当前用户企业域下的部门网盘列表。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/disks/departments(完整:{kms-context}/api/kms/disks/departments) - 鉴权:是(需 accessToken,据源码)
- Tag:kms网盘模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| linesPerPage | query | int | 否 | 每页条数,默认 10 |
| pageNo | query | int | 否 | 页码,默认 1 |
请求示例¶
响应¶
结构:统一 Resource(见 ../index.md「统一响应结构」)。
data:DataPackage<Disk>,部门网盘分页数据。
2. 更新部门网盘¶
更新指定网盘的属性。仅允许修改非 ownerId/type 字段:服务端按 disk.id 查找既有网盘,将入参的 ownerId/type 强制回填为既有值,再执行 update。网盘不存在时抛 InvalidRequestException(HTTP 400)。
- 接口类型:REST 资源
- 请求方式:
PUT - 请求路径:
/disks/{diskId}(完整:{kms-context}/api/kms/disks/{diskId}) - 鉴权:是(需 accessToken,据源码)
- Tag:kms网盘模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| diskId | path | string | 是 | 网盘Id(路径占位;实际以 body 中的 disk.id 为准) |
| body | body | object | 是 | Disk 对象 JSON |
请求体¶
请求示例¶
PUT /api/kms/disks/__DISKID__?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json
{ "id": "__DISKID__", "name": "新网盘名" }
响应¶
结构:统一 Resource。
data:更新后的 Disk 实体(IEntity)。
失败示例(网盘不存在):
3. 删除部门网盘¶
按网盘 Id 删除单个部门网盘。
- 接口类型:REST 资源
- 请求方式:
DELETE - 请求路径:
/disks/{diskId}(完整:{kms-context}/api/kms/disks/{diskId}) - 鉴权:是(需 accessToken,据源码)
- Tag:kms网盘模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| diskId | path | string | 是 | 待删除网盘Id |
请求示例¶
响应¶
结构:统一 Resource。
data:boolean,固定为 true(删除由 diskService.delete(diskId) 完成,过程中抛出的异常由全局处理器映射)。
4. 批量删除部门网盘¶
按网盘 Id 数组批量删除部门网盘。diskId 为空数组或 null 时抛 InvalidRequestException(HTTP 400)。
- 接口类型:REST 资源
- 请求方式:
DELETE - 请求路径:
/disks(完整:{kms-context}/api/kms/disks) - 鉴权:是(需 accessToken,据源码)
- Tag:kms网盘模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| body | body | array(string) | 是 | 待删除网盘Id数组 |
请求体¶
请求示例¶
DELETE /api/kms/disks?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json
["__DISKID1__", "__DISKID2__"]
响应¶
结构:统一 Resource。
data:boolean,固定为 true。
失败示例(参数为空):
5. 获取网盘结构树¶
按当前用户企业域构造网盘结构树(JSON 序列化字符串)。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/disksTree(完整:{kms-context}/api/kms/disksTree) - 鉴权:是(需 accessToken,据源码)
- Tag:kms网盘模块
请求参数¶
无。
请求示例¶
响应¶
结构:统一 Resource。
data:String,由 diskService.getDisksTree(domainid) 构造的网盘结构树(JSON 序列化字符串)。
6. 获取当前用户网盘集合¶
返回当前用户可见的全部网盘列表,包含**个人网盘**、公司网盘、Wiki 网盘(仅企业知识管理员可见)、团队网盘;其中个人网盘与公司网盘在缺失时会按当前用户/企业域自动创建。结果会移除所有 null 网盘。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/disks(完整:{kms-context}/api/kms/disks) - 鉴权:是(需 accessToken,据源码)
- Tag:kms网盘模块
请求参数¶
无。
请求示例¶
响应¶
结构:统一 Resource。
data:ArrayList<Disk>,当前用户可见的网盘列表(个人/公司/Wiki/团队)。
据源码:Wiki 网盘仅当
isKmsSuperAdmin(user)成立(用户角色集UserDepartmentRoleSet中存在roleId == RoleConstant.ID_SUPER)时才会查询/创建并加入结果;非管理员不会触发 Wiki 网盘的自动创建。
说明(已注释端点):源码
DiskController中存在一段被//注释掉的createsDepartmentDisks方法,注解为@PostMapping(path = "/disks/departments")。该方法在源文件中可见但未参与 Spring 路由,实际不可调用,故未列入上述端点编号。