一、前端项目(ruoyi-ui
文件夹)
ruoyi-ui/
├── public/ # 静态资源(不参与打包)
│ ├── index.html # 入口HTML模板
│ └── favicon.ico # 网站图标
├── src/
│ ├── api/ # 接口定义(axios封装,按模块划分)
│ ├── assets/ # 静态资源(图片、字体、SCSS变量)
│ ├── components/ # 全局组件(如分页组件、上传组件)
│ ├── router/ # 路由配置(动态加载权限路由)
│ ├── store/ # Vuex状态管理(用户信息、权限信息)
│ ├── utils/ # 工具类(请求拦截、日期格式化)
│ ├── views/ # 页面组件(系统管理、监控等模块)
│ ├── App.vue # 根组件(布局容器)
│ ├── main.js # 入口文件(全局组件注册)
│ └── settings.js # 系统配置(主题色、导航模式)
├── .env.development # 开发环境变量(代理配置)
├── vue.config.js # Webpack扩展配置(代理、打包优化)
└── package.json # 依赖管理(npm脚本命令)
二、后端项目(Spring Boot模块化结构)
ruoyi/
├── ruoyi-admin/ # 启动模块(含SpringBoot主类)
│ └── src/main/resources/
│ ├── application.yml # 全局配置(数据库/Redis/MQTT)[1,3](@ref)
│ └── logback.xml # 日志配置文件
├── ruoyi-common/ # 通用工具模块
│ ├── utils/ # 工具包(加密/文件操作/Snowflake ID)
│ └── mqtt/ # MQTT通信核心类(连接/订阅/推送)[3](@ref)
├── ruoyi-system/ # 系统功能模块
│ ├── mapper/ # MyBatis数据层接口
│ ├── domain/ # 实体类(用户/角色/部门)
│ └── service/ # 业务逻辑层(用户权限/文件上传)[1](@ref)
├── ruoyi-generator/ # 代码生成器模块(生成CRUD代码)[2](@ref)
└── sql/ # 数据库脚本(包含初始化表结构)[1](@ref)
三、后端目录结构详解(ruoyi-admin模块)
ruoyi/
├── bin/ # 启动脚本(包含Linux/Windows环境脚本)
├── sql/ # 初始化SQL文件(ry_*.sql为业务表,quartz.sql为定时任务)
├── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── ruoyi/
│ │ ├── common/ # 通用模块
│ │ │ ├── constant/ # 常量类(如用户状态、通用状态码)
│ │ │ ├── utils/ # 工具类(字符串处理、类型转换等)
│ │ │ └── exception/ # 自定义异常(如业务异常、权限异常)
│ │ ├── framework/ # 框架核心
│ │ │ ├── aspectj/ # AOP切面(日志记录、数据权限过滤)
│ │ │ ├── config/ # Spring配置类(安全、Swagger、线程池等)
│ │ │ └── web/ # 控制器基类(分页参数处理、响应封装)
│ │ ├── system/ # 系统模块(核心业务)
│ │ │ ├── controller/ # 请求处理层(接收参数、调用Service)
│ │ │ ├── domain/ # 实体类(与数据库表一一映射,含JPA注解)
│ │ │ ├── mapper/ # 数据持久层(MyBatis接口,定义CRUD方法)
│ │ │ ├── service/ # 业务逻辑层(接口+实现类,处理复杂业务)
│ │ │ └── model/ # DTO/VO对象(数据传输/视图模型,可选)
│ └── resources/
│ ├── i18n/ # 国际化资源文件(messages_zh_CN.properties等)
│ ├── mybatis/ # MyBatis映射文件(XML配置动态SQL)
│ ├── vm/ # 代码生成模板(Java/Vue文件模板)
│ ├── application.yml # 主配置文件(端口、日志路径等)
│ └── application-druid.yml # 数据源配置(连接池、监控页)
└── pom.xml # Maven依赖管理(聚合模块版本控制)
四、数据库表结构说明(19张核心表)
表名 | 作用 | 关联关系说明 |
---|---|---|
sys_user | 用户表(存储账号、密码、部门ID等) | 通过sys_user_role 多对多关联角色,通过sys_user_post 多对多关联岗位 |
sys_role | 角色表(权限集合) | 通过sys_role_menu 多对多关联菜单,通过sys_role_dept 多对多关联部门 |
sys_dept | 部门表(树形结构组织架构) | 自关联parent_id 字段实现树形层级,用户表通过dept_id 字段一对一关联 |
sys_menu | 菜单表(前端路由、按钮权限标识) | 通过parent_id 实现多级菜单,与角色表通过sys_role_menu 关联 |
sys_post | 岗位表(职位信息) | 用户通过sys_user_post 表实现多对多关联 |
gen_table | 代码生成主表(存储表名、模块名等) | 与gen_table_column 一对多关联字段配置 |
sys_config | 系统参数表(键值对形式的全局配置) | 独立表,用于系统动态参数管理 |
sys_dict_type | 字典类型表(分类管理) | 与sys_dict_data 一对多关联,实现数据字典功能 |
sys_oper_log | 操作日志表(记录增删改操作) | 通过切面编程自动记录 |
sys_logininfor | 登录日志表(IP、设备信息) | 独立存储用户登录轨迹 |
注:其他表如
sys_job
(定时任务)、sys_notice
(通知公告)等详见若依官方文档
四、配置文件详解(部分)
-
**
application.yml
**yaml
# 数据源配置 datasource: url: jdbc:mysql://localhost:3306/ry?useSSL=false username: root # Redis连接 redis: host: 127.0.0.1 password: 123456 # MQTT集成(需启用spring-boot-starter-integration)[3](@ref) mqtt: hostUrl: tcp://broker.emqx.io:1883 defaultTopic: device/status
-
**
vue.config.js
**javascript
devServer: { proxy: { '/api': { target: 'http://localhost:8080', // 后端接口代理 changeOrigin: true } } }
五、扩展功能集成说明
-
文件分片上传
- 依赖:
vue-simple-uploader
+spark-md5
生成文件指纹1
- 流程:前端分片→MD5校验→后端按
sys_chunk
表记录续传1
- 依赖:
-
安全配置
- 移除Spring Security改用Sa-Token(简化权限控制)
2
- 密码传输加密:集成
jsencrypt
实现RSA加密2
- 移除Spring Security改用Sa-Token(简化权限控制)
-
部署要点
- 前端:
npm run build:prod
生成dist
目录,Nginx代理静态资源4
- 后端:
mvn clean package
打包JAR,nohup
启动守护进程4
- 前端: