fm文档管理系统
项目开源地址:gitee.com/hugh126/fm
一、fm文档管理(file manage)系统简介
本系统是一个基于ruoyi-vue分离版做的二次开发的系统,用于企业内部的文件、文档管理。主要有以下特点:
- 每个文档有可见或可下载两种权限,可基于角色配置
- 上传类型做了扩展,支持绝大多数文档、视频类型,支持文档的预览及下载
- 文档预览有水印,水印默认为角色名。对加水印进行了封装,可容易变更水印的内容、颜色、大小
- 视频类暂时没有加水印,但由于使用二进制流转objUrl的方式加载,也是杜绝了无权限传播视频的行为。
系统使用效果预览:
- 文档预览
- 图片预览
- 视频预览
本系统数据库使用mysql5.7+,文件预览依赖libreoffice。如果是部署到Linux以供内网使用,建议配置nginx。
注意:本系统虽然基于ruoyi-vue版本二次开发而来,但是如果有配置冲突.请以本文档为主
二、fm使用说明
-
建1个或者多个用于文档权限控制的角色,然后绑定到用户上。一般不要与普通控制菜单权限类角色混用
如果用户拥有超级管理员角色,则不会变更文档权限。因为超级管理员角色默认拥有全部权限。
2. 如果要对用户的文档权限细分
3. 也可以在[目录管理]菜单中的[权限管理]按钮,对单个文档所对应的所有角色的权限,进行查看和编辑
4. 只有超级管理员拥有全部权限,目录的删除需要先删除目录下文件。文件目录均为假删除
5. 普通用户仅有预览(点击带下划线的文件名)及下载权限
三、fm部署运行说明
下面就一些依赖进行部署配置说明:
-
安装依赖
# 升级仓库 apt update # 安装openjdk apt install openjdk-8-jre-headless # 安装nginx apt install nginx -y # 安装redis apt install redis -y # 安装开源mysql apt install mariadb-server -y # 安装libreoffice apt install libreoffice -y # /usr/bin/libreoffice --version -
软件配置
-
mysql初始化及配置(参考)
# 创建用户 CREATE DATABASE fm DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; CREATE USER 'fm'@'%' IDENTIFIED BY 'fm!123456'; GRANT ALL PRIVILEGES ON fm.* TO 'fm'@'%' ; FLUSH PRIVILEGES; -
数据库初始化(必须)
先执行ry_20240629.sql初始化若依依赖表,再执行fm.sql所依赖的表
-
-
系统配置
-
为方便测试和部署,本系统通过
spring.profiles.active对环境依赖做了隔离。只需要环境相关配置文件 application-dev 或者 application-prod注意:IDEA中选择dev后编译,初始化该值;如果是命令行编译,则可以是
mvn compile -P devdiv-env: profile: F:/data/fm/uploadPath # LibreOffice安装目录 officeHome: F:/Program Files/LibreOffice db: username: root password: 123456 -
系统路径
# 上传目录 mkdir -p /data/fm/uploadPath # 日志目录 mkdir -p /data/log/fm
-
-
创建数据库用户参考(非必须)
CREATE DATABASE fm DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; CREATE USER 'fm'@'%' IDENTIFIED BY 'fm!123456'; GRANT ALL PRIVILEGES ON fm.* TO 'fm'@'%' ; FLUSH PRIVILEGES; -
前端
# 进入项目目录 cd ruoyi-ui # 安装依赖 npm install --registry=https://registry.npmmirror.com # 本地开发 启动项目 npm run dev # 前端发布打包 npm run build:prod -
后端生产环境打包
mvn clean package -P prod -
nginx部署(非必须)
server { listen 80; server_name 114.132.59.247; charset utf-8; gzip on; # 开启 gzip 压缩 gzip_min_length 1k; # 设置允许压缩的页面最小字节数 gzip_buffers 16 64k; # 设置系统获取多少缓冲区,以及每个缓冲区的大小 gzip_http_version 1.1; # 启用 HTTP/1.1 时的 gzip 压缩 gzip_comp_level 6; # 设置 gzip 压缩级别,1(最快)到 9(最小)9是最高压缩率但占用CPU较多 gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml application/x-httpd-php image/jpeg image/gif image/png font/ttf font/otf image/svg+xml; # 指定压缩的 MIME 类型 gzip_vary on; # 根据请求的Accept-Encoding头信息来判断是否启用gzip # 默认的Web服务配置 location / { root /data/html/dist; try_files $uri $uri/ /index.html; index index.html index.htm; } # 处理API请求 location /prod-api/ { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8080/; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }
todo
- 转minio存储
- 视频切片传输
- 优化权限模型