Skip to content

简介

zebra-ruoyi-plus-admin后台管理系统是基于RuoYi-Vue-Plus多租户权限管理系统代码进行改造及调整,主要为后端代码整合了zebra框架简化了代码量,并重构了模块的划分,使其代码层次更清晰,结构更简洁,而在核心功能上没有任何变化,如想要了解关于功能详情,请参见RuoYi-Vue-Plus 多租户权限管理系统官网 https://plus-doc.dromara.org

项目源码

源码地址
前端官方https://gitee.com/zhanghongbin/zebra-ruoyi-plus-ui
前端成员https://gitee.com/zhanghongbin/zebra-ruoyi-plus-vben5
后端https://gitee.com/zhanghongbin/zebra-ruoyi-plus-admin

版本说明

名称RuoYi-Vue-Plus版本zebra-ruoyi-plus-admin版本
前端官方(plus-ui)2.2.02.2.0
前端成员(ruoyi-plus-vben5)1.4.11.4.1
后端5.3.05.3.1

因历史原因,前端版本和后端版本没有和RuoYi-Vue-Plus保持一致,接下来的版本会保持一致

变化点说明

  1. 技术变化点
名称zebra-ruoyi-plus-adminRuoYi-Vue-Plus
jdk版本jdk11jdk17
核心依赖依赖zebra框架依赖ruoyi-common模块
模块结构zebra-admin-commonzebra-admin-storagezebra-admin-systemzebra-admin-messagezebra-admin-applicationruoyi-adminruoyi-commonruoyi-extendruoyi-modules
表结构主要支持mysql和postgres,并对部分表结构及字段进行微调支持多种数据库
  • 表结构差异详情
类型变化表名
删除gen_table,gen_table_column,sys_logininfor,sys_oss,sys_oss_config,sys_tenant_package
新增sys_audit_log(审计日志表)
sys_operation_log(操作日志表)
storage_resource_file(存储资源文件表)
storage_oss_config(存储对象配置表)
message_sms_config(消息短信配置表)
message_sms_template(消息短信模版配置表)
message_sms_log(消息短信日志表)
message_mail_config(消息邮箱配置表)
message_mail_template(消息邮箱模版配置表)
message_mail_log(消息邮箱日志表)

注:图片左侧为RuoYi-Vue-Plus表结构,右侧为zebra-ruoyi-plus-admin表结构

表名变化字段
sys_clientalt text
sys_configalt text
sys_deptalt text
sys_dict_dataalt text
sys_dict_typealt text
sys_menualt text
sys_noticealt text
sys_postalt text
sys_rolealt text
sys_tenantalt text
sys_useralt text
sys_user_postalt text
sys_user_rolealt text
  1. 功能变化点
名称zebra-ruoyi-plus-adminRuoYi-Vue-Plus
系统监控去掉
工作流去掉,建议采用zebra-flow工作流系统
租户套餐管理去掉

在线演示

演示地址: http://admin.zhanghongbin.xyz

用户账号密码
超级管理员adminadmin123

  1. 演示环境不要放置个人重要数据,并请不要故意破坏线上数据
  2. 演示环境服务器相关配置较低,恶意大规模访问ip会被封

快速开始

1. 前端

运行环境演示环境版本建议版本描述
nodev21.0.0>20.15.0windows建议安装nvm-desktop可以多版本切换

只对原前端项目中接口返回格式和部分功能进行了微调, 以下为适配了两个前端项目:

zebra-ruoyi-plus-ui

bash

# 克隆项目
git clone https://gitee.com/zhanghongbin/zebra-ruoyi-plus-ui.git

# 安装依赖
npm install --registry=https://registry.npmmirror.com

# 启动服务
npm run dev

# 构建生产环境
npm run build:prod

# 前端访问地址 http://localhost:80

更多信息和资料请参见官方网址 https://plus-doc.dromara.org/#/plus-ui/home

zebra-ruoyi-plus-vben5

bash

# 克隆项目
git clone https://gitee.com/zhanghongbin/zebra-ruoyi-plus-vben5.git

# 安装依赖
pnpm install

# 启动服务
pnpm run dev:antd

# 构建生产环境
pnpm run build:antd

# 前端访问地址 http://localhost:5666

更多信息和资料请参见官方网址 https://dapdap.top/

2. 后端

运行环境演示环境版本建议版本
jdkLiberica JDK 1111
maven3.8.3>=3.8.3
mysql8.0.27>=8.0.27
redis7.4.2>=6.2.6
minioRELEASE.2025-02-03T21-03-04Z
  • 下载项目
bash
# 克隆项目
git clone https://gitee.com/zhanghongbin/zebra-admin.git
  • 创建数据库

建立好数据库后,从项目下找到db目录中的zebra-admin-mysql.sql文件并执行

  • 项目配置

用开发工具打开项目,首先找到zebra-admin-common模块下resources目录中的application-common.yml文件进行修改

alt text

主要修改内容为:
数据库地址,端口,数据库名称,数据库用户名,数据库密码
redis地址,端口,密码

  • 启动程序

alt text

  • 存储配置

文件上传,头像等功能需要存储配置,启动程序后,打开网址,找到文件管理中的配置管理功能,并进行配置 alt textalt text 因存储使用了x-file-storage第三方库,所以在配置key填写时需要参考官网 https://x-file-storage.xuyanwu.cn/#/

前端项目开发

前端代码结构没有变化,具体参考前端官网相关文档

后端项目开发

项目结构

zebra admin 工程为多级模块项目,默认模块为:

. zebra-admin
├──zebra-admin-common           公共模块,包括公共代码和配置文件
├──zebra-admin-storage          存储模块,采用x-file-storage库
   ├──zebra-admin-storage-api   存储api模块
   ├──zebra-admin-storage-biz   存储核心业务模块
├──zebra-admin-message          消息模块,短信邮件等
   ├──zebra-admin-message-api   消息api模块
   ├──zebra-admin-message-biz   消息核心业务模块
├──zebra-admin-system           系统模块,包括用户,部门等等
功能代码
   ├──zebra-admin-system-api    系统api模块
   ├──zebra-admin-system-biz    系统核心业务模块
├──zebra-admin-application      启动模块

zebra-admin-common 模块
主要介绍下公共模块核心内容,具体详情请看源码。

名称描述
AdminConfig主要对数据填充和satoken权限进行数据初始化
CurrentLoginUserDto用户登录后的对象模型。LoginHelper 方法中获取的LoginUser对象都是CurrentLoginUserDto
LogicDeleteAuditedEntity带逻辑删除的审计实体,如果有逻辑删除实体可以继承此类
LogicDeleteTenantAuditedEntity带逻辑删除的租户审计实体,如果有逻辑删除实体可以继承此类
OperationLogHandler行为和审计日志的事件监听类
RuoYiServicePlusImplruoyi mybatis plus 适配,service实现类可以继承,也可以不使用
application-common.yml公共的资源文件,常用的公共配置,如mongodb,redis等
application-dev.yml,application-prod.yml ,application-test.yml环境资源文件,主要配置的zebra框架内容,没有特殊情况不需要更改及增加新内容

zebra-admin-storage 模块
存储模块采用x-file-storage库进行资源保存,核心内容如下:

名称描述
StorageController提供文件上传和删除接口
application-storage.yml配置文件

zebra-admin-message 模块
消息模块提供短信,邮件的管理和发送

zebra-admin-system 模块
此模块代码来源ruoyi,只有少量的结构和命名的调整,不做具体详细描述。

zebra-admin-application 模块
此模块为启动模块

注:
除公共模块和启动模块外,其它模块都有api模块和biz模块构成,api模块为其它模块访问此模块的接口,biz模块依赖于api模块并实现了api模块里的接口,以下为system-biz模块示例:
system-biz模块依赖于system-api模块并使用了存储模块的接口 storage-api模块 alt text

新建业务模块

  1. 创建一个新模块命名规则为:
    (公司缩写或项目代码)-moudle-(业务名称)
    (公司缩写或项目代码)-moudle-(业务名称)-api
    (公司缩写或项目代码)-moudle-(业务名称)-biz

alt text

  1. 新建的父模块建议pom里写 groupId,不用使用默认的
  2. 把api和biz模块坐标加到 zebra-admin-parent pom文件中的dependencyManagement中
  3. 把biz模块坐标加到zebra-admin-application pom文件中的dependencies节点
  4. 在biz模块中建立一个带有@SpringBootApplication启动类,并在zebra-admin-application中导入 alt text

规范及约束

  1. api模块
    所有接口必须在api包下,接口名称已I开头并以Api结尾,示例: IStorageResourceFileApi
    接口所用的到类都必须在dto包下,并且参数命名为ReqDto结尾,返回值以RespDto结尾 alt text
  2. biz模块
    参加java项目规范

项目部署

  1. 安装中间件(如果存在请忽略这一步)

以下为 docker compose 配置,具体根据实际情况调整

yml
 services:
  mysql:
    image: mysql:8.0.27
    container_name: mysql
    environment:
      # 时区上海
      TZ: Asia/Shanghai
      # root 密码
      MYSQL_ROOT_PASSWORD: root
    ports:
      - "3306:3306"
    volumes:
      # 数据挂载
      - /docker/mysql/data/:/var/lib/mysql/
      # 配置挂载
      - /docker/mysql/conf/:/etc/mysql/conf.d/
    command:
      # 将mysql8.0默认密码策略 修改为 原先 策略 (mysql8.0对其默认策略做了更改 会导致密码无法匹配)
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
    privileged: true

  nginx-web:
    image: nginx:1.23.4
    container_name: nginx-web
    environment:
      # 时区上海
      TZ: Asia/Shanghai
    ports:
      - "80:80"
      - "443:443"
    volumes:
      # 证书映射
      - /docker/nginx/cert:/etc/nginx/cert
      # 配置文件映射
      - /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      # 页面目录
      - /docker/nginx/html:/usr/share/nginx/html
      # 日志目录
      - /docker/nginx/log:/var/log/nginx
    privileged: true

  redis:
    image: redis:7.4.2 
    container_name: redis
    ports:
      - "6379:6379"
    environment:
      # 时区上海
      TZ: Asia/Shanghai
    volumes:
      # 配置文件
      - /docker/redis/conf:/redis/config:rw
      # 数据文件
      - /docker/redis/data/:/redis/data/:rw
    command: "redis-server /redis/config/redis.conf"
    privileged: true

  minio:
    image: minio/minio:RELEASE.2023-04-13T03-08-07Z
    container_name: minio
    ports:
      # api 端口
      - "9000:9000"
      # 控制台端口
      - "9001:9001"
    environment:
      # 时区上海
      TZ: Asia/Shanghai
      # 管理后台用户名
      MINIO_ROOT_USER: ruoyi
      # 管理后台密码,最小8个字符
      MINIO_ROOT_PASSWORD: ruoyi123
      # https需要指定域名
      #MINIO_SERVER_URL: "https://xxx.com:9000"
      #MINIO_BROWSER_REDIRECT_URL: "https://xxx.com:9001"
      # 开启压缩 on 开启 off 关闭
      MINIO_COMPRESS: "off"
      # 扩展名 .pdf,.doc 为空 所有类型均压缩
      MINIO_COMPRESS_EXTENSIONS: ""
      # mime 类型 application/pdf 为空 所有类型均压缩
      MINIO_COMPRESS_MIME_TYPES: ""
    volumes:
      # 映射当前目录下的data目录至容器内/data目录
      - /docker/minio/data:/data
      # 映射配置目录
      - /docker/minio/config:/root/.minio/
    command: server --address ':9000' --console-address ':9001' /data  # 指定容器中的目录 /data
    privileged: true

相关文件RuoYi-Vue-Plus直接下载
nginx https://gitee.com/dromara/RuoYi-Vue-Plus/blob/5.X/script/docker/nginx/conf/nginx.conf
redis https://gitee.com/dromara/RuoYi-Vue-Plus/blob/5.X/script/docker/redis/conf/redis.conf

  1. 构建后台管理系统 dockerfile
yml
# 执行 package 后,把根目录下的dockerfile文件和 zebra-admin-system target目录下 zebra-admin-system-5.3.0.jar 拷贝到服务器上
docker build -t zebra-ruoyi-plus:5.3.1 .
  1. 把根目录下的 docker-compose.yml 放到服务器上并执行