## 技术选型 **1、系统环境** - Java EE 8 - Servlet 3.0 - Apache Maven 3 **2、主框架** - Spring Boot 2.2.x - Spring Framework 5.2.x - Spring Security 5.2.x **3、持久层** - Apache MyBatis 3.5.x - Hibernate Validation 6.0.x - Alibaba Druid 1.2.x **4、视图层** - Vue 2.6.x - Axios 0.21.x - Element 2.15.x ## 基础功能 - 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 - 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 - 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 - 字典管理:对系统中经常使用的一些较为固定的数据进行维护。 - 参数管理:对系统动态配置常用参数。 - 通知公告:系统通知公告信息发布维护。 - 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 - 登录日志:系统登录日志记录查询包含登录异常。 - 在线用户:当前系统中活跃用户状态监控。 - 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 - 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。 - 缓存监控:对系统的缓存信息查询,命令统计等。 - 连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 # 环境部署 ## 准备工作 ```text JDK = 1.8 Mysql = 5.7.0 Redis = 3.0 Maven = 3.0 Node = 12 ``` # 项目介绍 ## 文件结构 ### 后端结构 ```text com.ruoyi ├── common // 工具类 │ └── annotation // 自定义注解 │ └── config // 全局配置 │ └── constant // 通用常量 │ └── core // 核心控制 │ └── enums // 通用枚举 │ └── exception // 通用异常 │ └── filter // 过滤器处理 │ └── utils // 通用类处理 ├── framework // 框架核心 │ └── aspectj // 注解实现 │ └── config // 系统配置 │ └── datasource // 数据权限 │ └── interceptor // 拦截器 │ └── manager // 异步处理 │ └── security // 权限控制 │ └── web // 前端控制 ├── ruoyi-generator // 代码生成(可移除) ├── ruoyi-quartz // 定时任务(可移除) ├── ruoyi-system // 系统代码 ├── ruoyi-admin // 后台服务 ├── ruoyi-xxxxxx // 其他模块 ``` ### 前端结构 ```text ├── build // 构建相关 ├── bin // 执行脚本 ├── public // 公共文件 │ ├── favicon.ico // favicon图标 │ └── index.html // html模板 │ └── robots.txt // 反爬虫 ├── src // 源代码 │ ├── api // 所有请求 │ ├── assets // 主题 字体等静态资源 │ ├── components // 全局公用组件 │ ├── directive // 全局指令 │ ├── layout // 布局 │ ├── plugins // 通用方法 │ ├── router // 路由 │ ├── store // 全局 store管理 │ ├── utils // 全局公用方法 │ ├── views // view │ ├── App.vue // 入口页面 │ ├── main.js // 入口 加载组件 初始化等 │ ├── permission.js // 权限管理 │ └── settings.js // 系统配置 ├── .editorconfig // 编码格式 ├── .env.development // 开发环境配置 ├── .env.production // 生产环境配置 ├── .env.staging // 测试环境配置 ├── .eslintignore // 忽略语法检查 ├── .eslintrc.js // eslint 配置项 ├── .gitignore // git 忽略项 ├── babel.config.js // babel.config.js ├── package.json // package.json └── vue.config.js // vue.config.js ``` ## 核心技术 TIP - 前端技术栈 ES6、vue、vuex、vue-router、vue-cli、axios、element-ui - 后端技术栈 SpringBoot、MyBatis、Spring Security、Jwt ### 后端技术 #### SpringBoot框架 1、介绍 `Spring Boot`是一款开箱即用框架,提供各种默认配置来简化项目配置。让我们的`Spring`应用变的更轻量化、更快的入门。 在主程序执行`main`函数就可以运行。你也可以打包你的应用为`jar`并通过使用`java -jar`来运行你的Web应用。它遵循"约定优先于配置"的原则, 使用`SpringBoot`只需很少的配置,大部分的时候直接使用默认的配置即可。同时可以与`Spring Cloud`的微服务无缝结合。 提示 `Spring Boot2.x`版本环境要求必须是`jdk8`或以上版本,服务器`Tomcat8`或以上版本 2、优点 - 使编码变得简单: 推荐使用注解。 - 使配置变得简单: 自动配置、快速集成新技术能力 没有冗余代码生成和XML配置的要求 - 使部署变得简单: 内嵌Tomcat、Jetty、Undertow等web容器,无需以war包形式部署 - 使监控变得简单: 提供运行时的应用监控 - 使集成变得简单: 对主流开发框架的无配置集成。 - 使开发变得简单: 极大地提高了开发快速构建项目、部署效率。 #### Spring Security安全控制 1、介绍 `Spring Security`是一个能够为基于`Spring`的企业应用系统提供声明式的安全访问控制解决方案的安全框架。 2、功能 `Authentication` 认证,就是用户登录 `Authorization` 授权,判断用户拥有什么权限,可以访问什么资源 安全防护,跨站脚本攻击,`session`攻击等 非常容易结合`Spring`进行使用 3、`Spring Security`与`Shiro`的区别 > 相同点 1、认证功能 2、授权功能 3、加密功能 4、会话管理 5、缓存支持 6、rememberMe功能 .... > 不同点 优点: 1、Spring Security基于Spring开发,项目如果使用Spring作为基础,配合Spring Security做权限更加方便。而Shiro需要和Spring进行整合开发 2、Spring Security功能比Shiro更加丰富,例如安全防护方面 3、Spring Security社区资源相对比Shiro更加丰富 缺点: 1)Shiro的配置和使用比较简单,Spring Security上手复杂些 2)Shiro依赖性低,不需要依赖任何框架和容器,可以独立运行。Spring Security依赖Spring容器 ### 前端技术 - npm:node.js的包管理工具,用于统一管理我们前端项目中需要用到的包、插件、工具、命令等,便于开发和维护。 - ES6:Javascript的新版本,ECMAScript6的简称。利用ES6我们可以简化我们的JS代码,同时利用其提供的强大功能来快速实现JS逻辑。 - vue-cli:Vue的脚手架工具,用于自动生成Vue项目的目录及文件。 - vue-router: Vue提供的前端路由工具,利用其我们实现页面的路由控制,局部刷新及按需加载,构建单页应用,实现前后端分离。 - vuex:Vue提供的状态管理工具,用于统一管理我们项目中各种数据的交互和重用,存储我们需要用到数据对象。 - element-ui:基于MVVM框架Vue开源出来的一套前端ui组件。