文档与协作
这篇解决什么
资料库里的文件怎么上传、谁能改、版本怎么回滚、OnlyOffice 从哪接。读完能对上 project_document_version、project_document_acl,以及独立编辑页 /project/document-editor。
默认端口 48080,管理端前缀 /admin-api。空间和文件夹见 知识库管理。文件客户端见 文件存储。
示意图:元数据和权限在项目模块。二进制走文件服务。在线编辑另开 Document Server。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 模块 | 项目文档实现 | ruoyi-office/yudao-module-project/ |
| 文档表 | @TableName("project_document") | .../dal/dataobject/document/ProjectDocumentDO.java |
| 版本 | project_document_version | ProjectDocumentVersionDO |
| ACL | project_document_acl | ProjectDocumentAclDO |
| 接口 | 上传、移动、版本、ACL | ProjectDocumentController |
| OnlyOffice | 配置、下载、回调 | @RequestMapping("/project/document/onlyoffice") |
| 编辑页 | 独立路由,不进菜单 | views/project/document/editor/、core.ts |
上传先走统一文件接口拿到 URL,再 POST /project/document/upload 登记到树。移动 PUT /move,归档 PUT /archive。

本系统截图:台账详情 → 项目文档。树、上传和权限入口都在这一页。OnlyOffice 没开也能上传下载。
权限
ProjectDocumentAclPermissionEnum:0 仅查看,1 可编辑(含在线编辑),2 可管理。未授权是 -1。
ACL 目标:0 人员,1 部门,2 岗位。可勾继承。接口 GET /acl/list、POST /acl/save、DELETE /acl/delete。详情里的 canPreview / canEdit / canManage 由 checkPermission 填。
文档还有两层可见性:visibility 常规 / 受限,deptVisible 项目内 / 仅本部门。先过这两层,再看 ACL。
管理权限才能改 ACL
保存、删除 ACL 需要 project:document:update。只有查看权的人能预览,不能改授权名单。
版本与在线编辑
每次替换源文件或 OnlyOffice 回写,会加一条版本。GET /version/list 看历史,POST /version/restore 回滚,POST /version/name 给当前版本写备注。
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 是否启用 | GET /onlyoffice/enabled | ProjectDocumentOnlyOfficeService |
| 编辑器配置 | GET /onlyoffice/config | 给前端 Document Server |
| 拉文件 | GET /onlyoffice/download | Document Server 用 token 拉 |
| 独立页 | /project/document-editor | core.ts 软依赖注册 |
本地没装 Document Server 时,enabled 为 false,页面只提供上传、预览、下载。不要把空编辑页写成故障。
示意图:编辑器只是外壳。回写仍进 project_document_version。
配置与操作
有上传权的人在文档中心或台账「项目文档」页签先走统一文件接口拿 URL,再 POST /project/document/upload 挂到树。移动 PUT /move,归档 PUT /archive。
改 ACL 要 project:document:update,且级别是可管理。目标:0 人员、1 部门、2 岗位,权限 0 仅查看、1 可编辑、2 可管理。先过 visibility / deptVisible,再看 ACL。保存后详情上的 canPreview / canEdit / canManage 立刻按 checkPermission 生效。
版本:替换源文件或 OnlyOffice 回写加一条 project_document_version。回滚 POST /version/restore。本地没开 Document Server 时 GET /onlyoffice/enabled 为 false,只上传下载,不要当故障。
