项目介绍
# 目录结构
# 后端工程
SOFAST 框架采用模块化设计思想,将后端工程分为基础框架层(so-fast-framework)以及上游产品线层(目前仅提供 Cloud 产品线 so-fast-pl-cloud)。
# so-fast-framework
so-fast-framework 是 SOFAST 框架的底层核心框架,提供微服务开发的基础脚手架以及依赖统一管理,其标准目录结构如下:
so-fast-framework
├── so-fast-cloud-dependencies // 统一依赖管理
│
├── so-fast-common // 共通封装(统一常数、统一异常处理、统一返回
│
├── so-fast-core // SOFAST框架核心包
│ ├── so-fast-cache-starter // 一级缓存管理
│ ├── so-fast-cloud-starter // 注册中心、配置中心客户端starter
│ ├── so-fast-ds-starter // 动态数据源starter
│ ├── so-fast-elastic-starter // ES搜索引擎starter
│ ├── so-fast-excel-starter // excel文件操作starter
│ ├── so-fast-feign-starter // RPC starter
│ ├── so-fast-kafka-starter // kafka依赖封装starter
│ ├── so-fast-lock-starter // 分布式锁封装starter
│ ├── so-fast-log-starter // 审计日志封装starter
│ ├── so-fast-mongo-starter // mongodb依赖封装starter
│ ├── so-fast-mybatis-starter // mybatis-plus封装starter
│ ├── so-fast-mybatis-tenant-starter // mybatis-plus多租户版本封装starter
│ ├── so-fast-oss-starter // oss对象存储封装starter
│ ├── so-fast-pay // 聚合支付封装starter
│ ├── so-fast-rabbitmq-starter // rabbit依赖封装starter
│ ├── so-fast-redis-starter // redis封装starter
│ ├── so-fast-redis-tenant-starter // redis多租户版本封装starter
│ ├── so-fast-rocketmq-starter // rocketmq依赖封装starter
│ ├── so-fast-seata-starter // seata依赖封装starter
│ ├── so-fast-security-starter // oauth2封装starter
│ ├── so-fast-security-tenant-starter // oauth2多租户版本封装starter
│ ├── so-fast-sentinel-gateway-starter // 网关限流封装starter
│ ├── so-fast-sentinel-starter // 微服务限流封装starter
│ ├── so-fast-swagger-starter // swagger api封装starter
│ ├── so-fast-tenant-starter // 多租户上下文封装starter
│ ├── so-fast-web-starter // 微服务web api开发starter
│ ├── so-fast-web-tenant-starter // 微服务web api多租户版本开发starter
│ ├── so-fast-websocket-starter // websocket封装starter
│ ├── so-fast-xss-starter // xss安全starter
│
├── so-fast-sdk // 平台层sdk
│ └── so-fast-log-sdk // 审计日志sdk
│
└── so-fast-utils // 工具类
├── sf-common-utils // 常用工具类(非web系)
└── sf-web-utils // web用工具类
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
so-fast-framework 只提供基础 jar 包,所有依赖包均发布在 maven 私服上,开发使用时只需要在 maven 中配置私服镜像即可拉取使用。
# so-fast-pl-cloud
so-fast-pl-cloud 是 Cloud 产品线的解决方案,提供企业级微服务框架。其标准目录如下:
so-fast-pl-cloud
├── db // 数据库脚本
├── deploy // 服务一键启停脚本
├── nacos // nacos参考配置文件,可直接在nacos导入
│
├── so-fast-gateway // 网关服务
├── so-fast-pl-common // 产品级通用常数等
├── so-fast-pl-sdk // 产品级微服务sdk
│ ├── so-fast-cms-sdk // cms微服务sdk
│ ├── so-fast-system-sdk // system微服务sdk
│ ├── so-fast-uaa-sdk // uaa微服务sdk
│ └── so-fast-upms-sdk // upms微服务sdk
│
├── so-fast-platform // 产品线内置服务
│ ├── so-fast-cms // 内容管理服务
│ ├── so-fast-demo // demo示例服务
│ ├── so-fast-log // 审计日志服务
│ ├── so-fast-upms // UPMS服务
│ ├── so-fast-system // 系统设置服务
│ ├── so-fast-fs // 文件上传服务
│ └── so-fast-ws-server // websocket服务
├── so-fast-uaa // 统一认证中心
│
├── so-fast-visual // 可视化服务
│ ├── so-fast-deploy // 可视化部署(可忽略,目前使用jenkins)
│ ├── so-fast-admin // 监控中心
│ ├── so-fast-mpg // 代码生成器
│ ├── so-fast-task // 定时任务管理平台(集成xxl-job)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 前端工程
前端工程采用 vue-cli3.0 构建,其标准目录结构如下:
sofast-web
├── babel.config.js // Babel配置文件
├── package-lock.json
├── package.json
├── postcss.config.js // PostCss配置文件
├── public
│ ├── favicon.ico
│ ├── index.html
│ └── static // 静态文件目录
│ └── NEditor // 富文本编辑器(基于UEditor)
├── src
│ ├── App.vue
│ ├── api // 配置后端接口
│ ├── assets // 图片
│ ├── components // 共通组件目录
│ │ ├── Breadcrumb // 面包屑导航
│ │ ├── DateRange // 日期区间组件
│ │ ├── Dialog // 模态框组件
│ │ ├── DictSelect // 字典下拉选组件
│ │ ├── Editor // 富文本编辑器组件
│ │ ├── Hamburger // 展开/收缩左侧菜单按钮组件
│ │ ├── HeaderSearch // 头部菜单检索组件
│ │ ├── IconSelect // 图标选择器组件
│ │ ├── LangSelect // 语言选择组件
│ │ ├── OrganizationSelect // 组织机构级联下拉组件
│ │ ├── Pagination // 分页组件
│ │ ├── RoleSelect // 角色下拉组件
│ │ ├── SvgIcon // SVG图标
│ │ ├── Table // 表格组件
│ │ └── Upload // 上传组件
│ ├── filters // 自定义过滤器
│ ├── icons
│ │ └── svg // 存放SVG图标
│ ├── i18n // 国际化目录
│ │ └── common // 共通Label,Message配置
│ ├── layout // 全局布局
│ │ ├── components
│ │ │ ├── AppMain.vue // 中间内容区
│ │ │ ├── Navbar.vue // 头部Header
│ │ │ ├── Sidebar // 左侧菜单栏
│ │ │ ├── TagsView // 标签页
│ │ │ └── index.js
│ │ ├── index.vue
│ │ └── mixin
│ │ └── ResizeHandler.js // 响应式混入(区分desktop和mobile)
│ ├── main.js // Vue入口文件
│ ├── mixins // 自定义混入
│ ├── permission.js // 权限控制
│ ├── router // 路由
│ ├── settings.js // 启用/停用部分组件
│ ├── store // Vuex
│ ├── styles // 样式文件
│ ├── themes // 主题
│ │ └── default // 主题文件夹(默认)
│ ├── utils // 工具
│ │ ├── auth.js // token工具
│ │ ├── base64Util.js // base64加密解密
│ │ ├── get-page-title.js // 获取页面title
│ │ ├── request.js // axios实例
│ │ ├── scroll-to.js // 滚动动画
│ │ ├── treeUtils.js // 树形数据工具(Array2Tree)
│ │ └── validate.js // 校验工具
│ └── views
│ │ ├── 404.vue // 404页面
│ │ ├── contentMgt // 内容管理模块
│ │ ├── dashboard // 首页
│ │ ├── login // 登录页
│ │ ├── system // 系统管理模块
│ │ │ ├── apiMgt // API管理
│ │ │ ├── dictionaryMgt // 字典管理
│ │ │ ├── log // 日志
│ │ │ ├── menuMgt // 菜单管理
│ │ │ ├── organizationMgt // 组织机构管理
│ │ │ ├── permissionMgt // 权限管理
│ │ │ ├── roleMgt // 角色管理
│ │ │ └── userMgt // 用户管理
│ │ └── userProfile // 个人中心
└── vue.config.js // vue-cli3配置文件
└── .env.development // 开发环境变量配置
└── .env.staging // 测试环境变量配置
└── .env.production // 生产环境变量配置
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# 功能列表
- ✅ 登录验证码:支持图形验证码登录,验证码功能可通过配置启用或关闭。
- ✅ 用户管理:系统用户的增删改查,可启用或禁用用户。
- ✅ 组织机构:组织架构的增删改查,支持多层级组织机构。
- ✅ 权限管理:支持前端菜单,页面,按钮级权限配置;支持后端 API 粒度权限配置。
- ✅ 角色管理:灵活定义用户角色,绑定权限进行控制。
- ✅ 菜单管理:多级菜单动态配置。
- ✅ 接口管理:支持所有 API 资源管理。
- ✅ 字典管理:常量数据动态化配置管理,字段数据缓存管理。
- ✅ 日志管理:登录日志,操作日志多维度可视化查询。
- ✅ 内容管理:支持通用的文章内容管理,富文本模板编辑。
- ✅ 公告管理:支持多类型业务公告发布管理。
- ✅ 上传下载:框架提供通用的文件上传、下载功能。
- ✅ 国际化:系统内置中英文两种语言,支持多语言。
- ✅ 多主题:系统内置三种常用主题,支持画板自定义主题色。
- ✅ 代码生成:前后端可视化代码生成器。
- ✅ 数据库监控:支持 Druid 在线实时监控,支持慢 sql 分析。
- ✅ Swagger:支持 API 文档可视化,支持在线调试。
- ✅ 防御 XSS 攻击:提供 xss 过滤器防止 xss 攻击。
- ✅ 缓存功能:提供基于 Redis 的缓存能力。
- ✅ 搜索引擎:基于 ElasticSearch7.x 的搜索引擎
- ✅ 审计日志:基于注解的审计日志记录功能
- ✅ 多端适配:前端响应式布局
- ✅ 登录切换:支持单设备 / 多设备登录切换
- ✅ 统一异常:统一的异常处理机制
- ✅ 统一响应体:统一的响应体规范
- ✅ 统一工具:统一的工具类使用规范
- ✅ 注册中心:基于 Nacos 的注册 / 配置中心管理
- ✅ 事务管理:基于 Seata 的分布式事务管理
- ✅ Maven 私服:Nexus Maven 私服
- ✅ Docker 私服:Docker Registry2
- ✅ 微服务监控:Admin 微服务监控大盘
# 开发规范
基于本框架进行开发时,请遵循以下开发规范,有助于快速、规范性的编码。
# Maven 依赖
sofast 框架对底层依赖已经做了封装,对于我们新建的微服务工程,只需要依赖 so-fast-web-starter
即可。该 starter 中对常用的依赖已经做好了管理,例如:redis、mybatis、log、springmvc、security 等;如果当前微服务需要提供 feign 接口供其他微服务调用,或者调用其他微服务的 feign 接口,则需要按需引入 sdk 依赖即可。
插件部分:只需引入 spring-boot-maven-plugin
即可,如果有 docker 需求,则引入 docker-maven-plugin
。
Good:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>so-fast-platform</artifactId>
<groupId>com.sofast.cloud</groupId>
<version>${so.fast.version}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>so-fast-system</artifactId>
<description>平台内置服务-系统管理</description>
<dependencies>
<dependency>
<groupId>com.sofast.cloud</groupId>
<artifactId>so-fast-web-starter</artifactId>
</dependency>
<dependency>
<groupId>com.sofast.cloud</groupId>
<artifactId>so-fast-system-sdk</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 工程结构
so-fast 规定了严格的工程目录结构(可参考「目录结构」章节),对于业务开发团队,原则上创建独立的业务服务工程进行开发,不推荐直接在 so-fast-pl-cloud 工程中直接开发。so-fast-pl-cloud 仅用于内置服务的维护。
例如:
xxx-biz-parent
|--xxx-common
|--xxx-backend
| |----xxx-order
| |----xxx-product
|--xxx-sdk
2
3
4
5
6
2
3
4
5
6
# 目录结构
在 biz 下构建业务模块时,尽量设计、拆分合理,不允许直接在 biz 直接创建 controller 之类的 package,推荐先构建业务模块 package,如 biz.bills,然后在其下创建基础的 controller、domain、entity 等 package,便于按照业务模块进行拆分,便于进行领域抽象。
Good
system
├── dict
│ ├── controller
│ │ ├── DictDataController.java
│ │ └── DictTypeController.java
│ ├── domain
│ │ └── vo
│ │ ├── DictDataQueryVo.java
│ │ └── DictTypeQueryVo.java
│ ├── entity
│ │ ├── DictData.java
│ │ └── DictType.java
│ ├── mapper
│ │ ├── DictDataMapper.java
│ │ └── DictTypeMapper.java
│ └── service
│ ├── IDictDataService.java
│ ├── IDictTypeService.java
│ └── impl
│ ├── DictDataServiceImpl.java
│ └── DictTypeServiceImpl.java
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 配置文件
so-fast 内置了三套配置文件(dev,test,prod),并通过 maven 打包工具管理环境的区分。在业务开发进行时,原则上开发人员只允许修改 dev 配置,对于 test 和 prod 应该有专人维护。
对于配置文件中的内容,除数据库、redis、安全配置、文件存储之外配置内容请慎重修改。
配置文件统一交由 nacos 配置中心进行维护。
# 异常处理
so-fast 框架有统一的异常处理,其中框架内应内置如下通用异常:
SystemException // 自定义异常-内置System模块异常
CommonException // 自定义异常-非模块异常(例如:工具类异常等)
FileException // 自定义异常-文件操作通用异常
BizException // 自定义异常-业务模块通用异常
LockException // 自定义异常-分布式锁用异常
ThirdPartyException // 自定义异常-调用第三方接口异常
2
3
4
5
6
2
3
4
5
6
由于 so-fast 内置了统一的异常拦截,在业务开发中需要处理异常的情况下,请使用 so-fast 内置异常进行异常封装,业务代码中禁止抛出其他异常。如需其他异常定制,请架构师统一处理,禁止开发人员私自乱定义异常。
# 工具集
so-fast 框架内置了通用的工具类,框架内引入了 hutool、apache、bouncycastle、okhttp3 等依赖,并对外提供统一出口。
utils
├── aop
│ └── SolAopUtils.java // AOP注解操作工具类
├── common
│ ├── SolBase64.java // Base64编码解码
│ ├── SolDateUtils.java // 日期工具类
│ ├── SolObjUtils.java // 对象操作工具类
│ ├── SolStringUtils.java // 字符串工具类
├── context
│ └── SpringUtils.java // Spring容器操作辅助类
├── crypto
│ ├── SolSMUtils.java // 国密算法加解密
│ └── SolSecureUtils.java // 通用加密工具类
├── es
│ └── SolEsUtils.java // ES工具类
├── file
│ ├── SolFileUtils.java // 文件操作工具类
│ └── SolImgUtils.java // 图像处理工具类
├── http
│ └── SolHttpUtils.java // 基于okhttp3的封装
├── i18n
│ └── I18nUtils.java // i18n信息国际化
├── mail
│ └── SolMailUtils.java // 邮件发送工具类
├── network
│ └── NetworkUtils.java // request、response网络操作工具类
├── thread
│ └── ThreadUtils.java // 线程池操作工具类
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 日志审计
审计日志分为登录日志和操作日志两大块。so-fast 框架中对于登录日志和操作日志有专门的表用于记录日志数据,并可通过前端页面进行日志查看登录操作。对于更详细的业务代码执行日志,使用 logback 进行日志文件的记录。
# 登录日志
登录日志已经在框架中进行了统一处理,无需关注。前端可通过日志管理菜单进行查看。
# 操作日志
操作日志,基于 spring 的 AOP 原理进行织入拦截。so-fast 定义的了 LogOperator 注解并通过 LogAspect 实现日志的输出。在需要记录操作记录的接口上添加 LogOperator 即可实现日志的输出。so-fast 内置的输出信息较为简单,包含:操作内容、操作人、URL、操作类型、操作结果、客户端信息、操作时间、操作时长、以及相应的 class 信息。往往业务开发会有更多的需求,比如记录被操作的数据信息、数据的变化信息等更为详细的操作记录,但基于 so-fast 通用框架的特点,这些功能没有实现,业务开发团队可依据自身的业务需求定制更为详尽的操作日志。
操作日志使用方式如下:
对需要记录日志的 api 添加注解 @LogOperator,其中两个属性:
title:标题。推荐使用
业务模块-操作标题
的形式type:操作类型。系统内置:增删改查、上传和下载 6 个固定分类。
@LogOperator(title = "字典管理-根据ID查询", type = Constants.SELECT_OPERATOR)
@LogOperator(title = "字典管理-更新字典数据", type = Constants.UPDATE_OPERATOR)
@LogOperator(title = "字典管理-根据字典ID删除", type = Constants.DELETE_OPERATOR)
@LogOperator(title = "字典管理-新增字典数据", type = Constants.INSERT_OPERATOR)
2
3
4
2
3
4
# 代码执行日志
对于代码执行日志,so-fast 并无明确约束,框架中内置 logback,可根据不同业务需求,配置 logback 进行日志分隔,并通过使用 lombok 的 Slf4j 注解创建 log 对象,不推荐自定义 logger 对象。
Bad
protected Logger logger = LoggerFactory.getLogger(getClass());
Good
// 使用Slf4j注解,并指定topic,topic对应logback.xml文件中的logger节点的name属性
@Slf4j(topic = "utils-log")
log.info(...)
2
3
4
2
3
4
# 文件处理
so-fast 内置了通用的文件上传下载功能,支持头像、图片、普通文件等多种类型。在使用时,请务必做好文件的存储规划。文件下载尽量通过 nginx 代理进行处理,不推荐使用 API 下载文件。对于超大文件的处理,业务组自行斟酌,如有问题请联系国内开发技术委员会。
文件处理相关配置参考:
sofast:
file:
# 头像存储路径
avatarPath: /mnt/sofast/avatar/
# 图片文件上传路径
imagePath: /mnt/sofast/images/
# 文件上传路径
filePath: /mnt/sofast/files/
# nginx代理文件下载地址
proxyPath: /download
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# API 接口规范
推荐使用框架自带的代码生成器进行接口的生成。
# API 文档
基于前后台分离的开发模式,API 文档至关重要。进行接口程开发时,请务必详尽的编写 swagger 文档。
# URL
URL 的命名有多种规范,如遵循 RESTful 的严格要求,可能会给设计开发带来一定的难度和局限,因此 so-fast 推荐:所有的查询请求尽可能的使用 get 请求,所有的修改请求均使用 post 请求。
对于 URI 的命名请参考如下,此外的情况酌情表达语义。
- 基于 id 的单条数据查询使用【/{id}】
- 分页查询使用【/page】
- 不分页查询使用【/all】
- 创建数据使用【/create】
- 删除数据使用【/delete】
- 更新数据使用【/update】
- 启用数据使用【/enable】
- 禁用数据使用【/disable】
- 上传文件使用【/upload】
- 下载文件使用【/download】
Bad
/**
* 根据组织名称查询组织信息
**/
@GetMapping("/getbyname")
2
3
4
2
3
4
Good
/**
* 根据组织名称查询组织信息
**/
@GetMapping("/organization/{name}")
2
3
4
2
3
4
在整个系统中,接口层要有清晰的定位,不推荐在接口层处理复杂逻辑,接口层应尽量的轻量优雅:只负责接口数据格式的定义、底层业务的调度、返回值的封装。
# 基类
so-fast 为 controller 提供了如下基类,其中 BaseController 封装的 token 的通用操作,在需要获取 token 内置信息时,请继承 BaseController;BaseFileController 封装了基础的文件操作,如需文件上传下载功能请继承 BaseFileController。
com.sofast.core.framework.web.controller.BaseController
com.sofast.core.framework.web.controller.BaseFileController
2
2
# 业务层
推荐使用框架自带的代码生成器进行接口的生成。
Service 使用接口抽象方式,其中接口命名为 IXxxxService,实现类命名为 XxxServiceImpl
接口必须集成 IService,例:
public interface IDictDataService extends IService<DictData> {
实现类必须集成 ServiceImpl,并实现父接口,例:
public class DictDataServiceImpl extends ServiceImpl<DictDataMapper, DictData> implements IDictDataService {
# 数据层
# Domain
domain 含有两种对象 DTO 和 VO。
DTO 主要针对数据层面和业务处理层面的数据组装,VO 主要针对接口层面的的数据格式。业务开发团队进行实际开发时请酌情使用。
# Entity
推荐使用框架自带的代码生成器进行接口的生成。
Entity 定义数据实体,so-fast 集成了 Mybatis-plus,并且在 test 包下面内置了代码生成器,因此 entity 无需编写,使用代码生成器生成即可,生成之后注意检查 swagger 注解的有无以及妥当性,对于通用处理(如:更新时间的更新、创建时间的插入),可通过 Mybatis-plus 提供的 MetaObjectHandler 的统一实现,详细请参考:com.sofast.core.framework.handler.SolMetaObjectHandler。
# Mapper
推荐使用框架自带的代码生成器进行接口的生成。
略
# Mapper.xml
推荐使用框架自带的代码生成器进行接口的生成。
对于简单的条件处理,推荐使用 Mybatis-plus 内置的 Wrapper 进行处理,对于复杂的条件查询等,可以书写 SQL 文。
# 数据库设计规范
通用数据库设计规范不在记述范围,只约定 so-fast 框架规定的规范:
- 表设计时,如下为通用字段,理论上各表均需添加。
创建用户ID create_user bigint
创建时间 create_time datetime
更新用户ID update_user bigint
更新时间 update_time datetime
逻辑删除Flag delete_flg int
2
3
4
5
2
3
4
5
- 状态类字段统一使用 char 类型,逻辑删除 Flag 除外;
- 尽量避免出现以【is】开头的字段;
- 字符集使用 utf8mb4
- 不允许使用联合主键
- 主键统一为 bigint(20)id
# 技术选型
# 前端工程
- Vue
2.6.10
- Vuex
3.1.0
- Vue-router
3.0.6
- Axios
0.181
- Element UI
2.13.2
# 后端工程
- SpringBoot
2.3.5.RELEASE
- SpringCloud
Hoxton.SR8
- SpringCloud Alibaba
2.2.3.RELEASE
- Nacos
1.2.0
- Sentinel
1.8.0
- Spring-framework
5.2.10.RELEASE
- Spring-security
5.3.5.RELEASE
- Mybatis-plus
3.3.2
- Mybatis-plus-generator-ui
1.3.0
- Jedis
3.3.0
- Druid
1.1.14
- Fastjson
1.2.74
- Jjwt
0.10.7
- ElasticSearch
6.0
- okhttps
2.4.3
- Hutool
5.5.0
- Swagger2
2.9.2
- Swagger-bootstrap-ui
1.9.6
- Lombok
1.18.16