Files
orange-admin/README.md
2020-08-23 08:57:49 +08:00

224 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### 项目简介
专为推广"***橙单平台生成器***"而开源的代码演示项目,该项目的前后端代码完全由生成器配置后动态生成。相信在您耐心阅读五分钟后,一定会发现更多与众不同。
>友情提示,一定要放大看每一张截图,直到最后。
<table>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2020/0511/220255_b1f17558_7431510.png"/></td>
</tr>
</table>
### 橙单生成器
> 如果基础框架是技术轮子,那么我们提供的就是一条生产线,不仅可以造轮子,还能生产您的更多业务所需。与此同时,也希望我们前沿的系统设计理念,能为您的企业中台化改造提供些许的技术思路。
#### 橙单网站
- 网站首页。[http://www.orangeforms.com](http://www.orangeforms.com)
- 教学视频。[https://www.bilibili.com/video/bv1Wg4y1i7vP](https://www.bilibili.com/video/bv1Wg4y1i7vP)
- 生成器操作指南。[http://www.orangeforms.com/orange-doc/](http://www.orangeforms.com/orange-doc/)
- 后端代码文档。[http://www.orangeforms.com/development-doc/](http://www.orangeforms.com/development-doc/)
- 前端代码文档。[http://www.orangeforms.com/development-vue/](http://www.orangeforms.com/development-vue/)
- 更完整的演示项目。[http://demo.orangeforms.com](http://demo.orangeforms.com)
#### 竞争优势
- 真正的代码生成器,而非脚手架。
- 主流框架任意组合,可生成相对复杂的平台业务代码。
- 图文并茂,手把手教您的配置操作指南和教学视频。
- 专业、详尽、完善、完全免费、以及暗黑护眼的开发文档。
- 合理、超低价的商业授权。
#### 主要功能
- 提供前后端主流技术栈组件,可按需选择生成您的工程基础架构。
- 可创建多数据库、多应用服务,并导入业务数据表,配置服务内或跨服务的复杂表关系。
- 前端支持基于 Fragment 和 Block 的嵌套布局,配置后即可生成多样化的表单页面,并可预览。
- 操作权限和数据权限,灵活可配、运行时性能高度优化。
- 有别于其他产品我们不仅提供了Job框架的集成更能生成任务处理器的业务逻辑代码。
- 微服务和单体服务的接口命名规则和参数定义完全一致,便于您今后的平滑升级。
#### 关于我们
- S.L 老师20年开发经验后台全栈架构师代码强迫症、性能洁癖、能看出一像素偏差。精通C++/Java/Scala/Web高并发/大数据/C++服务器/视频直播网络技术,略懂容器。
- J.T 老师15年开发经验前端全栈架构师思维极缜密、号边界王。精通C++/Java/Javascript/Vue & React/C++客户端/Android原生/小程序/视频直播编解码技术。
- 欢迎加入我们的技术交流QQ群 788581363。
### 生成后工程
>可无限制的用于学习、培训、接私活、公司自用和开发商业项目等场景,其中基础框架代码将永久免费,并持续更新。
#### 开箱即用
项目信息如您所愿工程名称、目录结构、基础包名、common模块、代码注释中的@author信息等在创建工程时即已配置不会留有橙单的任何信息。因此无需二次修改前后端直接编译运行即可。如编译期和运行时出现问题那一定是我们的bug在得到您反馈后我们将及时修复。
#### 技术选型
- 前端: Element (Vue) / Ant Design (React) + ECharts / AntV + Axios + Webpack。
- 后端: Spring Boot / Spring Cloud / Spring Cloud Alibaba + Spring Security OAuth2 + Mybatis + Jwt。
- 工具库: Hutool + Guava + Caffeine + Lombok + MapStruct + 通用Mapper。
- 服务组件: Redis + Zookeeper + Consul + Apollo + XXL-Job + Kafka + Nacos + Sentinel + Seata。
- 系统监控: ELK + PinPoint / SkyWalking + Grafana + Prometheus。
#### 基础功能
- 前端框架:单页面、多标签、多栏目和子路由,多种模式可供选择。
- 前端能力:上传下载、数据导出、自定义打印模板、富文本、分组统计图表、明细数据下钻等。
- 页面布局:支持基于 Fragment 和 Block 的灵活布局方式,通过配置即可生成多样化的表单页面。
- 后台架构:分布式锁、分布式 Id 生成器、分布式缓存、分布式事务和分布式限流等,按需集成。
- 用户部门:用户表和部门表的字段数量,以及与其他表的关联关系,均灵活可配。
- 操作权限:前端控制可精确到按钮级的操作和标签级的显示,后台统一拦截验证更加安全。
- 数据权限:基于 Mybatis 拦截器 + JSqlParser 的实现方式,配置更灵活,代码侵入性更低。
- 多数据源:可根据配置动态生成,路由策略灵活可扩展。
- 数据组装Java 注解方式实现数据组装,可支持**服务内和跨服务**的一对一、一对多、多对多、字典、聚合计算等。
- 定时任务支持多种类型的Job处理器代码模板灵活可配、高度优化、二次开发简单。
- 系统监控:基于 Kafka + ELK 的日志跟踪,基于 PinPoint/SkyWalking 的服务链路跟踪,基于 GPE 的服务性能指标监控。
#### 代码质量
- 无任何二次封装,只生成您最懂的代码。
- 遵循阿里巴巴标准的代码规范。
- 主流技术栈组合,对面试大有裨益。
- 产品级代码强度,层次清晰、滴水不漏。
- 近乎于0的代码重复率35%以上的注释覆盖率。
- 15年架构师优化的每一处细节。
#### 规则扫描
此为在线演示工程的代码审查报告,而非当前开源示例工程。前者代码量更大,结构更复杂。
1. SonarQube 扫描
- 基于SonarQube8.2缺省最严格的代码扫描规则其中代码复杂度要求为15。
- 有气味代码共90处其中85处为DTO、Model、常量字典、RPC接口等定义出现重复名称所致均与模拟实际业务有关。
- 其余气味代码是在权衡性能、可读性和易修改性等因素后保留下来的具体见图4。
<table>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2020/0504/132431_a28ba412_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0504/133330_6a7564a1_7431510.png"/></td>
</tr>
</table>
<table>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2020/0504/141440_c5b8e3c1_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0504/141124_df278683_7431510.png"/></td>
</tr>
</table>
2. Alibaba Code Guide 扫描
- 下载最新版本IDEA插件同时打开所有审查条件。
- 全部代码扫描通过。
<table>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2020/0504/134052_c3196376_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0504/133514_32d8faad_7431510.png"/></td>
</tr>
</table>
3. Statistic 代码统计
- 生成代码总量约为73000行主要包括Java、XML、YAML和SQL初始化脚本等。
- Java代码覆盖率为37%。
<table>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2020/0504/133554_8df8ff51_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0504/133613_68dd5482_7431510.png"/></td>
</tr>
</table>
#### 设计理念
- 前沿的单表组合式设计使系统拆分SO EASY。
- 先代码后SQL的原则让服务扩充更具弹性。
- 标准化的服务间调用接口,使服务组合更具正交性。
- 前后端基于约定各司其职,默契配合,让系统运行飞起来。
- 未来将支持更多开发的语言,并逐步演化为云原生架构。
#### 开源工程部署
1. 数据初始化。
- 通过常用的数据库访问工具(如navicat)执行工程目录下的zz-orange-demo.sql文件。
- 导入脚本主要负责,数据库创建、数据表创建和测试数据的插入。
2. 环境准备。
docker是必选组件。通过docker-compose命令可快速启停服务所依赖的服务中间件如nacos、redis、zookeeper、kafka和sentinel dashboard等。中间件的控制台访问方式可参考工程目录下的README文件。
```shell
# 假定当前目录为工程根目录。
cd zz-resource/docker-files
# 启动和停止带有基础服务中间件的docker-compose.yml文件
docker-compose up -d
# 彻底终止容器
docker-compose down
# 在第一次启动之后,可以考虑每次执行下面的命令启动和停止容器。
docker-compose start
docker-compose stop
```
3. 后台工程导入。
以Maven的形式导入IDE直接编译运行即可。具体可参考我们的开发文档[教学版微服务工程导入章节](http://www.orangeforms.com/development-doc/edu-multi/#工程导入)。
4. 后台服务配置。
- 进入工程目录下的 zz-resource/config-data/ 子目录,修改和数据库相关的配置,具体操作详见下图及文字注释。
![](https://images.gitee.com/uploads/images/2020/0812/203758_0f3fd28e_7431510.png)
- 将该目录下的所有配置文件导入nacos。nacos控制台访问地址 localhost:8848/nacos用户名和密码 nacos/nacos。
- 具体导入方式可参考我们的开发文档[服务配置章节](http://www.orangeforms.com/development-doc/service-config/#微服务-nacos)。
5. 后台服务启动。
这里仅以upms服务为例。在开发环境中为每个微服务启动项配置main class下图为IntelliJ IDEA中的配置截图配置后点击Debug/Run按钮即可启动。
![](https://images.gitee.com/uploads/images/2020/0812/205946_da5bf311_7431510.png)
6. 前端工程导入和启动。
- 将前端工程导入vscode。
- 修改 src -> core -> config 下的配置文件将baseUrl修改为您服务器地址。
- 安装依赖,执行 npm install。
- 启动前端服务,执行 npm run dev。
- 具体可参考我们的开发文档[教学版前端工程启动段落](http://www.orangeforms.com/development-doc/edu-multi/#前端工程-2)。
### 主要截图
#### 橙单生成器
<table>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/165025_1a5dab88_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/165127_aa86f874_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/165235_333782ce_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/165330_3b22761a_7431510.png"/></td>
</tr>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/165440_faecc3ab_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/165518_e381e2f7_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/181606_265790ac_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/165837_de1fef48_7431510.png"/></td>
</tr>
</table>
#### 开发文档
<table>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2020/0423/203644_b838ebc6_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0423/204047_26496989_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/162403_9a2500d2_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/162502_3bc30a46_7431510.png"/></td>
</tr>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/181337_8e7322e5_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/181456_978cbad8_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0423/204233_619b47b9_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0423/204335_51273157_7431510.png"/></td>
</tr>
</table>
#### 演示工程
<table>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/170631_e325d367_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/180705_a2c8a441_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/163813_f610c413_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/163912_4c1b3007_7431510.png"/></td>
</tr>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/162844_d7731374_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/163012_78374da1_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/163124_92373034_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/163222_c95aae03_7431510.png"/></td>
</tr>
</table>
#### 微服务中间件
<table>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/190701_24eed9f4_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0423/204529_06fb1cd3_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0511/214604_b266bcda_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/191404_6eff2e07_7431510.png"/></td>
</tr>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/193120_eb24d1c4_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/194208_3dd70cd2_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0511/214049_1f035fbb_7431510.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2020/0411/192424_04baa0a6_7431510.png"/></td>
</tr>
</table>