fm文档管理系统

169 阅读4分钟

fm文档管理系统

‍项目开源地址:gitee.com/hugh126/fm

一、fm文档管理(file manage)系统简介

本系统是一个基于ruoyi-vue分离版做的二次开发的系统,用于企业内部的文件、文档管理。主要有以下特点:

  1. 每个文档有可见或可下载两种权限,可基于角色配置
  2. 上传类型做了扩展,支持绝大多数文档、视频类型,支持文档的预览及下载
  3. 文档预览有水印,水印默认为角色名。对加水印进行了封装,可容易变更水印的内容、颜色、大小
  4. 视频类暂时没有加水印,但由于使用二进制流转objUrl的方式加载,也是杜绝了无权限传播视频的行为。
系统使用效果预览:
  • 文档预览

image-20250113234524-ck6hnh8.png

  • 图片预览

image-20241210122049-lkifgwb.png

  • 视频预览

image-20241210124743-eon3kd9.png

本系统数据库使用mysql5.7+,文件预览依赖libreoffice。如果是部署到Linux以供内网使用,建议配置nginx。

注意:本系统虽然基于ruoyi-vue版本二次开发而来,但是如果有配置冲突.请以本文档为主

二、fm使用说明

  1. 建1个或者多个用于文档权限控制的角色,然后绑定到用户上。一般不要与普通控制菜单权限类角色混用

    如果用户拥有超级管理员角色,则不会变更文档权限。因为超级管理员角色默认拥有全部权限。

image-20250113233704-778veyr.png 2. 如果要对用户的文档权限细分

image-20250113233815-56z2mb8.png

image-20250113233844-hsk41q1.png 3. 也可以在[目录管理]菜单中的[权限管理]按钮,对单个文档所对应的所有角色的权限,进行查看和编辑

image-20250113234029-e5dss9v.png 4. 只有超级管理员拥有全部权限,目录的删除需要先删除目录下文件。文件目录均为假删除

image-20250113234130-nqx8dhf.png 5. 普通用户仅有预览(点击带下划线的文件名)及下载权限

image-20250113234321-ja8e2b4.png

三、fm部署运行说明

下面就一些依赖进行部署配置说明:

  1. 安装依赖

    # 升级仓库
    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
    
  2. 软件配置

    • 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所依赖的表

  3. 系统配置

    • 为方便测试和部署,本系统通过spring.profiles.active​对环境依赖做了隔离。只需要环境相关配置文件 application-dev 或者 application-prod

      注意:IDEA中选择dev后编译,初始化该值;如果是命令行编译,则可以是 mvn compile -P dev

      div-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
      
  4. 创建数据库用户参考(非必须)

    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;
    
  5. 前端

    # 进入项目目录
    cd ruoyi-ui
    # 安装依赖
    npm install --registry=https://registry.npmmirror.com
    # 本地开发 启动项目
    npm run dev
    # 前端发布打包
    npm run build:prod
    
  6. 后端生产环境打包

    mvn clean package -P prod
    
  7. 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

  1. 转minio存储
  2. 视频切片传输
  3. 优化权限模型