mirror of
https://github.com/jeecgboot/JeecgBoot.git
synced 2025-12-08 17:12:28 +08:00
Compare commits
78 Commits
v3.7.1last
...
v3.7.0_spr
| Author | SHA1 | Date | |
|---|---|---|---|
| 06144206df | |||
| 3d3b5850ad | |||
| 816eeb9225 | |||
| 0b42efbbbf | |||
| b8e0d4391d | |||
| 72b34d082b | |||
| 7112649a21 | |||
| fbc312c35d | |||
| b8162a4a6d | |||
| 28404d2fd3 | |||
| c92c9be49a | |||
| 58e85e0569 | |||
| 6fc34d8a39 | |||
| 790df934b5 | |||
| 8aee4011a2 | |||
| 6e0277c60a | |||
| e923654161 | |||
| 06b41ae479 | |||
| 11af85d87a | |||
| 4caff75cce | |||
| 811861a957 | |||
| 24623ba4b0 | |||
| 7c68b46943 | |||
| 7c34161369 | |||
| bc52aa918d | |||
| 9dfdd47b36 | |||
| 272a7540eb | |||
| ad796f079f | |||
| e7e7716d05 | |||
| c5d620d2b2 | |||
| cdea05ebb0 | |||
| ca9a433f3c | |||
| 2be6052cd4 | |||
| 68ed67ee49 | |||
| d5903ba52a | |||
| 3ee635eddf | |||
| 21bc68fb53 | |||
| f532e57862 | |||
| da08adbea1 | |||
| 46e3e62b59 | |||
| 3656264f8a | |||
| 3361d48cd4 | |||
| ed86ea3da1 | |||
| 3deb0e5487 | |||
| 9e4792941e | |||
| b5fd5fe782 | |||
| 33c0104a02 | |||
| 81ed5100af | |||
| 87f9dc0064 | |||
| b311fedc6b | |||
| e321a0405f | |||
| d8bc74794d | |||
| 732f05dc74 | |||
| 6ce92798c6 | |||
| f4454e9348 | |||
| d9134ae0c8 | |||
| 25180e41c8 | |||
| a99e3f2268 | |||
| d27c354bf1 | |||
| d818b1dd9d | |||
| bcdbec0091 | |||
| 098bb12b9e | |||
| 4a6c750b19 | |||
| d396e5304a | |||
| 9bed25be8c | |||
| 7109b42092 | |||
| 1667b14194 | |||
| e9514873d2 | |||
| 0ee090664e | |||
| 4a9eda4ab0 | |||
| 2416c8b251 | |||
| 5b056f9dd6 | |||
| a93998dc56 | |||
| 268c27a782 | |||
| 23ace2712a | |||
| 157feeb925 | |||
| 4e25d4162f | |||
| 47a68f31e1 |
4
.gitattributes
vendored
4
.gitattributes
vendored
@ -1,5 +1,5 @@
|
|||||||
*.js linguist-language=Java
|
*.js linguist-language=Java
|
||||||
*.css linguist-language=Java
|
*.css linguist-language=Java
|
||||||
*.ts linguist-language=vue
|
*.html linguist-language=Java
|
||||||
*.html linguist-language=vue
|
*.vue linguist-language=Java
|
||||||
*.sql linguist-language=Java
|
*.sql linguist-language=Java
|
||||||
|
|||||||
9
.github/ISSUE_TEMPLATE.md
vendored
9
.github/ISSUE_TEMPLATE.md
vendored
@ -1,16 +1,13 @@
|
|||||||
##### 版本号:
|
##### 版本号:
|
||||||
|
|
||||||
|
|
||||||
##### 问题描述:
|
##### 问题描述:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##### 错误截图:
|
##### 错误截图:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### 友情提示:
|
#### 友情提示:
|
||||||
- 未按格式要求发帖、描述过于简单的,会被直接删掉;
|
- 未按格式要求发帖、描述过于简抽象的,会被直接删掉;
|
||||||
- 描述问题请图文并茂,方便我们理解并快速定位问题;
|
- 请确保问题描述清楚,方便我们理解并一次性调查解决问题;
|
||||||
- 如果使用的不是master,请说明你使用的分支;
|
- 如果使用的不是master,请说明你使用的那个分支
|
||||||
23
LICENSE
23
LICENSE
@ -201,13 +201,16 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
|
|
||||||
In any case, you must not make any such use of this software as to develop software which may be considered competitive with this software.
|
In any case, you must not make any such use of this software as to develop software which may be considered competitive with this software.
|
||||||
|
|
||||||
JeecgBoot 是由 北京国炬信息技术有限公司 发行的软件。 总部位于北京,地址:中国·北京·朝阳区科荟前街1号院奥林佳泰大厦。邮箱:jeecgos@163.com
|
开源协议补充
|
||||||
本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。
|
JeecgBoot 是由 北京国炬信息技术有限公司 发行的软件。 总部位于北京,地址:中国·北京·朝阳区科荟前街1号院奥林佳泰大厦。邮箱:jeecgos@163.com
|
||||||
|
本软件受适用的国家软件著作权法(包括国际条约)和双重保护许可。
|
||||||
开源协议中文释意如下:
|
|
||||||
1.JeecgBoot开源版本无任何限制,在遵循本开源协议条款下,允许商用使用,不会造成侵权行为。
|
1.允许基于本平台软件开展业务系统开发。
|
||||||
2.允许基于本平台软件开展业务系统开发。
|
2.JeecgBoot底层依赖的非开源功能:online lib依赖、仪表盘lib依赖等,统一采用LGPL开源协议(不二次改造、不拆分出jeecgboot之外使用,就不产生侵权)
|
||||||
3.在任何情况下,您不得使用本软件开发可能被认为与本软件竞争的软件。
|
3.不得基于该平台软件的基础,修改包装成一个与JeecgBoot平台软件功能类似的产品进行发布、销售,或与JeecgBoot参与同类软件产品市场的竞争。
|
||||||
|
违反此条款属于侵权行为,须赔偿侵权经济损失,同时立即停止著作权侵权行为。
|
||||||
最终解释权归:http://www.jeecg.com
|
|
||||||
|
总结:在遵循Apache开源协议和开源协议补充条款下,允许商用使用,不会造成侵权行为!
|
||||||
|
解释权归:http://www.jeecg.com
|
||||||
|
|
||||||
281
README-EN.md
281
README-EN.md
@ -7,12 +7,13 @@
|
|||||||
JEECG BOOT Low Code Development Platform
|
JEECG BOOT Low Code Development Platform
|
||||||
===============
|
===============
|
||||||
|
|
||||||
Current version: 3.7.1 (Release date: 2024-09-12)
|
当前最新版本: 3.7.0(发布日期:2024-06-17)
|
||||||
|
|
||||||
|
|
||||||
[](https://github.com/zhangdaiscott/jeecg-boot/blob/master/LICENSE)
|
[](https://github.com/zhangdaiscott/jeecg-boot/blob/master/LICENSE)
|
||||||
[](http://www.jeecg.com)
|
[](http://www.jeecg.com)
|
||||||
[](https://github.com/zhangdaiscott/jeecg-boot)
|
[](https://jeecg.blog.csdn.net)
|
||||||
|
[](https://github.com/zhangdaiscott/jeecg-boot)
|
||||||
[](https://github.com/zhangdaiscott/jeecg-boot)
|
[](https://github.com/zhangdaiscott/jeecg-boot)
|
||||||
[](https://github.com/zhangdaiscott/jeecg-boot)
|
[](https://github.com/zhangdaiscott/jeecg-boot)
|
||||||
|
|
||||||
@ -38,6 +39,16 @@ Technical support
|
|||||||
|
|
||||||
Problems or bugs in use can be found in [Making on the Issues](https://github.com/jeecgboot/JeecgBoot/issues/new)
|
Problems or bugs in use can be found in [Making on the Issues](https://github.com/jeecgboot/JeecgBoot/issues/new)
|
||||||
|
|
||||||
|
Official Support: http://jeecg.com/doc/help
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Download the source code
|
||||||
|
-----------------------------------
|
||||||
|
- UI(Vue3) SourceCode:https://github.com/jeecgboot/jeecgboot-vue3
|
||||||
|
- APP SourceCode:https://github.com/jeecgboot/jeecg-uniapp
|
||||||
|
|
||||||
|
|
||||||
##### Project description
|
##### Project description
|
||||||
|
|
||||||
@ -46,25 +57,24 @@ Problems or bugs in use can be found in [Making on the Issues](https://github.co
|
|||||||
| `jeecg-boot` | SpringBoot background source code (support microservices) |
|
| `jeecg-boot` | SpringBoot background source code (support microservices) |
|
||||||
| `jeecgboot-vue3` | Vue3+TS new front-end source code|
|
| `jeecgboot-vue3` | Vue3+TS new front-end source code|
|
||||||
| `jeecg-uniapp` | [APP development framework, a code multi terminal adaptation, and support APP, small program, H5](https://github.com/jeecgboot/jeecg-uniapp) |
|
| `jeecg-uniapp` | [APP development framework, a code multi terminal adaptation, and support APP, small program, H5](https://github.com/jeecgboot/jeecg-uniapp) |
|
||||||
|
| `More` | [Download more source code](http://jeecg.com/download) |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Download other source code
|
|
||||||
-----------------------------------
|
|
||||||
- APP SourceCode:https://github.com/jeecgboot/jeecg-uniapp
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
For the project
|
For the project
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
Jeecg-Boot low code development platform can be applied in the development of any J2EE project, especially for SAAS projects, enterprise information management system (MIS), internal office system (OA), enterprise resource planning system (ERP), customer relationship management system (CRM), etc. Its semi-intelligent manual Merge development method, Can significantly improve the development efficiency of more than 70%, greatly reduce the development cost.
|
Jeecg-Boot low code development platform can be applied in the development of any J2EE project, especially for SAAS projects, enterprise information management system (MIS), internal office system (OA), enterprise resource planning system (ERP), customer relationship management system (CRM), etc. Its semi-intelligent manual Merge development method, Can significantly improve the development efficiency of more than 70%, greatly reduce the development cost.
|
||||||
|
|
||||||
|
|
||||||
Starts the project
|
|
||||||
|
Docker starts the project
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
|
||||||
- [IDEA Quick start](https://help.jeecg.com/java/setup/idea/startup.html)
|
- [Docker starts the monomer background](https://help.jeecg.com/java/setup/docker/up.html)
|
||||||
- [Docker Quick start](https://help.jeecg.com/java/docker/quick.html)
|
- [Docker starts the front-end](http://help.jeecg.com/publish/docker.html)
|
||||||
|
- [Docker starts the micro-service background](https://help.jeecg.com/java/springcloud/docker.html)
|
||||||
|
- [ChatGPT AI Config](https://help.jeecg.com/java/chatgpt.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -72,14 +82,12 @@ Technical documentation
|
|||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
|
||||||
- Website: [http://www.jeecg.com](http://www.jeecg.com)
|
- Website: [http://www.jeecg.com](http://www.jeecg.com)
|
||||||
- Demo : [OnlineDemo](http://boot3.jeecg.com) | [APP](http://jeecg.com/appIndex)
|
|
||||||
- Doc: [http://help.jeecg.com](http://help.jeecg.com)
|
- Doc: [http://help.jeecg.com](http://help.jeecg.com)
|
||||||
- Newbie guide: [Quick start](http://www.jeecg.com/doc/quickstart) | [Q&A ](http://www.jeecg.com/doc/qa) | [1 minute experience](https://my.oschina.net/jeecg/blog/3083313)
|
- Newbie guide: [Quick start](http://www.jeecg.com/doc/quickstart) | [video](https://space.bilibili.com/454617261/channel/series) | [Q&A ](http://www.jeecg.com/doc/qa) | [help](http://jeecg.com/doc/help) | [1 minute experience](https://my.oschina.net/jeecg/blog/3083313)
|
||||||
- QQ group : ⑩716488839、⑨808791225、⑧825232878、⑦791696430、⑥730954414(full)、683903138(full)、⑤860162132(full)、④774126647(full)、③816531124(full)、②769925425(full)、①284271917(full)
|
- Microservice Development: [Monomer upgrade to microservice](https://help.jeecg.com/java/springcloud/switchcloud/monomer.html)
|
||||||
|
- QQ group : ⑨808791225、⑧825232878、⑦791696430、⑥730954414(full)、683903138(full)、⑤860162132(full)、④774126647(full)、③816531124(full)、②769925425(full)、①284271917(full)
|
||||||
|
- Demo : [OnlineDemo](http://boot3.jeecg.com) | [APP](http://jeecg.com/appIndex)
|
||||||
|
> [please click obtain account password to obtain](http://jeecg.com/doc/demo)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Star charts
|
Star charts
|
||||||
@ -175,7 +183,7 @@ Technical Architecture:
|
|||||||
|
|
||||||
#### Development Environment
|
#### Development Environment
|
||||||
|
|
||||||
- Language: Java 8+ (17)
|
- Language: Java 8+ (less than 17)
|
||||||
|
|
||||||
- IDE(JAVA) : IDEA (lombok plug-in must be installed)
|
- IDE(JAVA) : IDEA (lombok plug-in must be installed)
|
||||||
|
|
||||||
@ -185,20 +193,20 @@ Technical Architecture:
|
|||||||
|
|
||||||
- Cache: Redis
|
- Cache: Redis
|
||||||
|
|
||||||
- Database: MySQL5.7 + [More Databases](https://my.oschina.net/jeecg/blog/4905722)
|
- Database: MySQL5.7 + & Oracle 11 g & Sqlserver2017 [More Databases](https://my.oschina.net/jeecg/blog/4905722)
|
||||||
|
|
||||||
|
|
||||||
#### backend
|
#### backend
|
||||||
|
|
||||||
- Basic framework: Spring Boot 2.7.18
|
- Basic framework: Spring Boot 2.6.14
|
||||||
|
|
||||||
- Microservice framework: Spring Cloud Alibaba 2021.0.1.0
|
- Microservice framework: Spring Cloud Alibaba 2021.0.1.0
|
||||||
|
|
||||||
- Persistence layer framework: MybatisPlus 3.5.3.2
|
- Persistence layer framework: MybatisPlus 3.5.1
|
||||||
|
|
||||||
- Report tool: JimuReport 1.8.1
|
- Report tool: JimuReport 1.5.8
|
||||||
|
|
||||||
- Security framework: Apache Shiro 1.12.0, Jwt 3.11.0
|
- Security framework: Apache Shiro 1.10.0, Jwt 3.11.0
|
||||||
|
|
||||||
- Microservice technology stack: Spring Cloud Alibaba, Nacos, Gateway, Sentinel, Skywalking
|
- Microservice technology stack: Spring Cloud Alibaba, Nacos, Gateway, Sentinel, Skywalking
|
||||||
|
|
||||||
@ -213,12 +221,6 @@ Technical Architecture:
|
|||||||
|
|
||||||
- TechnologyStack:`Vue3.0+TypeScript+Vite+AntDesignVue+pinia+echarts`
|
- TechnologyStack:`Vue3.0+TypeScript+Vite+AntDesignVue+pinia+echarts`
|
||||||
|
|
||||||
#### Front-end environment requirements
|
|
||||||
|
|
||||||
* `Node.js 、npm 、pnpm`
|
|
||||||
* Node.js Version suggestion: `v20.15.0`
|
|
||||||
` ( Since Vite5 no longer supports EOL Node.js 14/16/17/19, Node.js 18/20 + is now required )`
|
|
||||||
|
|
||||||
#### Support library
|
#### Support library
|
||||||
|
|
||||||
| database | support |
|
| database | support |
|
||||||
@ -228,29 +230,44 @@ Technical Architecture:
|
|||||||
| Sqlserver2017 | √ |
|
| Sqlserver2017 | √ |
|
||||||
| PostgreSQL | √ |
|
| PostgreSQL | √ |
|
||||||
| MariaDB | √ |
|
| MariaDB | √ |
|
||||||
| 达梦 | √ |
|
| 达梦、人大金仓 | √ |
|
||||||
| 人大金仓 | √ |
|
|
||||||
| TiDB | √ |
|
|
||||||
|
|
||||||
|
|
||||||
## Microservice solutions
|
## Microservice solutions
|
||||||
|
|
||||||
- 1. Service registration and discovery Nacos √
|
|
||||||
- 2. Nacos √
|
1. Service registration and discovery Nacos √
|
||||||
- 3. Route gateway gateway(Three loading modes) √
|
|
||||||
- 4. Distributed http feign √
|
2. Nacos √
|
||||||
- 5. fuse degrade current limiting Sentinel √
|
|
||||||
- 6. Distributed files Minio and Alioss √
|
3. Route gateway gateway(Three loading modes) √
|
||||||
- 7. Unified permission control
|
|
||||||
- 8. Service monitoring SpringBootAdmin√
|
4. Distributed http feign √
|
||||||
- 9. link tracking Skywalking [reference document](https://help.jeecg.com/java/springcloud/super/skywarking.html)
|
|
||||||
- 10. Messaging middleware RabbitMQ √
|
5. fuse degrade current limiting Sentinel √
|
||||||
- 11. Distributed task xxl-job √
|
|
||||||
- 12. Distributed Transaction Seata
|
6. Distributed files Minio and Alioss √
|
||||||
- 13. Distributed log Loki+grafana
|
|
||||||
- 14. Support docker-compose, k8s, jenkins
|
7. Unified permission control
|
||||||
- 15. CAS SSO √
|
|
||||||
- 16. Route traffic limiting √
|
8. Service monitoring SpringBootAdmin√
|
||||||
|
|
||||||
|
9. link tracking Skywalking [reference document](https://help.jeecg.com/java/springcloud/super/skywarking.html)
|
||||||
|
|
||||||
|
10. Messaging middleware RabbitMQ √
|
||||||
|
|
||||||
|
11. Distributed task xxl-job √
|
||||||
|
|
||||||
|
12. Distributed Transaction Seata
|
||||||
|
|
||||||
|
13. Distributed log elk + kafka
|
||||||
|
|
||||||
|
14. Support docker-compose, k8s, jenkins
|
||||||
|
|
||||||
|
15. CAS SSO √
|
||||||
|
|
||||||
|
16. Route traffic limiting √
|
||||||
|
|
||||||
|
|
||||||
#### Microservice architecture diagram
|
#### Microservice architecture diagram
|
||||||
@ -259,9 +276,157 @@ Technical Architecture:
|
|||||||
### Jeecg Boot product functionality blueprint
|
### Jeecg Boot product functionality blueprint
|
||||||

|

|
||||||
|
|
||||||
### quick start
|
|
||||||
- Microservice Development: [Monomer upgrade to microservice](https://help.jeecg.com/java/springcloud/switchcloud/monomer.html)
|
|
||||||
- [Docker starts the micro-service background](https://help.jeecg.com/java/docker/springcloud.html)
|
|
||||||
|
### Function module
|
||||||
|
```
|
||||||
|
├─系统管理
|
||||||
|
│ ├─用户管理
|
||||||
|
│ ├─角色管理
|
||||||
|
│ ├─菜单管理
|
||||||
|
│ ├─权限设置(支持按钮权限、数据权限)
|
||||||
|
│ ├─表单权限(控制字段禁用、隐藏)
|
||||||
|
│ ├─部门管理
|
||||||
|
│ ├─我的部门(二级管理员)
|
||||||
|
│ └─字典管理
|
||||||
|
│ └─分类字典
|
||||||
|
│ └─系统公告
|
||||||
|
│ └─职务管理
|
||||||
|
│ └─通讯录
|
||||||
|
│ └─多租户管理
|
||||||
|
├─消息中心
|
||||||
|
│ ├─消息管理
|
||||||
|
│ ├─模板管理
|
||||||
|
├─代码生成器(低代码)
|
||||||
|
│ ├─代码生成器功能(一键生成前后端代码,生成后无需修改直接用,绝对是后端开发福音)
|
||||||
|
│ ├─代码生成器模板(提供4套模板,分别支持单表和一对多模型,不同风格选择)
|
||||||
|
│ ├─代码生成器模板(生成代码,自带excel导入导出)
|
||||||
|
│ ├─查询过滤器(查询逻辑无需编码,系统根据页面配置自动生成)
|
||||||
|
│ ├─高级查询器(弹窗自动组合查询条件)
|
||||||
|
│ ├─Excel导入导出工具集成(支持单表,一对多 导入导出)
|
||||||
|
│ ├─平台移动自适应支持
|
||||||
|
├─系统监控
|
||||||
|
│ ├─Gateway路由网关
|
||||||
|
│ ├─性能扫描监控
|
||||||
|
│ │ ├─监控 Redis
|
||||||
|
│ │ ├─Tomcat
|
||||||
|
│ │ ├─jvm
|
||||||
|
│ │ ├─服务器信息
|
||||||
|
│ │ ├─请求追踪
|
||||||
|
│ │ ├─磁盘监控
|
||||||
|
│ ├─定时任务
|
||||||
|
│ ├─系统日志
|
||||||
|
│ ├─消息中心(支持短信、邮件、微信推送等等)
|
||||||
|
│ ├─数据日志(记录数据快照,可对比快照,查看数据变更情况)
|
||||||
|
│ ├─系统通知
|
||||||
|
│ ├─SQL监控
|
||||||
|
│ ├─swagger-ui(在线接口文档)
|
||||||
|
│─报表示例
|
||||||
|
│ ├─曲线图
|
||||||
|
│ └─饼状图
|
||||||
|
│ └─柱状图
|
||||||
|
│ └─折线图
|
||||||
|
│ └─面积图
|
||||||
|
│ └─雷达图
|
||||||
|
│ └─仪表图
|
||||||
|
│ └─进度条
|
||||||
|
│ └─排名列表
|
||||||
|
│ └─等等
|
||||||
|
│─大屏模板
|
||||||
|
│ ├─作战指挥中心大屏
|
||||||
|
│ └─物流服务中心大屏
|
||||||
|
│─常用示例
|
||||||
|
│ ├─自定义组件
|
||||||
|
│ ├─对象存储(对接阿里云)
|
||||||
|
│ ├─JVXETable示例(各种复杂ERP布局示例)
|
||||||
|
│ ├─单表模型例子
|
||||||
|
│ └─一对多模型例子
|
||||||
|
│ └─打印例子
|
||||||
|
│ └─一对多TAB例子
|
||||||
|
│ └─内嵌table例子
|
||||||
|
│ └─常用选择组件
|
||||||
|
│ └─异步树table
|
||||||
|
│ └─接口模拟测试
|
||||||
|
│ └─表格合计示例
|
||||||
|
│ └─异步树列表示例
|
||||||
|
│ └─一对多JEditable
|
||||||
|
│ └─JEditable组件示例
|
||||||
|
│ └─图片拖拽排序
|
||||||
|
│ └─图片翻页
|
||||||
|
│ └─图片预览
|
||||||
|
│ └─PDF预览
|
||||||
|
│ └─分屏功能
|
||||||
|
│─封装通用组件
|
||||||
|
│ ├─行编辑表格JEditableTable
|
||||||
|
│ └─省略显示组件
|
||||||
|
│ └─时间控件
|
||||||
|
│ └─高级查询
|
||||||
|
│ └─用户选择组件
|
||||||
|
│ └─报表组件封装
|
||||||
|
│ └─字典组件
|
||||||
|
│ └─下拉多选组件
|
||||||
|
│ └─选人组件
|
||||||
|
│ └─选部门组件
|
||||||
|
│ └─通过部门选人组件
|
||||||
|
│ └─封装曲线、柱状图、饼状图、折线图等等报表的组件(经过封装,使用简单)
|
||||||
|
│ └─在线code编辑器
|
||||||
|
│ └─上传文件组件
|
||||||
|
│ └─验证码组件
|
||||||
|
│ └─树列表组件
|
||||||
|
│ └─表单禁用组件
|
||||||
|
│ └─等等
|
||||||
|
│─更多页面模板
|
||||||
|
│ ├─各种高级表单
|
||||||
|
│ ├─各种列表效果
|
||||||
|
│ └─结果页面
|
||||||
|
│ └─异常页面
|
||||||
|
│ └─个人页面
|
||||||
|
├─高级功能
|
||||||
|
│ ├─系统编码规则
|
||||||
|
│ ├─提供单点登录CAS集成方案
|
||||||
|
│ ├─提供APP发布方案
|
||||||
|
│ ├─集成Websocket消息通知机制
|
||||||
|
├─Online在线开发(低代码)
|
||||||
|
│ ├─Online在线表单 - 功能已开放
|
||||||
|
│ ├─Online代码生成器 - 功能已开放
|
||||||
|
│ ├─Online在线报表 - 功能已开放
|
||||||
|
│ ├─Online在线图表(未开源)
|
||||||
|
│ ├─Online图表模板配置(未开源)
|
||||||
|
│ ├─Online布局设计(未开源)
|
||||||
|
│ ├─多数据源管理 - 功能已开放
|
||||||
|
├─积木报表设计器(低代码)
|
||||||
|
│ ├─打印设计器
|
||||||
|
│ ├─数据报表设计
|
||||||
|
│ ├─图形报表设计(支持echart)
|
||||||
|
│ ├─大屏设计器(未开源)
|
||||||
|
│─流程模块功能 (未开源)
|
||||||
|
│ ├─流程设计器
|
||||||
|
│ ├─表单设计器
|
||||||
|
├─大屏设计器
|
||||||
|
├─门户设计/仪表盘设计器
|
||||||
|
│ └─我的任务
|
||||||
|
│ └─历史流程
|
||||||
|
│ └─历史流程
|
||||||
|
│ └─流程实例管理
|
||||||
|
│ └─流程监听管理
|
||||||
|
│ └─流程表达式
|
||||||
|
│ └─我发起的流程
|
||||||
|
│ └─我的抄送
|
||||||
|
│ └─流程委派、抄送、跳转
|
||||||
|
│ └─。。。
|
||||||
|
│─OA办公组件 (未开源)
|
||||||
|
│ ├─更多功能
|
||||||
|
│ └─。。。
|
||||||
|
└─其他模块
|
||||||
|
└─更多功能开发中。。
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Effect of system
|
### Effect of system
|
||||||
@ -308,22 +473,10 @@ Technical Architecture:
|
|||||||

|

|
||||||
|
|
||||||
##### dashboard Designer
|
##### dashboard Designer
|
||||||
|

|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##### report Designer
|
##### report Designer
|
||||||

|

|
||||||
|
|
||||||
|
|||||||
361
README.md
361
README.md
@ -2,14 +2,15 @@
|
|||||||
JeecgBoot 低代码开发平台
|
JeecgBoot 低代码开发平台
|
||||||
===============
|
===============
|
||||||
|
|
||||||
当前最新版本: 3.7.1(发布日期:2024-09-12)
|
当前最新版本: 3.7.0(发布日期:2024-06-17)
|
||||||
|
|
||||||
|
|
||||||
[](https://github.com/jeecgboot/JeecgBoot/blob/master/LICENSE)
|
[](https://github.com/zhangdaiscott/jeecg-boot/blob/master/LICENSE)
|
||||||
[](http://guojusoft.com)
|
[](http://jeecg.com/aboutusIndex)
|
||||||
[](https://github.com/jeecgboot/JeecgBoot)
|
[](https://jeecg.blog.csdn.net)
|
||||||
[](https://github.com/jeecgboot/JeecgBoot)
|
[](https://github.com/zhangdaiscott/jeecg-boot)
|
||||||
[](https://github.com/jeecgboot/JeecgBoot)
|
[](https://github.com/zhangdaiscott/jeecg-boot)
|
||||||
|
[](https://github.com/zhangdaiscott/jeecg-boot)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -18,7 +19,7 @@ JeecgBoot 低代码开发平台
|
|||||||
|
|
||||||
<h3 align="center">Java Low Code Platform for Enterprise web applications</h3>
|
<h3 align="center">Java Low Code Platform for Enterprise web applications</h3>
|
||||||
|
|
||||||
JeecgBoot 是一款基于代码生成器的`低代码开发平台`!前后端分离架构 SpringBoot2.x和3.x,SpringCloud,Ant Design Vue3,Mybatis-plus,Shiro,JWT,支持微服务。强大的代码生成器让前后端代码一键生成,实现低代码开发! JeecgBoot集成AI模型能力,引领新的低代码开发模式(OnlineCoding-> 代码生成器-> 手工MERGE), 帮助解决Java项目70%的重复工作,让开发更多关注业务。既能快速提高效率,节省研发成本,同时又不失灵活性!
|
JeecgBoot 是一款基于代码生成器的`低代码开发平台`!前后端分离架构 SpringBoot2.x和3.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shiro,JWT,支持微服务。强大的代码生成器让前后端代码一键生成,实现低代码开发! JeecgBoot 引领新的低代码开发模式(OnlineCoding-> 代码生成器-> 手工MERGE), 帮助解决Java项目70%的重复工作,让开发更多关注业务。既能快速提高效率,节省研发成本,同时又不失灵活性!
|
||||||
|
|
||||||
JeecgBoot 提供了一系列`低代码模块`,实现在线开发`真正的零代码`:Online表单开发、Online报表、报表配置能力、在线图表设计、仪表盘设计、大屏设计、移动配置能力、表单设计器、在线设计流程、流程自动化配置、插件能力(可插拔)等等!
|
JeecgBoot 提供了一系列`低代码模块`,实现在线开发`真正的零代码`:Online表单开发、Online报表、报表配置能力、在线图表设计、仪表盘设计、大屏设计、移动配置能力、表单设计器、在线设计流程、流程自动化配置、插件能力(可插拔)等等!
|
||||||
|
|
||||||
@ -33,136 +34,102 @@ JeecgBoot 提供了一系列`低代码模块`,实现在线开发`真正的零
|
|||||||
Jeecg-Boot低代码开发平台,可以应用在任何J2EE项目的开发中,支持信创国产化(默认适配达梦和人大金仓)。尤其适合SAAS项目、企业信息管理系统(MIS)、内部办公系统(OA)、企业资源计划系统(ERP)、客户关系管理系统(CRM)等,其半智能手工Merge的开发方式,可以显著提高开发效率70%以上,极大降低开发成本。
|
Jeecg-Boot低代码开发平台,可以应用在任何J2EE项目的开发中,支持信创国产化(默认适配达梦和人大金仓)。尤其适合SAAS项目、企业信息管理系统(MIS)、内部办公系统(OA)、企业资源计划系统(ERP)、客户关系管理系统(CRM)等,其半智能手工Merge的开发方式,可以显著提高开发效率70%以上,极大降低开发成本。
|
||||||
|
|
||||||
|
|
||||||
|
源码下载
|
||||||
|
-----------------------------------
|
||||||
|
- 前端源码地址:https://github.com/jeecgboot/jeecgboot-vue3
|
||||||
|
- APP源码地址:https://github.com/jeecgboot/jeecg-uniapp
|
||||||
|
|
||||||
|
|
||||||
#### 项目说明
|
#### 项目说明
|
||||||
|
|
||||||
| 项目名 | 说明 |
|
| 项目名 | 说明 |
|
||||||
|--------------------|------------------------|
|
|--------------------|------------------------|
|
||||||
| `jeecg-boot` | 后端源码JAVA(SpringBoot微服务架构) |
|
| `jeecg-boot` | 后端源码JAVA(SpringBoot微服务架构) |
|
||||||
| `jeecgboot-vue3` | 前端源码VUE3(vue3+vite5+ts最新技术栈) |
|
| `jeecgboot-vue3` | 前端源码VUE3(vue3+vite5+ts最新技术栈) |
|
||||||
| `jeecg-uniapp` | [配套APP框架](https://github.com/jeecgboot/jeecg-uniapp) 适配多个终端,支持APP、小程序、H5 |
|
| `jeecg-uniapp` | APP框架,一份代码多终端适配,支持APP、小程序、H5 |
|
||||||
|
|
||||||
|
|
||||||
开源协议说明
|
|
||||||
|
技术支持
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
JeecgBoot开源版本,底层完全开源可以自主开发,遵循Apache2.0协议,详细见 https://github.com/jeecgboot/JeecgBoot#Apache-2.0-1-ov-file
|
|
||||||
|
|
||||||
开源协议中文释意如下:
|
关闭gitee的issue通道,使用中遇到问题或者BUG可以在 [Github上提Issues](https://github.com/jeecgboot/JeecgBoot/issues/new)
|
||||||
- 1.JeecgBoot开源版本无任何限制,在遵循本开源协议条款下,允许商用使用,不会造成侵权行为。
|
|
||||||
- 2.允许基于本平台软件开展业务系统开发。
|
|
||||||
- 3.在任何情况下,您不得使用本软件开发可能被认为与本软件竞争的软件。
|
快速启动项目
|
||||||
- 4.针对企业用户我们也提供“企业级版本”,详细见 https://jeecg.com/vip
|
-----------------------------------
|
||||||
|
|
||||||
|
- [前端项目快速启动](http://help.jeecg.com/setup/startup.html)
|
||||||
|
- [通过IDEA启动前后端项目](https://help.jeecg.com/java/setup/idea/startup.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Docker启动项目
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
- [Docker启动前端](http://help.jeecg.com/publish/docker.html)
|
||||||
|
- [Docker启动后台](https://help.jeecg.com/java/setup/docker/up.html)
|
||||||
|
|
||||||
|
|
||||||
|
微服务方式启动
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
- [单体快速切换微服务](https://help.jeecg.com/java/springcloud/switchcloud/monomer.html)
|
||||||
|
- [Docker启动微服务后台](https://help.jeecg.com/java/springcloud/docker.html)
|
||||||
|
|
||||||
|
|
||||||
技术文档
|
技术文档
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
|
||||||
- 官方网站: [http://www.jeecg.com](http://www.jeecg.com)
|
- 产品官网: [http://www.jeecg.com](http://www.jeecg.com)
|
||||||
- 在线演示 : [在线演示](http://boot3.jeecg.com) | [APP演示](http://jeecg.com/appIndex)
|
|
||||||
- 开发文档: [https://help.jeecg.com](https://help.jeecg.com)
|
- 开发文档: [https://help.jeecg.com](https://help.jeecg.com)
|
||||||
- 反馈问题: [在Github上提Issues](https://github.com/jeecgboot/JeecgBoot/issues/new)
|
- 新手指南: [快速入门](http://www.jeecg.com/doc/quickstart) | [常见问题 ](http://www.jeecg.com/doc/qa) | [视频教程](https://space.bilibili.com/454617261/channel/series) | [1分钟低代码体验](https://my.oschina.net/jeecg/blog/3083313)
|
||||||
- 新手指南: [快速入门](http://www.jeecg.com/doc/quickstart) | [入门视频](http://jeecg.com/doc/video)
|
- AI助手配置: https://help.jeecg.com/java/chatgpt.html
|
||||||
- QQ交流群 : ⑩716488839、⑨808791225(满)、其他(满)
|
|
||||||
|
- 在线演示 : [在线演示](http://boot3.jeecg.com) | [APP演示](http://jeecg.com/appIndex)
|
||||||
|
> 演示系统的登录账号密码,请点击 [获取账号密码](http://jeecg.com/doc/demo) 获取
|
||||||
|
>
|
||||||
|
- QQ交流群 : ⑨808791225、⑧825232878、⑦791696430(满)、⑥730954414(满)、683903138(满)、⑤860162132(满)、④774126647(满)、③816531124(满)、②769925425(满)、①284271917(满)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
后台目录结构
|
||||||
启动项目
|
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
```
|
||||||
|
项目结构
|
||||||
|
├─jeecg-boot-parent(父POM: 项目依赖、modules组织)
|
||||||
|
│ ├─jeecg-boot-base-core(共通模块: 工具类、config、权限、查询过滤器、注解等)
|
||||||
|
│ ├─jeecg-module-demo 示例代码
|
||||||
|
│ ├─jeecg-module-system System系统管理目录
|
||||||
|
│ │ ├─jeecg-system-biz System系统管理权限等功能
|
||||||
|
│ │ ├─jeecg-system-start System单体启动项目(8080)
|
||||||
|
│ │ ├─jeecg-system-api System系统管理模块对外api
|
||||||
|
│ │ │ ├─jeecg-system-cloud-api System模块对外提供的微服务接口
|
||||||
|
│ │ │ ├─jeecg-system-local-api System模块对外提供的单体接口
|
||||||
|
│ ├─jeecg-server-cloud --微服务模块
|
||||||
|
├─jeecg-cloud-gateway --微服务网关模块(9999)
|
||||||
|
├─jeecg-cloud-nacos --Nacos服务模块(8848)
|
||||||
|
├─jeecg-system-cloud-start --System微服务启动项目(7001)
|
||||||
|
├─jeecg-demo-cloud-start --Demo微服务启动项目(7002)
|
||||||
|
├─jeecg-visual
|
||||||
|
├─jeecg-cloud-monitor --微服务监控模块 (9111)
|
||||||
|
├─jeecg-cloud-xxljob --微服务xxljob定时任务服务端 (9080)
|
||||||
|
├─jeecg-cloud-sentinel --sentinel服务端 (9000)
|
||||||
|
├─jeecg-cloud-test -- 微服务测试示例(各种例子)
|
||||||
|
├─jeecg-cloud-test-more -- 微服务测试示例(feign、熔断降级、xxljob、分布式锁)
|
||||||
|
├─jeecg-cloud-test-rabbitmq -- 微服务测试示例(rabbitmq)
|
||||||
|
├─jeecg-cloud-test-seata -- 微服务测试示例(seata分布式事务)
|
||||||
|
├─jeecg-cloud-test-shardingsphere -- 微服务测试示例(分库分表)
|
||||||
|
```
|
||||||
|
|
||||||
- [IDEA启动前后端项目](https://help.jeecg.com/java/setup/idea/startup.html)
|
|
||||||
- [Docker一键启动前后端](https://help.jeecg.com/java/docker/quick.html)
|
|
||||||
|
|
||||||
|
|
||||||
技术架构:
|
|
||||||
-----------------------------------
|
|
||||||
|
|
||||||
#### 后端
|
|
||||||
|
|
||||||
- IDE建议: IDEA (必须安装lombok插件 )
|
|
||||||
- 语言:Java 8+ (支持17)
|
|
||||||
- 依赖管理:Maven
|
|
||||||
- 基础框架:Spring Boot 2.7.18
|
|
||||||
- 微服务框架: Spring Cloud Alibaba 2021.0.1.0
|
|
||||||
- 持久层框架:MybatisPlus 3.5.3.2
|
|
||||||
- 报表工具: JimuReport 1.8.1
|
|
||||||
- 安全框架:Apache Shiro 1.12.0,Jwt 3.11.0
|
|
||||||
- 微服务技术栈:Spring Cloud Alibaba、Nacos、Gateway、Sentinel、Skywalking
|
|
||||||
- 数据库连接池:阿里巴巴Druid 1.1.22
|
|
||||||
- 日志打印:logback
|
|
||||||
- 缓存:Redis
|
|
||||||
- 其他:autopoi, fastjson,poi,Swagger-ui,quartz, lombok(简化代码)等。
|
|
||||||
- 默认数据库脚本:MySQL5.7+
|
|
||||||
- [其他数据库,需要自己转](https://my.oschina.net/jeecg/blog/4905722)
|
|
||||||
|
|
||||||
|
|
||||||
#### 前端
|
|
||||||
|
|
||||||
- 前端IDE建议:WebStorm、Vscode
|
|
||||||
- 采用 Vue3.0+TypeScript+Vite5+Ant-Design-Vue等新技术方案,包括二次封装组件、utils、hooks、动态菜单、权限校验、按钮级别权限控制等功能
|
|
||||||
- 最新技术栈:Vue3.0 + TypeScript + Vite5 + ant-design-vue4 + pinia + echarts + unocss + vxe-table + qiankun + es6
|
|
||||||
- 依赖管理:node、npm、pnpm
|
|
||||||
|
|
||||||
|
|
||||||
#### 前端环境要求
|
|
||||||
|
|
||||||
* 本地环境安装 `Node.js 、npm 、pnpm`
|
|
||||||
* Node.js 版本建议`v20.15.0`,要求`Node 20+` 版本以上
|
|
||||||
|
|
||||||
` ( 因为Vite5 不再支持已 EOL 的 Node.js 14 / 16 / 17 / 19,现在需要 Node.js 18 / 20+ )`
|
|
||||||
|
|
||||||
|
|
||||||
#### 支持库
|
|
||||||
|
|
||||||
| 数据库 | 支持 |
|
|
||||||
| --- | --- |
|
|
||||||
| MySQL | √ |
|
|
||||||
| Oracle11g | √ |
|
|
||||||
| Sqlserver2017 | √ |
|
|
||||||
| PostgreSQL | √ |
|
|
||||||
| MariaDB | √ |
|
|
||||||
| MariaDB | √ |
|
|
||||||
| 达梦 | √ |
|
|
||||||
| 人大金仓 | √ |
|
|
||||||
| TiDB | √ |
|
|
||||||
|
|
||||||
|
|
||||||
## 微服务解决方案
|
|
||||||
|
|
||||||
|
|
||||||
- 1、服务注册和发现 Nacos √
|
|
||||||
- 2、统一配置中心 Nacos √
|
|
||||||
- 3、路由网关 gateway(三种加载方式) √
|
|
||||||
- 4、分布式 http feign √
|
|
||||||
- 5、熔断降级限流 Sentinel √
|
|
||||||
- 6、分布式文件 Minio、阿里OSS √
|
|
||||||
- 7、统一权限控制 JWT + Shiro √
|
|
||||||
- 8、服务监控 SpringBootAdmin√
|
|
||||||
- 9、链路跟踪 Skywalking [参考文档](https://help.jeecg.com/java/springcloud/super/skywarking.html)
|
|
||||||
- 10、消息中间件 RabbitMQ √
|
|
||||||
- 11、分布式任务 xxl-job √
|
|
||||||
- 12、分布式事务 Seata
|
|
||||||
- 13、轻量分布式日志 Loki+grafana套件
|
|
||||||
- 14、支持 docker-compose、k8s、jenkins
|
|
||||||
- 15、CAS 单点登录 √
|
|
||||||
- 16、路由限流 √
|
|
||||||
|
|
||||||
|
|
||||||
#### 微服务方式启动
|
|
||||||
|
|
||||||
- [单体快速切换微服务](https://help.jeecg.com/java/springcloud/switchcloud/monomer.html)
|
|
||||||
- [Docker一键启动微服务前后端](https://help.jeecg.com/java/docker/quickcloud.html)
|
|
||||||
|
|
||||||
|
|
||||||
#### 微服务架构图
|
|
||||||

|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
为什么选择JeecgBoot?
|
为什么选择JeecgBoot?
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
* 1.采用最新主流前后分离框架(Springboot+Mybatis+antd+vue3),容易上手; 代码生成器依赖性低,灵活的扩展能力,可快速实现二次开发;
|
* 1.采用最新主流前后分离框架(Springboot+Mybatis+antd),容易上手; 代码生成器依赖性低,灵活的扩展能力,可快速实现二次开发;
|
||||||
* 2.支持微服务SpringCloud Alibaba(Nacos、Gateway、Sentinel、Skywalking),提供切换机制支持单体和微服务自由切换
|
* 2.支持微服务SpringCloud Alibaba(Nacos、Gateway、Sentinel、Skywalking),提供切换机制支持单体和微服务自由切换
|
||||||
* 3.开发效率高,采用代码生成器,单表、树列表、一对多、一对一等数据模型,增删改查功能一键生成,菜单配置直接使用;引入AI能力,支持自动建表等功能;
|
* 3.开发效率高,采用代码生成器,单表、树列表、一对多、一对一等数据模型,增删改查功能一键生成,菜单配置直接使用;
|
||||||
* 4.代码生成器提供强大模板机制,支持自定义模板,目前提供四套风格模板(单表两套、树模型一套、一对多三套)
|
* 4.代码生成器提供强大模板机制,支持自定义模板,目前提供四套风格模板(单表两套、树模型一套、一对多三套)
|
||||||
* 5.代码生成器非常智能,在线业务建模、在线配置、所见即所得支持23种类控件,一键生成前后端代码,大幅度提升开发效率,不再为重复工作发愁。
|
* 5.代码生成器非常智能,在线业务建模、在线配置、所见即所得支持23种类控件,一键生成前后端代码,大幅度提升开发效率,不再为重复工作发愁。
|
||||||
* 6.低代码能力:Online在线表单(无需编码,通过在线配置表单,实现表单的增删改查,支持单表、树、一对多、一对一等模型,实现人人皆可编码)
|
* 6.低代码能力:Online在线表单(无需编码,通过在线配置表单,实现表单的增删改查,支持单表、树、一对多、一对一等模型,实现人人皆可编码)
|
||||||
@ -178,7 +145,7 @@ JeecgBoot开源版本,底层完全开源可以自主开发,遵循Apache2.0
|
|||||||
* 16.页面校验自动生成(必须输入、数字校验、金额校验、时间空间等);
|
* 16.页面校验自动生成(必须输入、数字校验、金额校验、时间空间等);
|
||||||
* 17.支持SAAS服务模式,提供SaaS多租户架构方案。
|
* 17.支持SAAS服务模式,提供SaaS多租户架构方案。
|
||||||
* 18.分布式文件服务,集成minio、阿里OSS等优秀的第三方,提供便捷的文件上传与管理,同时也支持本地存储。
|
* 18.分布式文件服务,集成minio、阿里OSS等优秀的第三方,提供便捷的文件上传与管理,同时也支持本地存储。
|
||||||
* 19.主流数据库兼容,一套代码完全兼容Mysql、Postgresql、Oracle、Sqlserver、MariaDB、达梦、人大金仓等主流数据库。
|
* 19.主流数据库兼容,一套代码完全兼容Mysql、Postgresql、Oracle、Sqlserver、MariaDB、达梦等主流数据库。
|
||||||
* 20.集成工作流flowable,并实现了只需在页面配置流程转向,可极大的简化bpm工作流的开发;用bpm的流程设计器画出了流程走向,一个工作流基本就完成了,只需写很少量的java代码;
|
* 20.集成工作流flowable,并实现了只需在页面配置流程转向,可极大的简化bpm工作流的开发;用bpm的流程设计器画出了流程走向,一个工作流基本就完成了,只需写很少量的java代码;
|
||||||
* 21.低代码能力:在线流程设计,采用开源flowable流程引擎,实现在线画流程,自定义表单,表单挂靠,业务流转
|
* 21.低代码能力:在线流程设计,采用开源flowable流程引擎,实现在线画流程,自定义表单,表单挂靠,业务流转
|
||||||
* 22.多数据源:及其简易的使用方式,在线配置数据源配置,便捷的从其他数据抓取数据;
|
* 22.多数据源:及其简易的使用方式,在线配置数据源配置,便捷的从其他数据抓取数据;
|
||||||
@ -201,8 +168,103 @@ JeecgBoot开源版本,底层完全开源可以自主开发,遵循Apache2.0
|
|||||||
* 39.支持菜单动态路由
|
* 39.支持菜单动态路由
|
||||||
* 40.权限控制采用 RBAC(Role-Based Access Control,基于角色的访问控制)
|
* 40.权限控制采用 RBAC(Role-Based Access Control,基于角色的访问控制)
|
||||||
* 41.提供新行编辑表格JVXETable,轻松满足各种复杂ERP布局,拥有更高的性能、更灵活的扩展、更强大的功能
|
* 41.提供新行编辑表格JVXETable,轻松满足各种复杂ERP布局,拥有更高的性能、更灵活的扩展、更强大的功能
|
||||||
* 42.提供仪表盘设计器,类大屏设计支持移动端,免费的数据可视化设计工具,支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表和门户设计;目前支持多种图表类型:柱形图、折线图、散点图、饼图、环形图、面积图、漏斗图、进度图、仪表盘、雷达图、地图等等;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
技术架构:
|
||||||
|
-----------------------------------
|
||||||
|
#### 开发环境
|
||||||
|
|
||||||
|
- 语言:Java 8+ (小于17)
|
||||||
|
|
||||||
|
- IDE(JAVA): IDEA (必须安装lombok插件 )
|
||||||
|
|
||||||
|
- IDE(前端): Vscode、WebStorm、IDEA
|
||||||
|
|
||||||
|
- 依赖管理:Maven
|
||||||
|
|
||||||
|
- 缓存:Redis
|
||||||
|
|
||||||
|
- 数据库脚本:MySQL5.7+ (其他数据库,[需要自己转](https://my.oschina.net/jeecg/blog/4905722))
|
||||||
|
|
||||||
|
|
||||||
|
#### 后端
|
||||||
|
|
||||||
|
- 基础框架:Spring Boot 2.6.14
|
||||||
|
|
||||||
|
- 微服务框架: Spring Cloud Alibaba 2021.0.1.0
|
||||||
|
|
||||||
|
- 持久层框架:MybatisPlus 3.5.1
|
||||||
|
|
||||||
|
- 报表工具: JimuReport 1.5.8
|
||||||
|
|
||||||
|
- 安全框架:Apache Shiro 1.10.0,Jwt 3.11.0
|
||||||
|
|
||||||
|
- 微服务技术栈:Spring Cloud Alibaba、Nacos、Gateway、Sentinel、Skywalking
|
||||||
|
|
||||||
|
- 数据库连接池:阿里巴巴Druid 1.1.22
|
||||||
|
|
||||||
|
- 日志打印:logback
|
||||||
|
|
||||||
|
- 其他:autopoi, fastjson,poi,Swagger-ui,quartz, lombok(简化代码)等。
|
||||||
|
|
||||||
|
|
||||||
|
#### 前端
|
||||||
|
|
||||||
|
- 技术栈:`Vue3.0+TypeScript+Vite+AntDesignVue+pinia+echarts等最新技术栈`
|
||||||
|
|
||||||
|
#### 支持库
|
||||||
|
|
||||||
|
| 数据库 | 支持 |
|
||||||
|
| --- | --- |
|
||||||
|
| MySQL | √ |
|
||||||
|
| Oracle11g | √ |
|
||||||
|
| Sqlserver2017 | √ |
|
||||||
|
| PostgreSQL | √ |
|
||||||
|
| MariaDB | √ |
|
||||||
|
| 达梦、人大金仓 | √ |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 微服务解决方案
|
||||||
|
|
||||||
|
|
||||||
|
1、服务注册和发现 Nacos √
|
||||||
|
|
||||||
|
2、统一配置中心 Nacos √
|
||||||
|
|
||||||
|
3、路由网关 gateway(三种加载方式) √
|
||||||
|
|
||||||
|
4、分布式 http feign √
|
||||||
|
|
||||||
|
5、熔断降级限流 Sentinel √
|
||||||
|
|
||||||
|
6、分布式文件 Minio、阿里OSS √
|
||||||
|
|
||||||
|
7、统一权限控制 JWT + Shiro √
|
||||||
|
|
||||||
|
8、服务监控 SpringBootAdmin√
|
||||||
|
|
||||||
|
9、链路跟踪 Skywalking [参考文档](https://help.jeecg.com/java/springcloud/super/skywarking.html)
|
||||||
|
|
||||||
|
10、消息中间件 RabbitMQ √
|
||||||
|
|
||||||
|
11、分布式任务 xxl-job √
|
||||||
|
|
||||||
|
12、分布式事务 Seata
|
||||||
|
|
||||||
|
13、分布式日志 elk + kafka
|
||||||
|
|
||||||
|
14、支持 docker-compose、k8s、jenkins
|
||||||
|
|
||||||
|
15、CAS 单点登录 √
|
||||||
|
|
||||||
|
16、路由限流 √
|
||||||
|
|
||||||
|
|
||||||
|
#### 微服务架构图
|
||||||
|

|
||||||
|
|
||||||
### Jeecg Boot 产品功能蓝图
|
### Jeecg Boot 产品功能蓝图
|
||||||

|

|
||||||
@ -210,34 +272,8 @@ JeecgBoot开源版本,底层完全开源可以自主开发,遵循Apache2.0
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 分支说明
|
|
||||||
|
|
||||||
> 主干master更稳定,如果你对最新技术栈无要求,建议采用主干
|
|
||||||
|
|
||||||
#### springboot3分支
|
|
||||||
- 源码地址:https://github.com/jeecgboot/JeecgBoot/tree/springboot3
|
|
||||||
- 架构说明:升级Spring Boot3 & JDK 17 + Undertow + springdoc + fastjson2
|
|
||||||
|
|
||||||
#### springboot3_sas分支
|
|
||||||
- 源码地址:https://github.com/jeecgboot/JeecgBoot/tree/springboot3_sas
|
|
||||||
- 架构说明:在springboot3分支基础上,采用SpringAuthorizationServer替换Shiro
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 功能模块
|
### 功能模块
|
||||||
```
|
```
|
||||||
├─Online在线开发(低代码)
|
|
||||||
│ ├─Online在线表单
|
|
||||||
│ ├─Online代码生成器
|
|
||||||
│ ├─Online在线报表
|
|
||||||
│ ├─仪表盘设计器
|
|
||||||
│ ├─AI助手
|
|
||||||
│ ├─系统编码规则
|
|
||||||
│ ├─系统校验规则
|
|
||||||
├─积木报表设计器
|
|
||||||
│ ├─打印设计器
|
|
||||||
│ ├─数据报表设计
|
|
||||||
│ ├─图形报表设计(支持echart)
|
|
||||||
├─系统管理
|
├─系统管理
|
||||||
│ ├─用户管理
|
│ ├─用户管理
|
||||||
│ ├─角色管理
|
│ ├─角色管理
|
||||||
@ -251,8 +287,7 @@ JeecgBoot开源版本,底层完全开源可以自主开发,遵循Apache2.0
|
|||||||
│ └─系统公告
|
│ └─系统公告
|
||||||
│ └─职务管理
|
│ └─职务管理
|
||||||
│ └─通讯录
|
│ └─通讯录
|
||||||
│ ├─多数据源管理
|
│ └─多租户管理
|
||||||
│ └─多租户管理(租户管理、租户角色、我的租户)
|
|
||||||
├─消息中心
|
├─消息中心
|
||||||
│ ├─消息管理
|
│ ├─消息管理
|
||||||
│ ├─模板管理
|
│ ├─模板管理
|
||||||
@ -341,13 +376,28 @@ JeecgBoot开源版本,底层完全开源可以自主开发,遵循Apache2.0
|
|||||||
│ └─异常页面
|
│ └─异常页面
|
||||||
│ └─个人页面
|
│ └─个人页面
|
||||||
├─高级功能
|
├─高级功能
|
||||||
|
│ ├─系统编码规则
|
||||||
│ ├─提供单点登录CAS集成方案
|
│ ├─提供单点登录CAS集成方案
|
||||||
│ ├─提供APP发布方案
|
│ ├─提供APP发布方案
|
||||||
│ ├─集成Websocket消息通知机制
|
│ ├─集成Websocket消息通知机制
|
||||||
│─更多商业功能
|
├─Online在线开发(低代码)
|
||||||
|
│ ├─Online在线表单 - 功能已开放
|
||||||
|
│ ├─Online代码生成器 - 功能已开放
|
||||||
|
│ ├─Online在线报表 - 功能已开放
|
||||||
|
│ ├─Online在线图表(未开源)
|
||||||
|
│ ├─Online图表模板配置(未开源)
|
||||||
|
│ ├─Online布局设计(未开源)
|
||||||
|
│ ├─多数据源管理 - 功能已开放
|
||||||
|
├─积木报表设计器(低代码)
|
||||||
|
│ ├─打印设计器
|
||||||
|
│ ├─数据报表设计
|
||||||
|
│ ├─图形报表设计(支持echart)
|
||||||
|
│ ├─大屏设计器(未开源)
|
||||||
|
│─更多商业功能 (未开源)
|
||||||
│ ├─流程设计器
|
│ ├─流程设计器
|
||||||
│ ├─表单设计器
|
│ ├─表单设计器
|
||||||
│ ├─大屏设计器
|
├─大屏设计器
|
||||||
|
├─门户设计/仪表盘设计器
|
||||||
│ └─我的任务
|
│ └─我的任务
|
||||||
│ └─历史流程
|
│ └─历史流程
|
||||||
│ └─历史流程
|
│ └─历史流程
|
||||||
@ -357,8 +407,12 @@ JeecgBoot开源版本,底层完全开源可以自主开发,遵循Apache2.0
|
|||||||
│ └─我发起的流程
|
│ └─我发起的流程
|
||||||
│ └─我的抄送
|
│ └─我的抄送
|
||||||
│ └─流程委派、抄送、跳转
|
│ └─流程委派、抄送、跳转
|
||||||
│ └─OA办公组件
|
|
||||||
│ └─。。。
|
│ └─。。。
|
||||||
|
│─OA办公组件 (未开源)
|
||||||
|
│ ├─更多功能
|
||||||
|
│ └─。。。
|
||||||
|
└─其他模块
|
||||||
|
└─更多功能开发中。。
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -389,20 +443,10 @@ JeecgBoot开源版本,底层完全开源可以自主开发,遵循Apache2.0
|
|||||||
|
|
||||||
|
|
||||||
##### 仪表盘设计器
|
##### 仪表盘设计器
|
||||||
|

|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
##### 报表设计器
|
##### 报表设计器
|
||||||

|

|
||||||
|
|
||||||
@ -485,4 +529,11 @@ JeecgBoot开源版本,底层完全开源可以自主开发,遵循Apache2.0
|
|||||||
|
|
||||||
如果觉得还不错,请作者喝杯咖啡吧 ☺
|
如果觉得还不错,请作者喝杯咖啡吧 ☺
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
### 流程引擎推荐
|
||||||
|
|
||||||
|
大家在使用本开源项目时,如果想进一步集成流程引擎,推荐结合贺波老师的书 [《深入Activiti流程引擎:核心原理与高阶实战》](https://item.m.jd.com/product/13928958.html?gx=RnAomTM2bmCImZxDqYAkVCoIHuIYVqc)
|
||||||
|
|
||||||
|
<img src="https://jeecgos.oss-cn-beijing.aliyuncs.com/files/tuijian20231220161656.png" width="25%" height="auto">
|
||||||
@ -1,4 +1,4 @@
|
|||||||
FROM registry.cn-hangzhou.aliyuncs.com/jeecgdocker/mysql:8.0.19
|
FROM mysql:8.0.19
|
||||||
|
|
||||||
MAINTAINER jeecgos@163.com
|
MAINTAINER jeecgos@163.com
|
||||||
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -3,7 +3,6 @@
|
|||||||
> JeecgBoot属于平台级产品,每次升级改动较大,目前做不到平滑升级。
|
> JeecgBoot属于平台级产品,每次升级改动较大,目前做不到平滑升级。
|
||||||
|
|
||||||
### 增量升级方案
|
### 增量升级方案
|
||||||
|
|
||||||
#### 1.代码合并
|
#### 1.代码合并
|
||||||
本地通过svn或git做好主干,在分支上做业务开发,jeecg每次版本发布,可以手工覆盖主干的代码,对比合并代码;
|
本地通过svn或git做好主干,在分支上做业务开发,jeecg每次版本发布,可以手工覆盖主干的代码,对比合并代码;
|
||||||
|
|
||||||
@ -12,12 +11,5 @@
|
|||||||
- 其他库请手工执行SQL, 目录: `jeecg-module-system\jeecg-system-start\src\main\resources\flyway\sql\mysql`
|
- 其他库请手工执行SQL, 目录: `jeecg-module-system\jeecg-system-start\src\main\resources\flyway\sql\mysql`
|
||||||
> 注意: 升级sql只提供mysql版本;如果有权限升级, 还需要手工角色授权,退出重新登录才好使。
|
> 注意: 升级sql只提供mysql版本;如果有权限升级, 还需要手工角色授权,退出重新登录才好使。
|
||||||
|
|
||||||
#### 3.其他数据库脚本说明
|
#### 3.兼容问题
|
||||||
原先官方默认提供oracle和SqlServer的脚本,但是维护成本太高,未提供脚本的数据库,可以参考下面的文档自己转
|
|
||||||
https://my.oschina.net/jeecg/blog/4905722
|
|
||||||
(注意:定时任务的表qrtz_*,需要删掉用原始的脚本重新执行一下)
|
|
||||||
quartz-2.2.3-distribution.tar.gz放到百度网盘中,大家自己下载,执行所需数据库脚本
|
|
||||||
https://pan.baidu.com/s/1WrmZdUuAPg3iBwJ-LoHWyg?pwd=8mdz
|
|
||||||
|
|
||||||
#### 4.兼容问题
|
|
||||||
每次发版,会针对不兼容地方重点说明。
|
每次发版,会针对不兼容地方重点说明。
|
||||||
@ -1,135 +0,0 @@
|
|||||||
version: '2'
|
|
||||||
services:
|
|
||||||
jeecg-boot-mysql:
|
|
||||||
build:
|
|
||||||
context: ./jeecg-boot/db
|
|
||||||
environment:
|
|
||||||
MYSQL_ROOT_PASSWORD: root
|
|
||||||
MYSQL_ROOT_HOST: '%'
|
|
||||||
TZ: Asia/Shanghai
|
|
||||||
restart: always
|
|
||||||
container_name: jeecg-boot-mysql
|
|
||||||
image: jeecg-boot-mysql
|
|
||||||
command:
|
|
||||||
--character-set-server=utf8mb4
|
|
||||||
--collation-server=utf8mb4_general_ci
|
|
||||||
--explicit_defaults_for_timestamp=true
|
|
||||||
--lower_case_table_names=1
|
|
||||||
--max_allowed_packet=128M
|
|
||||||
--default-authentication-plugin=caching_sha2_password
|
|
||||||
ports:
|
|
||||||
- 3306:3306
|
|
||||||
networks:
|
|
||||||
- jeecg-boot
|
|
||||||
|
|
||||||
jeecg-boot-redis:
|
|
||||||
image: registry.cn-hangzhou.aliyuncs.com/jeecgdocker/redis:5.0
|
|
||||||
ports:
|
|
||||||
- 6379:6379
|
|
||||||
restart: always
|
|
||||||
hostname: jeecg-boot-redis
|
|
||||||
container_name: jeecg-boot-redis
|
|
||||||
networks:
|
|
||||||
- jeecg-boot
|
|
||||||
|
|
||||||
jeecg-boot-nacos:
|
|
||||||
restart: always
|
|
||||||
build:
|
|
||||||
context: ./jeecg-boot/jeecg-server-cloud/jeecg-cloud-nacos
|
|
||||||
ports:
|
|
||||||
- 8848:8848
|
|
||||||
container_name: jeecg-boot-nacos
|
|
||||||
depends_on:
|
|
||||||
- jeecg-boot-mysql
|
|
||||||
hostname: jeecg-boot-nacos
|
|
||||||
networks:
|
|
||||||
- jeecg-boot
|
|
||||||
|
|
||||||
jeecg-boot-system:
|
|
||||||
depends_on:
|
|
||||||
- jeecg-boot-nacos
|
|
||||||
build:
|
|
||||||
context: ./jeecg-boot/jeecg-server-cloud/jeecg-system-cloud-start
|
|
||||||
container_name: jeecg-system-start
|
|
||||||
hostname: jeecg-boot-system
|
|
||||||
restart: on-failure
|
|
||||||
environment:
|
|
||||||
- TZ=Asia/Shanghai
|
|
||||||
networks:
|
|
||||||
- jeecg-boot
|
|
||||||
|
|
||||||
jeecg-boot-demo:
|
|
||||||
depends_on:
|
|
||||||
- jeecg-boot-nacos
|
|
||||||
build:
|
|
||||||
context: ./jeecg-boot/jeecg-server-cloud/jeecg-demo-cloud-start
|
|
||||||
container_name: jeecg-demo-start
|
|
||||||
hostname: jeecg-boot-demo
|
|
||||||
restart: on-failure
|
|
||||||
environment:
|
|
||||||
- TZ=Asia/Shanghai
|
|
||||||
networks:
|
|
||||||
- jeecg-boot
|
|
||||||
|
|
||||||
jeecg-boot-gateway:
|
|
||||||
restart: on-failure
|
|
||||||
build:
|
|
||||||
context: ./jeecg-boot/jeecg-server-cloud/jeecg-cloud-gateway
|
|
||||||
ports:
|
|
||||||
- 9999:9999
|
|
||||||
depends_on:
|
|
||||||
- jeecg-boot-nacos
|
|
||||||
- jeecg-boot-system
|
|
||||||
container_name: jeecg-boot-gateway
|
|
||||||
hostname: jeecg-boot-gateway
|
|
||||||
networks:
|
|
||||||
- jeecg-boot
|
|
||||||
|
|
||||||
# jeecg-boot-rabbitmq:
|
|
||||||
# image: rabbitmq:3.7.7-management
|
|
||||||
# ports:
|
|
||||||
# - 5672:5672
|
|
||||||
# - 15672:15672
|
|
||||||
# restart: always
|
|
||||||
# container_name: jeecg-boot-rabbitmq
|
|
||||||
# hostname: jeecg-boot-rabbitmq
|
|
||||||
# environment:
|
|
||||||
# RABBITMQ_DEFAULT_USER: guest
|
|
||||||
# RABBITMQ_DEFAULT_PASS: guest
|
|
||||||
# jeecg-boot-sentinel:
|
|
||||||
# restart: on-failure
|
|
||||||
# build:
|
|
||||||
# context: ./jeecg-visual/jeecg-cloud-sentinel
|
|
||||||
# ports:
|
|
||||||
# - 9000:9000
|
|
||||||
# depends_on:
|
|
||||||
# - jeecg-boot-nacos
|
|
||||||
# - jeecg-boot-demo
|
|
||||||
# - jeecg-boot-system
|
|
||||||
# - jeecg-boot-gateway
|
|
||||||
# container_name: jeecg-boot-sentinel
|
|
||||||
# hostname: jeecg-boot-sentinel
|
|
||||||
#
|
|
||||||
# jeecg-boot-xxljob:
|
|
||||||
# build:
|
|
||||||
# context: ./jeecg-visual/jeecg-cloud-xxljob
|
|
||||||
# ports:
|
|
||||||
# - 9080:9080
|
|
||||||
# container_name: jeecg-boot-xxljob
|
|
||||||
# hostname: jeecg-boot-xxljob
|
|
||||||
|
|
||||||
jeecg-vue:
|
|
||||||
build:
|
|
||||||
context: ./jeecgboot-vue3
|
|
||||||
container_name: jeecgboot-vue3-nginx
|
|
||||||
image: jeecgboot-vue3
|
|
||||||
depends_on:
|
|
||||||
- jeecg-boot-system
|
|
||||||
networks:
|
|
||||||
- jeecg-boot
|
|
||||||
ports:
|
|
||||||
- 80:80
|
|
||||||
|
|
||||||
networks:
|
|
||||||
jeecg-boot:
|
|
||||||
name: jeecg_boot
|
|
||||||
@ -2,7 +2,7 @@ version: '2'
|
|||||||
services:
|
services:
|
||||||
jeecg-boot-mysql:
|
jeecg-boot-mysql:
|
||||||
build:
|
build:
|
||||||
context: ./jeecg-boot/db
|
context: ./db
|
||||||
environment:
|
environment:
|
||||||
MYSQL_ROOT_PASSWORD: root
|
MYSQL_ROOT_PASSWORD: root
|
||||||
MYSQL_ROOT_HOST: '%'
|
MYSQL_ROOT_HOST: '%'
|
||||||
@ -23,7 +23,7 @@ services:
|
|||||||
- jeecg-boot
|
- jeecg-boot
|
||||||
|
|
||||||
jeecg-boot-redis:
|
jeecg-boot-redis:
|
||||||
image: registry.cn-hangzhou.aliyuncs.com/jeecgdocker/redis:5.0
|
image: redis:5.0
|
||||||
ports:
|
ports:
|
||||||
- 6379:6379
|
- 6379:6379
|
||||||
restart: always
|
restart: always
|
||||||
@ -34,7 +34,7 @@ services:
|
|||||||
|
|
||||||
jeecg-boot-system:
|
jeecg-boot-system:
|
||||||
build:
|
build:
|
||||||
context: ./jeecg-boot/jeecg-module-system/jeecg-system-start
|
context: ./jeecg-module-system/jeecg-system-start
|
||||||
restart: on-failure
|
restart: on-failure
|
||||||
depends_on:
|
depends_on:
|
||||||
- jeecg-boot-mysql
|
- jeecg-boot-mysql
|
||||||
@ -46,17 +46,6 @@ services:
|
|||||||
- 8080:8080
|
- 8080:8080
|
||||||
networks:
|
networks:
|
||||||
- jeecg-boot
|
- jeecg-boot
|
||||||
jeecg-vue:
|
|
||||||
build:
|
|
||||||
context: ./jeecgboot-vue3
|
|
||||||
container_name: jeecgboot-vue3-nginx
|
|
||||||
image: jeecgboot-vue3
|
|
||||||
depends_on:
|
|
||||||
- jeecg-boot-system
|
|
||||||
networks:
|
|
||||||
- jeecg-boot
|
|
||||||
ports:
|
|
||||||
- 80:80
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
jeecg-boot:
|
jeecg-boot:
|
||||||
|
|||||||
@ -4,11 +4,15 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.jeecgframework.boot</groupId>
|
<groupId>org.jeecgframework.boot</groupId>
|
||||||
<artifactId>jeecg-boot-parent</artifactId>
|
<artifactId>jeecg-boot-parent</artifactId>
|
||||||
<version>3.7.1</version>
|
<version>3.7.0</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>jeecg-boot-base-core</artifactId>
|
<artifactId>jeecg-boot-base-core</artifactId>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<spring-boot.version>3.1.5</spring-boot.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
<repositories>
|
<repositories>
|
||||||
<repository>
|
<repository>
|
||||||
<id>aliyun</id>
|
<id>aliyun</id>
|
||||||
@ -43,12 +47,22 @@
|
|||||||
<!--jeecg-tools-->
|
<!--jeecg-tools-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.jeecgframework.boot</groupId>
|
<groupId>org.jeecgframework.boot</groupId>
|
||||||
<artifactId>jeecg-boot-common</artifactId>
|
<artifactId>jeecg-boot-common3</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!--集成springmvc框架并实现自动配置 -->
|
<!--集成springmvc框架并实现自动配置 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-web</artifactId>
|
<artifactId>spring-boot-starter-web</artifactId>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-tomcat</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-undertow</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- websocket -->
|
<!-- websocket -->
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -105,14 +119,14 @@
|
|||||||
<!-- druid -->
|
<!-- druid -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.alibaba</groupId>
|
<groupId>com.alibaba</groupId>
|
||||||
<artifactId>druid-spring-boot-starter</artifactId>
|
<artifactId>druid-spring-boot-3-starter</artifactId>
|
||||||
<version>${druid.version}</version>
|
<version>${druid.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- 动态数据源 -->
|
<!-- 动态数据源 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.baomidou</groupId>
|
<groupId>com.baomidou</groupId>
|
||||||
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
|
<artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
|
||||||
<version>${dynamic-datasource-spring-boot-starter.version}</version>
|
<version>${dynamic-datasource-spring-boot-starter.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
@ -149,7 +163,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.jeecgframework</groupId>
|
<groupId>org.jeecgframework</groupId>
|
||||||
<artifactId>kingbase8</artifactId>
|
<artifactId>kingbase8</artifactId>
|
||||||
<version>9.0.0</version>
|
<version>${kingbase8.version}</version>
|
||||||
<scope>runtime</scope>
|
<scope>runtime</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!--达梦数据库驱动 版本号1-3-26-2023.07.26-197096-20046-ENT -->
|
<!--达梦数据库驱动 版本号1-3-26-2023.07.26-197096-20046-ENT -->
|
||||||
@ -164,6 +178,7 @@
|
|||||||
<version>${dm8.version}</version>
|
<version>${dm8.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
<!-- Quartz定时任务 -->
|
<!-- Quartz定时任务 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
@ -182,6 +197,12 @@
|
|||||||
<groupId>org.apache.shiro</groupId>
|
<groupId>org.apache.shiro</groupId>
|
||||||
<artifactId>shiro-spring-boot-starter</artifactId>
|
<artifactId>shiro-spring-boot-starter</artifactId>
|
||||||
<version>${shiro.version}</version>
|
<version>${shiro.version}</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.apache.shiro</groupId>
|
||||||
|
<artifactId>shiro-spring</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- shiro-redis -->
|
<!-- shiro-redis -->
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -197,18 +218,61 @@
|
|||||||
<artifactId>checkstyle</artifactId>
|
<artifactId>checkstyle</artifactId>
|
||||||
<groupId>com.puppycrawl.tools</groupId>
|
<groupId>com.puppycrawl.tools</groupId>
|
||||||
</exclusion>
|
</exclusion>
|
||||||
|
<!-- TODO shiro 无法使用 spring boot 3.X 自带的jedis,降版本处理 -->
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>jedis</artifactId>
|
||||||
|
<groupId>redis.clients</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<!-- TODO shiro 无法使用 spring boot 3.X 自带的jedis,降版本处理 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>redis.clients</groupId>
|
||||||
|
<artifactId>jedis</artifactId>
|
||||||
|
<version>${jedis.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.shiro</groupId>
|
||||||
|
<artifactId>shiro-spring</artifactId>
|
||||||
|
<classifier>jakarta</classifier>
|
||||||
|
<version>${shiro.version}</version>
|
||||||
|
<!-- 排除仍使用了javax.servlet的依赖 -->
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.apache.shiro</groupId>
|
||||||
|
<artifactId>shiro-core</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.apache.shiro</groupId>
|
||||||
|
<artifactId>shiro-web</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<!-- 引入适配jakarta的依赖包 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.shiro</groupId>
|
||||||
|
<artifactId>shiro-core</artifactId>
|
||||||
|
<classifier>jakarta</classifier>
|
||||||
|
<version>${shiro.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.shiro</groupId>
|
||||||
|
<artifactId>shiro-web</artifactId>
|
||||||
|
<classifier>jakarta</classifier>
|
||||||
|
<version>${shiro.version}</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.apache.shiro</groupId>
|
||||||
|
<artifactId>shiro-core</artifactId>
|
||||||
|
</exclusion>
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- knife4j -->
|
<!-- knife4j -->
|
||||||
<!-- <dependency>
|
|
||||||
<groupId>com.github.xiaoymin</groupId>
|
|
||||||
<artifactId>knife4j-spring-boot-starter</artifactId>
|
|
||||||
<version>3.0.3</version>
|
|
||||||
</dependency>-->
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.xiaoymin</groupId>
|
<groupId>com.github.xiaoymin</groupId>
|
||||||
<artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
|
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
|
||||||
<version>${knife4j-spring-boot-starter.version}</version>
|
<version>${knife4j-spring-boot-starter.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
@ -222,7 +286,7 @@
|
|||||||
|
|
||||||
<!-- AutoPoi Excel工具类-->
|
<!-- AutoPoi Excel工具类-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.jeecgframework</groupId>
|
<groupId>org.jeecgframework.boot3</groupId>
|
||||||
<artifactId>autopoi-web</artifactId>
|
<artifactId>autopoi-web</artifactId>
|
||||||
<version>${autopoi-web.version}</version>
|
<version>${autopoi-web.version}</version>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
@ -265,6 +329,16 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.xkcoding.justauth</groupId>
|
<groupId>com.xkcoding.justauth</groupId>
|
||||||
<artifactId>justauth-spring-boot-starter</artifactId>
|
<artifactId>justauth-spring-boot-starter</artifactId>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-autoconfigure</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-configuration-processor</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.squareup.okhttp3</groupId>
|
<groupId>com.squareup.okhttp3</groupId>
|
||||||
@ -292,7 +366,7 @@
|
|||||||
<!-- chatgpt -->
|
<!-- chatgpt -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.jeecgframework.boot</groupId>
|
<groupId>org.jeecgframework.boot</groupId>
|
||||||
<artifactId>jeecg-boot-starter-chatgpt</artifactId>
|
<artifactId>jeecg-boot-starter3-chatgpt</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
@ -2,7 +2,7 @@ package org.jeecg.common.api.dto;
|
|||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1,8 +1,7 @@
|
|||||||
package org.jeecg.common.api.vo;
|
package org.jeecg.common.api.vo;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.jeecg.common.constant.CommonConstant;
|
import org.jeecg.common.constant.CommonConstant;
|
||||||
|
|
||||||
@ -15,7 +14,7 @@ import java.io.Serializable;
|
|||||||
* @date 2019年1月19日
|
* @date 2019年1月19日
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@ApiModel(value="接口返回对象", description="接口返回对象")
|
@Schema(description="接口返回对象")
|
||||||
public class Result<T> implements Serializable {
|
public class Result<T> implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
@ -23,31 +22,31 @@ public class Result<T> implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 成功标志
|
* 成功标志
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "成功标志")
|
@Schema(description = "成功标志")
|
||||||
private boolean success = true;
|
private boolean success = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回处理消息
|
* 返回处理消息
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "返回处理消息")
|
@Schema(description = "返回处理消息")
|
||||||
private String message = "";
|
private String message = "";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回代码
|
* 返回代码
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "返回代码")
|
@Schema(description = "返回代码")
|
||||||
private Integer code = 0;
|
private Integer code = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回数据对象 data
|
* 返回数据对象 data
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "返回数据对象")
|
@Schema(description = "返回数据对象")
|
||||||
private T result;
|
private T result;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 时间戳
|
* 时间戳
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "时间戳")
|
@Schema(description = "时间戳")
|
||||||
private long timestamp = System.currentTimeMillis();
|
private long timestamp = System.currentTimeMillis();
|
||||||
|
|
||||||
public Result() {
|
public Result() {
|
||||||
@ -21,13 +21,14 @@ import org.jeecg.common.util.IpUtils;
|
|||||||
import org.jeecg.common.util.SpringContextUtils;
|
import org.jeecg.common.util.SpringContextUtils;
|
||||||
import org.jeecg.common.util.oConvertUtils;
|
import org.jeecg.common.util.oConvertUtils;
|
||||||
import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
|
import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
|
||||||
|
import org.springframework.core.StandardReflectionParameterNameDiscoverer;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.validation.BindingResult;
|
import org.springframework.validation.BindingResult;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.servlet.ServletRequest;
|
import jakarta.servlet.ServletRequest;
|
||||||
import javax.servlet.ServletResponse;
|
import jakarta.servlet.ServletResponse;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
@ -172,7 +173,7 @@ public class AutoLogAspect {
|
|||||||
// 请求的方法参数值
|
// 请求的方法参数值
|
||||||
Object[] args = joinPoint.getArgs();
|
Object[] args = joinPoint.getArgs();
|
||||||
// 请求的方法参数名称
|
// 请求的方法参数名称
|
||||||
LocalVariableTableParameterNameDiscoverer u = new LocalVariableTableParameterNameDiscoverer();
|
StandardReflectionParameterNameDiscoverer u=new StandardReflectionParameterNameDiscoverer();
|
||||||
String[] paramNames = u.getParameterNames(method);
|
String[] paramNames = u.getParameterNames(method);
|
||||||
if (args != null && paramNames != null) {
|
if (args != null && paramNames != null) {
|
||||||
for (int i = 0; i < args.length; i++) {
|
for (int i = 0; i < args.length; i++) {
|
||||||
@ -21,7 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -144,9 +144,7 @@ public interface CommonConstant {
|
|||||||
*/
|
*/
|
||||||
String STATUS_0 = "0";
|
String STATUS_0 = "0";
|
||||||
String STATUS_1 = "1";
|
String STATUS_1 = "1";
|
||||||
Integer STATUS_0_INT = 0;
|
|
||||||
Integer STATUS_1_INT = 1;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 同步工作流引擎1同步0不同步
|
* 同步工作流引擎1同步0不同步
|
||||||
*/
|
*/
|
||||||
@ -477,11 +475,6 @@ public interface CommonConstant {
|
|||||||
*/
|
*/
|
||||||
String FILE_EDITABLE = "editable";
|
String FILE_EDITABLE = "editable";
|
||||||
|
|
||||||
/**
|
|
||||||
* 文件 只读
|
|
||||||
*/
|
|
||||||
String FILE_READONLY = "readonly";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 登录失败,用于记录失败次数的key
|
* 登录失败,用于记录失败次数的key
|
||||||
*/
|
*/
|
||||||
@ -1,7 +1,6 @@
|
|||||||
package org.jeecg.common.constant;
|
package org.jeecg.common.constant;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.jeecg.common.util.oConvertUtils;
|
import org.jeecg.common.util.oConvertUtils;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
@ -23,30 +22,26 @@ public class ProvinceCityArea {
|
|||||||
List<Area> areaList;
|
List<Area> areaList;
|
||||||
|
|
||||||
public String getText(String code){
|
public String getText(String code){
|
||||||
if(StringUtils.isNotBlank(code)){
|
this.initAreaList();
|
||||||
this.initAreaList();
|
if(this.areaList!=null || this.areaList.size()>0){
|
||||||
if(this.areaList!=null || this.areaList.size()>0){
|
List<String> ls = new ArrayList<String>();
|
||||||
List<String> ls = new ArrayList<String>();
|
getAreaByCode(code,ls);
|
||||||
getAreaByCode(code,ls);
|
return String.join("/",ls);
|
||||||
return String.join("/",ls);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCode(String text){
|
public String getCode(String text){
|
||||||
if(StringUtils.isNotBlank(text)){
|
this.initAreaList();
|
||||||
this.initAreaList();
|
if(areaList!=null && areaList.size()>0){
|
||||||
if(areaList!=null && areaList.size()>0){
|
for(int i=areaList.size()-1;i>=0;i--){
|
||||||
for(int i=areaList.size()-1;i>=0;i--){
|
//update-begin-author:taoyan date:2022-5-24 for:VUEN-1088 online 导入 省市区导入后 导入数据错乱 北京市/市辖区/西城区-->山西省/晋城市/城区
|
||||||
//update-begin-author:taoyan date:2022-5-24 for:VUEN-1088 online 导入 省市区导入后 导入数据错乱 北京市/市辖区/西城区-->山西省/晋城市/城区
|
String areaText = areaList.get(i).getText();
|
||||||
String areaText = areaList.get(i).getText();
|
String cityText = areaList.get(i).getAheadText();
|
||||||
String cityText = areaList.get(i).getAheadText();
|
if(text.indexOf(areaText)>=0 && (cityText!=null && text.indexOf(cityText)>=0)){
|
||||||
if(text.indexOf(areaText)>=0 && (cityText!=null && text.indexOf(cityText)>=0)){
|
return areaList.get(i).getId();
|
||||||
return areaList.get(i).getId();
|
|
||||||
}
|
|
||||||
//update-end-author:taoyan date:2022-5-24 for:VUEN-1088 online 导入 省市区导入后 导入数据错乱 北京市/市辖区/西城区-->山西省/晋城市/城区
|
|
||||||
}
|
}
|
||||||
|
//update-end-author:taoyan date:2022-5-24 for:VUEN-1088 online 导入 省市区导入后 导入数据错乱 北京市/市辖区/西城区-->山西省/晋城市/城区
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@ -1,26 +1,26 @@
|
|||||||
package org.jeecg.common.desensitization.annotation;
|
package org.jeecg.common.desensitization.annotation;
|
||||||
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
|
import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
import org.jeecg.common.desensitization.SensitiveSerialize;
|
import org.jeecg.common.desensitization.SensitiveSerialize;
|
||||||
import org.jeecg.common.desensitization.enums.SensitiveEnum;
|
import org.jeecg.common.desensitization.enums.SensitiveEnum;
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 在字段上定义 标识字段存储的信息是敏感的
|
* 在字段上定义 标识字段存储的信息是敏感的
|
||||||
*/
|
*/
|
||||||
@Documented
|
@Documented
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
@Target(ElementType.FIELD)
|
@Target(ElementType.FIELD)
|
||||||
@JacksonAnnotationsInside
|
@JacksonAnnotationsInside
|
||||||
@JsonSerialize(using = SensitiveSerialize.class)
|
@JsonSerialize(using = SensitiveSerialize.class)
|
||||||
public @interface Sensitive {
|
public @interface Sensitive {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 不同类型处理不同
|
* 不同类型处理不同
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
SensitiveEnum type() default SensitiveEnum.ENCODE;
|
SensitiveEnum type() default SensitiveEnum.ENCODE;
|
||||||
}
|
}
|
||||||
@ -1,6 +1,8 @@
|
|||||||
package org.jeecg.common.exception;
|
package org.jeecg.common.exception;
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.exception.ExceptionUtils;
|
import org.apache.commons.lang3.exception.ExceptionUtils;
|
||||||
import org.apache.shiro.SecurityUtils;
|
import org.apache.shiro.SecurityUtils;
|
||||||
@ -30,8 +32,6 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
|
|||||||
import org.springframework.web.multipart.MaxUploadSizeExceededException;
|
import org.springframework.web.multipart.MaxUploadSizeExceededException;
|
||||||
import org.springframework.web.servlet.NoHandlerFoundException;
|
import org.springframework.web.servlet.NoHandlerFoundException;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -104,7 +104,7 @@ public class JeecgBootExceptionHandler {
|
|||||||
@ExceptionHandler({UnauthorizedException.class, AuthorizationException.class})
|
@ExceptionHandler({UnauthorizedException.class, AuthorizationException.class})
|
||||||
public Result<?> handleAuthorizationException(AuthorizationException e){
|
public Result<?> handleAuthorizationException(AuthorizationException e){
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
return Result.noauth("没有权限,请联系管理员分配权限!");
|
return Result.noauth("没有权限,请联系管理员授权,后刷新缓存!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ExceptionHandler(Exception.class)
|
@ExceptionHandler(Exception.class)
|
||||||
@ -23,9 +23,9 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@ -9,10 +9,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
|||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: Entity基类
|
* @Description: Entity基类
|
||||||
@ -30,20 +30,20 @@ public class JeecgEntity implements Serializable {
|
|||||||
* ID
|
* ID
|
||||||
*/
|
*/
|
||||||
@TableId(type = IdType.ASSIGN_ID)
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
@ApiModelProperty(value = "ID")
|
@Schema(description = "ID")
|
||||||
private java.lang.String id;
|
private java.lang.String id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建人
|
* 创建人
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "创建人")
|
@Schema(description = "创建人")
|
||||||
@Excel(name = "创建人", width = 15)
|
@Excel(name = "创建人", width = 15)
|
||||||
private java.lang.String createBy;
|
private java.lang.String createBy;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "创建时间")
|
@Schema(description = "创建时间")
|
||||||
@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
|
@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
|
||||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
@ -52,14 +52,14 @@ public class JeecgEntity implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 更新人
|
* 更新人
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "更新人")
|
@Schema(description = "更新人")
|
||||||
@Excel(name = "更新人", width = 15)
|
@Excel(name = "更新人", width = 15)
|
||||||
private java.lang.String updateBy;
|
private java.lang.String updateBy;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新时间
|
* 更新时间
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "更新时间")
|
@Schema(description = "更新时间")
|
||||||
@Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
|
@Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
|
||||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
@ -746,11 +746,7 @@ public class QueryGenerator {
|
|||||||
private static boolean judgedIsUselessField(String name) {
|
private static boolean judgedIsUselessField(String name) {
|
||||||
return "class".equals(name) || "ids".equals(name)
|
return "class".equals(name) || "ids".equals(name)
|
||||||
|| "page".equals(name) || "rows".equals(name)
|
|| "page".equals(name) || "rows".equals(name)
|
||||||
//// update-begin--author:sunjianlei date:20240808 for:【TV360X-2009】取消过滤 sort、order 字段,防止前端排序报错 ------
|
|| "sort".equals(name) || "order".equals(name);
|
||||||
//// https://github.com/jeecgboot/JeecgBoot/issues/6937
|
|
||||||
// || "sort".equals(name) || "order".equals(name)
|
|
||||||
//// update-end----author:sunjianlei date:20240808 for:【TV360X-2009】取消过滤 sort、order 字段,防止前端排序报错 ------
|
|
||||||
;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -838,9 +834,6 @@ public class QueryGenerator {
|
|||||||
public static String getSqlRuleValue(String sqlRule){
|
public static String getSqlRuleValue(String sqlRule){
|
||||||
try {
|
try {
|
||||||
Set<String> varParams = getSqlRuleParams(sqlRule);
|
Set<String> varParams = getSqlRuleParams(sqlRule);
|
||||||
if (varParams == null || varParams.isEmpty()) {
|
|
||||||
return sqlRule;
|
|
||||||
}
|
|
||||||
for(String var:varParams){
|
for(String var:varParams){
|
||||||
String tempValue = converRuleValue(var);
|
String tempValue = converRuleValue(var);
|
||||||
sqlRule = sqlRule.replace("#{"+var+"}",tempValue);
|
sqlRule = sqlRule.replace("#{"+var+"}",tempValue);
|
||||||
@ -5,7 +5,7 @@ import org.jeecg.common.system.vo.SysUserCacheInfo;
|
|||||||
import org.jeecg.common.util.SpringContextUtils;
|
import org.jeecg.common.util.SpringContextUtils;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -11,10 +11,10 @@ import com.google.common.base.Joiner;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import javax.servlet.ServletResponse;
|
import jakarta.servlet.ServletResponse;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import javax.servlet.http.HttpSession;
|
import jakarta.servlet.http.HttpSession;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.shiro.SecurityUtils;
|
import org.apache.shiro.SecurityUtils;
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user