## 基础框架

框架基于ruoyi-vue版本，做了部分优化改造，并命名为miaxis。

原ruoyi-vue提供了以下功能:

1.  用户管理：用户是系统操作者，该功能主要完成系统用户配置。
2.  部门管理：配置系统组织机构（公司、部门、小组），树结构展现支持数据权限。
3.  岗位管理：配置系统用户所属担任职务。
4.  菜单管理：配置系统菜单，操作权限，按钮权限标识等。
5.  角色管理：角色菜单权限分配、设置角色按机构进行数据范围权限划分。
6.  字典管理：对系统中经常使用的一些较为固定的数据进行维护。
7.  参数管理：对系统动态配置常用参数。
8.  通知公告：系统通知公告信息发布维护。
9.  操作日志：系统正常操作日志记录和查询；系统异常信息日志记录和查询。
10. 登录日志：系统登录日志记录查询包含登录异常。
11. 在线用户：当前系统中活跃用户状态监控。
12. 定时任务：在线（添加、修改、删除)任务调度包含执行结果日志。
13. 代码生成：前后端代码的生成（java、html、xml、sql）支持CRUD下载 。
14. 系统接口：根据业务代码自动生成相关的api接口文档。
15. 服务监控：监视当前系统CPU、内存、磁盘、堆栈等相关信息。
16. 在线构建器：拖动表单元素生成相应的HTML代码。
17. 连接池监视：监视当前系统数据库连接池状态，可进行分析SQL找出系统性能瓶颈。

改造内容:
* ORM框架 使用 Mybatis-Plus 简化CRUD
* Bean简化 使用 Lombok 简化 get set toString 等等
* 代码生成模板 改为适配 Mybatis-Plus 的代码，以及自带swagger标签
* 集成swagger-bootstrap-ui 打开地址：http://localhost:8080/doc.html
* 改造所有返回值AjaxResult为Response让Swagger的@ApiModel识别（因为swagger不支持返回的hashMap和Json形式
* 项目修改为 maven多环境配置,打包时候自动配置
* 新增登录方法（不含验证码） /login/noCode ,方便生成token用swagger登录Authorize授权测试
* 新增非系统用户的登录方式，包含密码登录和手机验证码登录
* ResponseEnum统一状态消息管理，方便排查问题
* 修改打包方式为war包，方便部署远程tomcat
# 技术选型
* 前端:Vue、Element UI
* 后端:Spring Boot、Spring Security、Redis、Jwt、Swagger2 & Swagger-Bootstrap-UI、 Lombok、mybatis、mybatis-plus。

# 项目结构

```
com.miaxis 
├──project-admin              //web服务入口Controller管理模块（业务表生成的Controller层代码可以放在这里的project包下面）
│    │    └──project                //这里写你的项目业务代码Controller
│    │    └──system                 //系统自带Controller(不要随意修改)
│    │    └──启动类          //springboot项目启动类（默认启动地址http://localhost:8080）
│    │               
├──project-common             //通用模块（通用工具类等）
├──project-framework          //框架核心模块（包含redis，druid，Log等）
├──project-generator          //代码生成器模块
├──project-quartz             //定时任务模块
├──project-system             //系统模块 (不要随意修改)
├──project-xxx                //业务模块,除了controller 之外的都放在这边
├──doc                      //说明文档文件夹
├──sql                      //sql脚本文件夹 
│   └──create_db.sql                //生成数据库和用户
│   └──create_business.sql          //用于存放你们自己业务表的sql
│   └──quartz.sql                   //用于存放定时任务sql
│   └──ry_20201021.sql              //系统基本表自带的sql
├──pom.xml                  //项目整体依赖

```

# 后端开发流程
1. 创建表，表结构规范参考
2. 使用代码生成器
本次以sys_config举例，实际项目中不要去生成系统自带的sys开头的表，否则启动不了，因为代码模板不一样，有细微区别
打开后台管理系统，点击菜单——>系统工具——>代码生成

![Image text](doc/img/gen-import.jpg)
![Image text](doc/img/gen-doc.jpg)

如果生成之前要更改信息，可以点击编辑进入更改，注意要修改路径，模块名

![Image text](doc/img/gen-edit.jpg)


可以点击预览查看代码生成的效果

![Image text](doc/img/gen-view.jpg)

勾选然后可以点击生成（如果数据库中配好了comment注释，和table注释可以直接生成注释文字）

![Image text](doc/img/gen-gen.jpg)

解压后可以看到代码生产结果,然后拷贝到项目中对应的文件夹即可——main是java代码，vue是前端代码，deptMenu.sql是在菜单表中添加一条菜单数据，后端而言，可以直接复制整个main文件夹到我们项目模块src下

![Image text](doc/img/gen-zip.jpg)

到此，基本的增删改查代码已经生成。

3. swagger文档使用

未登录授权前，接口无法调试

![Image text](doc/img/login-before.png)

登录用法-用登录（免验证码）

![Image text](doc/img/login.png)

然后保存

![Image text](doc/img/login-save.png)

之后就能愉快的调试了

![Image text](doc/img/login-after.png)

