跳转至

网盘(DiskController)

提供 KMS 知识管理模块「网盘域」的核心能力:部门网盘集合查询、网盘更新/删除/批量删除、网盘结构树、当前用户可见的网盘集合(含个人/公司/Wiki/团队网盘的自动创建逻辑)。所有端点均返回 JSON 资源。

企业网盘本地目录同步(配置路径、手动双向同步、任务查询)见独立文档 disk-sync.mdDiskSyncController,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 + KmsSecurityFilterKmsMvcConfig 注册全局 Servlet 过滤器 KmsSecurityFilter(URL 模式 /*,context-path 为 / 时为 /kms/*)。本控制器路径 /api/kms/disks*/api/kms/disksTree 均不在 KmsSecurityFilter.isExcludeURI 的豁免名单内(豁免仅覆盖 /login.*/admin/domain.*/tray/service/authtimeservice/OfficeServer.*outsideshare/.*/preview、静态资源后缀、actuator/health 等),亦不匹配 S3 数据面前缀(/s3/kms/s3)。过滤器调用 Security.getUserIdFromToken(request),取不到用户则返回 HTTP 401因此所有端点均需 accessToken,可通过以下任一方式传递(据 Security.getUserIdFromToken):query 参数 accessToken、query 参数 access_token(移动端)、请求头 accessToken、Cookie accessToken、请求头 Authorization: Bearer <token>。完整鉴权机制见 index.md「鉴权说明」。
  • 执行用户:控制器内 getUser()(继承自 AbstractBaseController)调用 Security.getUserIdFromToken(request) 还原当前用户 id,再经 Feign(UserAPI.getUserById)装载 KmsUseruserCode 参数
  • 响应结构:统一 Resource(见 ../index.md「统一响应结构」),字段为 errcode/errmsg/data/errors。KMS 的 ResourceAbstractBaseController 内部类,其构造器对 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

请求示例

GET /api/kms/disks/departments?pageNo=1&linesPerPage=10&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 dataDataPackage<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

请求体

{ "id": "__DISKID__", "name": "新网盘名", "orderNo": 1 }

请求示例

PUT /api/kms/disks/__DISKID__?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json

{ "id": "__DISKID__", "name": "新网盘名" }

响应

结构:统一 Resourcedata:更新后的 Disk 实体(IEntity)。

失败示例(网盘不存在)

{ "errcode": 400, "errmsg": "请求参数有误", "data": null, "errors": null }


3. 删除部门网盘

按网盘 Id 删除单个部门网盘。

  • 接口类型:REST 资源
  • 请求方式DELETE
  • 请求路径/disks/{diskId}(完整:{kms-context}/api/kms/disks/{diskId}
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms网盘模块

请求参数

参数名 位置 类型 必填 说明
diskId path string 待删除网盘Id

请求示例

DELETE /api/kms/disks/__DISKID__?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 Resourcedataboolean,固定为 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数组

请求体

["__DISKID1__", "__DISKID2__"]

请求示例

DELETE /api/kms/disks?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json

["__DISKID1__", "__DISKID2__"]

响应

结构:统一 Resourcedataboolean,固定为 true

失败示例(参数为空)

{ "errcode": 400, "errmsg": "请求参数有误", "data": null, "errors": null }


5. 获取网盘结构树

按当前用户企业域构造网盘结构树(JSON 序列化字符串)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/disksTree(完整:{kms-context}/api/kms/disksTree
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms网盘模块

请求参数

无。

请求示例

GET /api/kms/disksTree?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataString,由 diskService.getDisksTree(domainid) 构造的网盘结构树(JSON 序列化字符串)。


6. 获取当前用户网盘集合

返回当前用户可见的全部网盘列表,包含**个人网盘**、公司网盘Wiki 网盘(仅企业知识管理员可见)、团队网盘;其中个人网盘与公司网盘在缺失时会按当前用户/企业域自动创建。结果会移除所有 null 网盘。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/disks(完整:{kms-context}/api/kms/disks
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms网盘模块

请求参数

无。

请求示例

GET /api/kms/disks?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataArrayList<Disk>,当前用户可见的网盘列表(个人/公司/Wiki/团队)。

据源码:Wiki 网盘仅当 isKmsSuperAdmin(user) 成立(用户角色集 UserDepartmentRoleSet 中存在 roleId == RoleConstant.ID_SUPER)时才会查询/创建并加入结果;非管理员不会触发 Wiki 网盘的自动创建。


说明(已注释端点):源码 DiskController 中存在一段被 // 注释掉的 createsDepartmentDisks 方法,注解为 @PostMapping(path = "/disks/departments")。该方法在源文件中可见但未参与 Spring 路由,实际不可调用,故未列入上述端点编号。