Compare commits

..

45 Commits

Author SHA1 Message Date
e273008b37 3.5.0版本多租户的几个问题 #4647 2023-04-18 18:34:42 +08:00
53684d224e 变更文档为:help.jeecg.com 2023-04-18 11:57:11 +08:00
f9e843571c 新增QQ群 ⑦791696430 2023-04-18 09:55:51 +08:00
14e9adb3af 低代码应用截图 2023-04-17 23:34:50 +08:00
fedb7bf46f uniapp 效果 2023-04-17 23:21:30 +08:00
ce520be8ca 介绍图片更新 2023-04-17 23:02:46 +08:00
9d92c316c1 更新系统功能截图 2023-04-17 22:50:35 +08:00
f077cafcfe 预计3.5.1正式发布时间 2023-04-20 2023-04-17 15:37:04 +08:00
fd7d0b7202 如何指定nacos命名空间和分组 2023-04-17 14:29:58 +08:00
96586517bd Merge remote-tracking branch 'remotes/origin/master' 2023-04-17 13:32:49 +08:00
5b5a2c0180 Merge pull request #4825 from miniFrank/bugfix/issue-4762
[bugfix]
2023-04-17 13:14:31 +08:00
b089bb96f1 [bugfix]
1. 修复nacos命名问题;
2. 将RouteGroup对齐到nacosgroup;
https://github.com/jeecgboot/jeecg-boot/issues/4743
2023-04-16 21:12:36 +08:00
9da4850bd7 3.5.1 版本发布 2023-04-14 16:12:01 +08:00
a6bcb376fc 3.5.1 版本发布 2023-04-14 15:23:13 +08:00
7abc07424b 更新文档 2023-04-13 17:06:43 +08:00
e9f2bbca23 多租户实现逻辑功能不完善问题 #4676 2023-04-13 15:57:03 +08:00
b0ede05cf4 更新文档 2023-04-13 15:56:54 +08:00
ca1218f792 sys/duplicate/check SQL注入 #4737 2023-04-13 09:42:46 +08:00
8ed2da601b 文档变更为:help.jeecg.com 2023-04-12 17:04:49 +08:00
08696dbb5f vue3文档变更为域名:help.jeecg.com 2023-04-12 10:05:45 +08:00
645ea40bfd vue3文档变更为域名:help.jeecg.com 2023-04-12 10:04:16 +08:00
b970af00c1 新建用户会自动分配角色 #454 2023-04-10 21:30:45 +08:00
5fe9508428 这几个表不能强制隔离 2023-04-10 15:30:57 +08:00
a302fcd963 [issue/4649]树开表单列的字段如果带着下划线会导致生成的 *mapper.xml 中 SQL语句出错 2023-04-08 17:30:47 +08:00
5258228d3b Token有效期改为24小时 2023-04-06 10:17:53 +08:00
1c00be39f0 租户缓存bug 2023-04-06 10:17:29 +08:00
cf1fe01d03 oConvertUtils 里面判断字符串为空的方法有问题 #292 2023-04-05 12:57:14 +08:00
4c78bad14f [issue/4358]springCache中的清除缓存的操作使用了“keys” ] 2023-04-05 11:45:23 +08:00
ebcddad130 [issue/4672]方法造成的文件被占用,注释掉此方法tomcat就能自动清理掉临时文件 ] 2023-04-05 11:45:10 +08:00
42589cd1dc 【issues/425】使用online表单开发,代码生成选择vue3原生以后,界面导出的功能不能使用查询条件了-- 2023-04-05 11:44:51 +08:00
d81fa1f908 新增用户的时候设置租户无效 2023-03-15 11:34:26 +08:00
217fe0dce4 租户邀请人改成采用手机号,租户敏感接口加权限 2023-03-15 11:34:20 +08:00
fffa7f327b 简化职位录入,职位编码自动生成 2023-03-15 11:34:11 +08:00
5417f1285a 多租户实现逻辑功能不完善问题 #4676 2023-03-13 16:12:18 +08:00
b75cbcc911 积木报表数据库表字段缺失 #4675 2023-03-13 10:36:32 +08:00
a68f304307 补充逻辑,登录加载权限,加上租户套餐权限配置 2023-03-09 12:06:55 +08:00
0a00bd8a7c 解决bug,租户是否有效判断有误 2023-03-09 12:06:30 +08:00
e90efbb52f 解决bug,导入部门是否叶子值不对 2023-03-09 12:06:04 +08:00
3c320a5769 Merge pull request #4295 from wang1223440313/patch-1
#FIX 修复枚举常量命名错误
2023-03-08 20:20:04 +08:00
98472b5c35 Merge pull request #4654 from xuxiaowei-com-cn/master-token
 储存在Redis中的Token增加文件夹前缀
2023-03-08 20:16:06 +08:00
3f2354a8ac 开源协议补充 2023-03-08 13:38:51 +08:00
8a94c40e0e 储存在Redis中的Token增加文件夹前缀
https://github.com/jeecgboot/jeecg-boot/issues/4650
2023-03-07 16:24:30 +08:00
b362147577 Merge remote-tracking branch 'origin/patch-1' into patch-1 2022-11-23 19:49:22 +08:00
347b13beb4 #FIX 修复枚举常量命名错误
#FIX 修复枚举常量命名错误
2022-11-23 19:49:09 +08:00
16b8aac08f #FIX 修复枚举变量命名错误
#FIX 修复枚举变量命名错误
2022-11-23 19:44:03 +08:00
72 changed files with 839 additions and 299 deletions

View File

@ -203,7 +203,7 @@
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.允许基于本平台软件开展业务系统开发。 1.允许基于本平台软件开展业务系统开发。

View File

@ -7,13 +7,13 @@
JEECG BOOT Low Code Development Platform JEECG BOOT Low Code Development Platform
=============== ===============
The Latest Version 3.5.0Release date2023-03-08 The Latest Version 3.5.1Release date2023-04-20
[![AUR](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg)](https://github.com/zhangdaiscott/jeecg-boot/blob/master/LICENSE) [![AUR](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg)](https://github.com/zhangdaiscott/jeecg-boot/blob/master/LICENSE)
[![](https://img.shields.io/badge/Author-qiaoqiaoyun-orange.svg)](http://www.jeecg.com) [![](https://img.shields.io/badge/Author-qiaoqiaoyun-orange.svg)](http://www.jeecg.com)
[![](https://img.shields.io/badge/Blog-blog-blue.svg)](https://jeecg.blog.csdn.net) [![](https://img.shields.io/badge/Blog-blog-blue.svg)](https://jeecg.blog.csdn.net)
[![](https://img.shields.io/badge/version-3.5.0-brightgreen.svg)](https://github.com/zhangdaiscott/jeecg-boot) [![](https://img.shields.io/badge/version-3.5.1-brightgreen.svg)](https://github.com/zhangdaiscott/jeecg-boot)
[![GitHub stars](https://img.shields.io/github/stars/zhangdaiscott/jeecg-boot.svg?style=social&label=Stars)](https://github.com/zhangdaiscott/jeecg-boot) [![GitHub stars](https://img.shields.io/github/stars/zhangdaiscott/jeecg-boot.svg?style=social&label=Stars)](https://github.com/zhangdaiscott/jeecg-boot)
[![GitHub forks](https://img.shields.io/github/forks/zhangdaiscott/jeecg-boot.svg?style=social&label=Fork)](https://github.com/zhangdaiscott/jeecg-boot) [![GitHub forks](https://img.shields.io/github/forks/zhangdaiscott/jeecg-boot.svg?style=social&label=Fork)](https://github.com/zhangdaiscott/jeecg-boot)
@ -73,11 +73,9 @@ Jeecg-Boot low code development platform can be applied in the development of an
Docker starts the project Docker starts the project
----------------------------------- -----------------------------------
- [Docker starts the monomer background](http://doc.jeecg.com/2043889) - [Docker starts the monomer background](https://help.jeecg.com/java/setup/docker/up.html)
- [Docker starts the Vue3 front-end](http://vue3.jeecg.com/3028878) - [Docker starts the Vue3 front-end](http://help.jeecg.com/publish/docker.html)
- [Docker starts the micro-service background](https://help.jeecg.com/java/springcloud/docker.html)
- [Docker starts the micro-service background](http://doc.jeecg.com/3043472)
- [Docker starts the Vue2 front-end](http://doc.jeecg.com/3043612)
@ -89,13 +87,13 @@ Technical documentation
- Demo [Vue3](http://boot3.jeecg.com) | [Vue2](http://boot.jeecg.com) - Demo [Vue3](http://boot3.jeecg.com) | [Vue2](http://boot.jeecg.com)
- Doc [Vue3](http://vue3.jeecg.com) | [Main](http://doc.jeecg.com) - Doc [http://help.jeecg.com](http://help.jeecg.com)
- 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) - 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)
- Microservice Development [Monomer upgrade to microservice](http://doc.jeecg.com/3043471) - Microservice Development [Monomer upgrade to microservice](https://help.jeecg.com/java/springcloud/switchcloud/monomer.html)
- QQ group ⑥730954414、683903138、⑤860162132(full)、④774126647(full)、③816531124(full)、②769925425(full)、①284271917(full) - QQ group ⑦791696430、⑥730954414、683903138、⑤860162132(full)、④774126647(full)、③816531124(full)、②769925425(full)、①284271917(full)
@ -263,7 +261,7 @@ Technical Architecture:
8. Service monitoring SpringBootAdmin√ 8. Service monitoring SpringBootAdmin√
9. link tracking Skywalking [reference document](http://doc.jeecg.com/2350293) 9. link tracking Skywalking [reference document](https://help.jeecg.com/java/springcloud/super/skywarking.html)
10. Messaging middleware RabbitMQ √ 10. Messaging middleware RabbitMQ √
@ -437,51 +435,116 @@ Technical Architecture:
Effect of system
----
##### Screen template
![输入图片说明](https://static.oschina.net/uploads/img/201912/25133248_Ag1C.jpg "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201912/25133301_k9Kc.jpg "在这里输入图片标题")
### Effect of system
##### PC ##### PC
![](https://oscimg.oschina.net/oscnet/up-000530d95df337b43089ac77e562494f454.png)
![输入图片说明](https://static.oschina.net/uploads/img/201904/14155402_AmlV.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201904/14155402_AmlV.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160657_cHwb.png "在这里输入图片标题")
![](https://oscimg.oschina.net/oscnet/up-9d6f36f251e71a0b515a01323474b03004c.png)
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160813_KmXS.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201904/14160813_KmXS.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160935_Nibs.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201904/14160935_Nibs.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14161004_bxQ4.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201904/14161004_bxQ4.png "在这里输入图片标题")
##### interactive
![](https://oscimg.oschina.net/oscnet/up-78b151fc888d4319377bf1cc311fe826871.png)
##### Online interface documentation ![](https://oscimg.oschina.net/oscnet/up-16c07e000278329b69b228ae3189814b8e9.png)
![输入图片说明](https://static.oschina.net/uploads/img/201908/27095258_M2Xq.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160957_hN3X.png "在这里输入图片标题")
##### Report ##### process Designer
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160828_pkFr.png "在这里输入图片标题") ![](https://oscimg.oschina.net/oscnet/up-981ce174e4fbb48c8a2ce4ccfd7372e2994.png)
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160834_Lo23.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160842_QK7B.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160849_GBm5.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160858_6RAM.png "在这里输入图片标题")
##### Process
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160623_8fwk.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160917_9Ftz.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160633_u59G.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201907/05165142_yyQ7.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201907/05165142_yyQ7.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160917_9Ftz.png "在这里输入图片标题")
##### App ![输入图片说明](https://static.oschina.net/uploads/img/201904/14160633_u59G.png "在这里输入图片标题")
##### min process
![](https://oscimg.oschina.net/oscnet/up-1dc0d052149ec675f3e4fad632b82b48add.png)
![](https://oscimg.oschina.net/oscnet/up-de31bc2f9d9b8332c554b0954cc73d79593.png)
![](https://oscimg.oschina.net/oscnet/up-7f83b25159663686d67ed080eb16068c3b4.png)
##### dashboard Designer
![](https://oscimg.oschina.net/oscnet/up-9c9d41288c31398d76b390bdd400f13a582.png)
![](https://oscimg.oschina.net/oscnet/up-fad98d42b2cf92f92a903c9cff7579f18ec.png)
##### report Designer
![](https://oscimg.oschina.net/oscnet/up-64648de000851f15f6c7b9573d107ebb5f8.png)
![](https://oscimg.oschina.net/oscnet/up-fa52b44445db281c51d3f267dce7450d21b.gif)
![](https://oscimg.oschina.net/oscnet/up-68a19149d640f1646c8ed89ed4375e3326c.png)
![](https://oscimg.oschina.net/oscnet/up-f7e9cb2e3740f2d19ff63b40ec2dd554f96.png)
##### form Designer
![](https://oscimg.oschina.net/oscnet/up-5f8cb657615714b02190b355e59f60c5937.png)
![](https://oscimg.oschina.net/oscnet/up-d9659b2f324e33218476ec98c9b400e6508.png)
![](https://oscimg.oschina.net/oscnet/up-4868615395272d3206dbb960ade02dbc291.png)
##### bigscreen Designer
![](https://oscimg.oschina.net/oscnet/up-402a6034124474bfef8dfc5b4b2bac1ce5c.png)
![](https://oscimg.oschina.net/oscnet/up-6f7ba2e2ebbeea0d203db8d69fd87644c9f.png)
![](https://oscimg.oschina.net/oscnet/up-ee8d34f318da466b8a6070a6e3111d12ce7.png)
![](https://oscimg.oschina.net/oscnet/up-6b81781b43086819049c4421206810667c5.png)
##### uniapp
![](https://oscimg.oschina.net/oscnet/up-aac943fbd26561879c57a41f7a406edf274.png)
![](https://oscimg.oschina.net/oscnet/up-9a44ba2e82b09c750629d12fafd7f60f553.png)
##### low app
![](https://oscimg.oschina.net/oscnet/up-4be29ae761b2615c8c54b3f668cd8432d9b.png)
![](https://oscimg.oschina.net/oscnet/up-787e76bc24b38ecc7ed19f338808d128255.png)
![](https://oscimg.oschina.net/oscnet/up-99d24a236c483362868523ad0d90f611487.png)
![](https://oscimg.oschina.net/oscnet/up-339a0f29d10449abc7724e3bcda802761c1.png)
![](https://oscimg.oschina.net/oscnet/up-b356670cdc14c609958c7619a537397c4b9.png)
##### app
![](https://oscimg.oschina.net/oscnet/da543c5d0d57baab0cecaa4670c8b68c521.jpg) ![](https://oscimg.oschina.net/oscnet/da543c5d0d57baab0cecaa4670c8b68c521.jpg)
![](https://oscimg.oschina.net/oscnet/fda4bd82cab9d682de1c1fbf2060bf14fa6.jpg) ![](https://oscimg.oschina.net/oscnet/fda4bd82cab9d682de1c1fbf2060bf14fa6.jpg)
##### PAD ##### PAD
![](https://oscimg.oschina.net/oscnet/e90fef970a8c33790ab03ffd6c4c7cec225.jpg) ![](https://oscimg.oschina.net/oscnet/e90fef970a8c33790ab03ffd6c4c7cec225.jpg)
![](https://oscimg.oschina.net/oscnet/d78218803a9e856a0aa82b45efc49849a0c.jpg) ![](https://oscimg.oschina.net/oscnet/d78218803a9e856a0aa82b45efc49849a0c.jpg)
![](https://oscimg.oschina.net/oscnet/0404054d9a12647ef6f82cf9cfb80a5ac02.jpg)
![](https://oscimg.oschina.net/oscnet/59c23b230f52384e588ee16309b44fa20de.jpg) ![](https://oscimg.oschina.net/oscnet/59c23b230f52384e588ee16309b44fa20de.jpg)
##### chart
![](https://oscimg.oschina.net/oscnet/up-218bc6a1669496b241ebb23506440c0083e.png)
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160834_Lo23.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160842_QK7B.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160849_GBm5.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160858_6RAM.png "在这里输入图片标题")
##### swagger
![输入图片说明](https://static.oschina.net/uploads/img/201908/27095258_M2Xq.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160957_hN3X.png "在这里输入图片标题")
## donation ## donation
If so, buy the author a cup of coffee ☺ If so, buy the author a cup of coffee ☺

156
README.md
View File

@ -7,13 +7,13 @@
JEECG BOOT 低代码开发平台 JEECG BOOT 低代码开发平台
=============== ===============
当前最新版本: 3.5.0发布日期2023-03-08 当前最新版本: 3.5.1发布日期2023-04-20
[![AUR](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg)](https://github.com/zhangdaiscott/jeecg-boot/blob/master/LICENSE) [![AUR](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg)](https://github.com/zhangdaiscott/jeecg-boot/blob/master/LICENSE)
[![](https://img.shields.io/badge/Author-北京敲敲云科技-orange.svg)](http://www.jeecg.com) [![](https://img.shields.io/badge/Author-北京敲敲云科技-orange.svg)](http://www.jeecg.com)
[![](https://img.shields.io/badge/Blog-官方博客-blue.svg)](https://jeecg.blog.csdn.net) [![](https://img.shields.io/badge/Blog-官方博客-blue.svg)](https://jeecg.blog.csdn.net)
[![](https://img.shields.io/badge/version-3.5.0-brightgreen.svg)](https://github.com/zhangdaiscott/jeecg-boot) [![](https://img.shields.io/badge/version-3.5.1-brightgreen.svg)](https://github.com/zhangdaiscott/jeecg-boot)
[![GitHub stars](https://img.shields.io/github/stars/zhangdaiscott/jeecg-boot.svg?style=social&label=Stars)](https://github.com/zhangdaiscott/jeecg-boot) [![GitHub stars](https://img.shields.io/github/stars/zhangdaiscott/jeecg-boot.svg?style=social&label=Stars)](https://github.com/zhangdaiscott/jeecg-boot)
[![GitHub forks](https://img.shields.io/github/forks/zhangdaiscott/jeecg-boot.svg?style=social&label=Fork)](https://github.com/zhangdaiscott/jeecg-boot) [![GitHub forks](https://img.shields.io/github/forks/zhangdaiscott/jeecg-boot.svg?style=social&label=Fork)](https://github.com/zhangdaiscott/jeecg-boot)
@ -33,6 +33,11 @@ JeecgBoot 提供了一系列`低代码模块`,实现在线开发`真正的零
`JEECG业务流程:` 采用工作流来实现、扩展出任务接口,供开发编写业务逻辑,表单提供多种解决方案: 表单设计器、online配置表单、编码表单。同时实现了流程与表单的分离设计松耦合、并支持任务节点灵活配置既保证了公司流程的保密性又减少了开发人员的工作量。 `JEECG业务流程:` 采用工作流来实现、扩展出任务接口,供开发编写业务逻辑,表单提供多种解决方案: 表单设计器、online配置表单、编码表单。同时实现了流程与表单的分离设计松耦合、并支持任务节点灵活配置既保证了公司流程的保密性又减少了开发人员的工作量。
适用项目
-----------------------------------
Jeecg-Boot低代码开发平台可以应用在任何J2EE项目的开发中尤其适合SAAS项目、企业信息管理系统MIS、内部办公系统OA、企业资源计划系统ERP、客户关系管理系统CRM其半智能手工Merge的开发方式可以显著提高开发效率70%以上,极大降低开发成本。
源码下载 源码下载
----------------------------------- -----------------------------------
@ -45,9 +50,9 @@ JeecgBoot 提供了一系列`低代码模块`,实现在线开发`真正的零
##### 快速搭建开发环境 ##### 快速搭建开发环境
- [通过IDEA启动前后端项目](http://doc.jeecg.com/2043874) - [通过IDEA启动前后端项目](https://help.jeecg.com/java/setup/idea/startup.html)
- [Vue3前端项目快速启动](http://vue3.jeecg.com/2398848) - [Vue3前端项目快速启动](http://help.jeecg.com/setup/startup.html)
- [单体快速切换为微服务版](http://doc.jeecg.com/3043471) - [单体快速切换为微服务版](https://help.jeecg.com/java/springcloud/switchcloud/monomer.html)
##### 项目说明 ##### 项目说明
@ -61,6 +66,12 @@ JeecgBoot 提供了一系列`低代码模块`,实现在线开发`真正的零
技术支持
-----------------------------------
关闭gitee的issue通道使用中遇到问题或者BUG可以在 [Github上提Issues](https://github.com/jeecgboot/jeecg-boot/issues/new)
官方支持: [http://jeecg.com/doc/help](http://jeecg.com/doc/help)
技术文档 技术文档
@ -68,13 +79,13 @@ JeecgBoot 提供了一系列`低代码模块`,实现在线开发`真正的零
- 项目官网: [http://www.jeecg.com](http://www.jeecg.com) - 项目官网: [http://www.jeecg.com](http://www.jeecg.com)
- 在线演示 [Vue3版本](http://boot3.jeecg.com) | [敲敲云(零代码)](http://app.qiaoqiaoyun.com) - 在线演示 [低代码演示](http://boot3.jeecg.com) | [零代码体验](http://app.qiaoqiaoyun.com)
- 开发文档: [Vue3文档](http://vue3.jeecg.com) | [主项目文档](http://doc.jeecg.com) - 开发文档: [http://help.jeecg.com](http://help.jeecg.com)
- 新手指南: [快速入门](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://www.jeecg.com/doc/qa) | [视频教程](https://space.bilibili.com/454617261/channel/series) | [1分钟低代码体验](https://my.oschina.net/jeecg/blog/3083313)
- QQ交流群 ⑥730954414、VUE3群683903138、⑤860162132(满)、④774126647(满)、③816531124(满)、②769925425(满)、①284271917(满) - QQ交流群 ⑦791696430、⑥730954414、VUE3群683903138、⑤860162132(满)、④774126647(满)、③816531124(满)、②769925425(满)、①284271917(满)
> ` 提醒【QQ群是自助服务群建议给帮助您解决问题的同学发送指定红包表示感谢】 ` > ` 提醒【QQ群是自助服务群建议给帮助您解决问题的同学发送指定红包表示感谢】 `
@ -84,14 +95,15 @@ JeecgBoot 提供了一系列`低代码模块`,实现在线开发`真正的零
Docker启动项目 Docker启动项目
----------------------------------- -----------------------------------
- [Docker启动单体后台](http://doc.jeecg.com/2043889) - [Docker启动单体后台](https://help.jeecg.com/java/setup/docker/up.html)
- [Docker启动Vue3前端](http://vue3.jeecg.com/3028878) - [Docker启动Vue3前端](http://help.jeecg.com/publish/docker.html)
- [Docker启动微服务后台](http://doc.jeecg.com/3043472) - [Docker启动微服务后台](https://help.jeecg.com/java/springcloud/docker.html)
************
VUE2版本专题说明 =======【VUE2版本专题介绍】============================================
VUE2版本专题介绍
----------------------------------- -----------------------------------
#### 项目介绍 #### 项目介绍
- 项目名称ant-design-vue-jeecg - 项目名称ant-design-vue-jeecg
@ -114,20 +126,11 @@ VUE2版本专题说明
| 后端源码 `Vue2版` |https://gitee.com/jeecg/jeecg-boot/tree/v3.4.3last | | 后端源码 `Vue2版` |https://gitee.com/jeecg/jeecg-boot/tree/v3.4.3last |
| 前端源码 `Vue2版` |https://gitee.com/jeecg/ant-design-vue-jeecg | | 前端源码 `Vue2版` |https://gitee.com/jeecg/ant-design-vue-jeecg |
************ =========【VUE2版本专题介绍】=========================================
适用项目
-----------------------------------
Jeecg-Boot低代码开发平台可以应用在任何J2EE项目的开发中尤其适合SAAS项目、企业信息管理系统MIS、内部办公系统OA、企业资源计划系统ERP、客户关系管理系统CRM其半智能手工Merge的开发方式可以显著提高开发效率70%以上,极大降低开发成本。
技术支持
-----------------------------------
关闭gitee的issue通道使用中遇到问题或者BUG可以在 [Github上提Issues](https://github.com/jeecgboot/jeecg-boot/issues/new)
官方支持: [http://jeecg.com/doc/help](http://jeecg.com/doc/help)
##### Star走势图 ##### Star走势图
@ -291,7 +294,7 @@ Jeecg-Boot低代码开发平台可以应用在任何J2EE项目的开发中
8、服务监控 SpringBootAdmin√ 8、服务监控 SpringBootAdmin√
9、链路跟踪 Skywalking [参考文档](http://doc.jeecg.com/2350293) 9、链路跟踪 Skywalking [参考文档](https://help.jeecg.com/java/springcloud/super/skywarking.html)
10、消息中间件 RabbitMQ √ 10、消息中间件 RabbitMQ √
@ -465,39 +468,92 @@ Jeecg-Boot低代码开发平台可以应用在任何J2EE项目的开发中
系统效果 ### 系统效果
----
##### 大屏模板
![输入图片说明](https://static.oschina.net/uploads/img/201912/25133248_Ag1C.jpg "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201912/25133301_k9Kc.jpg "在这里输入图片标题")
##### PC端 ##### PC端
![](https://oscimg.oschina.net/oscnet/up-000530d95df337b43089ac77e562494f454.png)
![输入图片说明](https://static.oschina.net/uploads/img/201904/14155402_AmlV.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201904/14155402_AmlV.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160657_cHwb.png "在这里输入图片标题")
![](https://oscimg.oschina.net/oscnet/up-9d6f36f251e71a0b515a01323474b03004c.png)
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160813_KmXS.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201904/14160813_KmXS.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160935_Nibs.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201904/14160935_Nibs.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14161004_bxQ4.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201904/14161004_bxQ4.png "在这里输入图片标题")
##### 系统交互
![](https://oscimg.oschina.net/oscnet/up-78b151fc888d4319377bf1cc311fe826871.png)
##### 在线接口文档 ![](https://oscimg.oschina.net/oscnet/up-16c07e000278329b69b228ae3189814b8e9.png)
![输入图片说明](https://static.oschina.net/uploads/img/201908/27095258_M2Xq.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160957_hN3X.png "在这里输入图片标题")
##### 报表 ##### 流程设计
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160828_pkFr.png "在这里输入图片标题") ![](https://oscimg.oschina.net/oscnet/up-981ce174e4fbb48c8a2ce4ccfd7372e2994.png)
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160834_Lo23.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160842_QK7B.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160849_GBm5.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160858_6RAM.png "在这里输入图片标题")
##### 流程
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160623_8fwk.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160917_9Ftz.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160633_u59G.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201907/05165142_yyQ7.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201907/05165142_yyQ7.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160917_9Ftz.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160633_u59G.png "在这里输入图片标题")
##### 简版流程设计
![](https://oscimg.oschina.net/oscnet/up-1dc0d052149ec675f3e4fad632b82b48add.png)
![](https://oscimg.oschina.net/oscnet/up-de31bc2f9d9b8332c554b0954cc73d79593.png)
![](https://oscimg.oschina.net/oscnet/up-7f83b25159663686d67ed080eb16068c3b4.png)
##### 仪表盘设计器
![](https://oscimg.oschina.net/oscnet/up-9c9d41288c31398d76b390bdd400f13a582.png)
![](https://oscimg.oschina.net/oscnet/up-fad98d42b2cf92f92a903c9cff7579f18ec.png)
##### 报表设计器
![](https://oscimg.oschina.net/oscnet/up-64648de000851f15f6c7b9573d107ebb5f8.png)
![](https://oscimg.oschina.net/oscnet/up-fa52b44445db281c51d3f267dce7450d21b.gif)
![](https://oscimg.oschina.net/oscnet/up-68a19149d640f1646c8ed89ed4375e3326c.png)
![](https://oscimg.oschina.net/oscnet/up-f7e9cb2e3740f2d19ff63b40ec2dd554f96.png)
##### 表单设计器
![](https://oscimg.oschina.net/oscnet/up-5f8cb657615714b02190b355e59f60c5937.png)
![](https://oscimg.oschina.net/oscnet/up-d9659b2f324e33218476ec98c9b400e6508.png)
![](https://oscimg.oschina.net/oscnet/up-4868615395272d3206dbb960ade02dbc291.png)
##### 大屏设计器
![](https://oscimg.oschina.net/oscnet/up-402a6034124474bfef8dfc5b4b2bac1ce5c.png)
![](https://oscimg.oschina.net/oscnet/up-6f7ba2e2ebbeea0d203db8d69fd87644c9f.png)
![](https://oscimg.oschina.net/oscnet/up-ee8d34f318da466b8a6070a6e3111d12ce7.png)
![](https://oscimg.oschina.net/oscnet/up-6b81781b43086819049c4421206810667c5.png)
##### UNIAPP效果
![](https://oscimg.oschina.net/oscnet/up-aac943fbd26561879c57a41f7a406edf274.png)
![](https://oscimg.oschina.net/oscnet/up-9a44ba2e82b09c750629d12fafd7f60f553.png)
##### 零代码应用
![](https://oscimg.oschina.net/oscnet/up-4be29ae761b2615c8c54b3f668cd8432d9b.png)
![](https://oscimg.oschina.net/oscnet/up-787e76bc24b38ecc7ed19f338808d128255.png)
![](https://oscimg.oschina.net/oscnet/up-99d24a236c483362868523ad0d90f611487.png)
![](https://oscimg.oschina.net/oscnet/up-339a0f29d10449abc7724e3bcda802761c1.png)
![](https://oscimg.oschina.net/oscnet/up-b356670cdc14c609958c7619a537397c4b9.png)
##### 手机端 ##### 手机端
![](https://oscimg.oschina.net/oscnet/da543c5d0d57baab0cecaa4670c8b68c521.jpg) ![](https://oscimg.oschina.net/oscnet/da543c5d0d57baab0cecaa4670c8b68c521.jpg)
@ -506,10 +562,20 @@ Jeecg-Boot低代码开发平台可以应用在任何J2EE项目的开发中
##### PAD端 ##### PAD端
![](https://oscimg.oschina.net/oscnet/e90fef970a8c33790ab03ffd6c4c7cec225.jpg) ![](https://oscimg.oschina.net/oscnet/e90fef970a8c33790ab03ffd6c4c7cec225.jpg)
![](https://oscimg.oschina.net/oscnet/d78218803a9e856a0aa82b45efc49849a0c.jpg) ![](https://oscimg.oschina.net/oscnet/d78218803a9e856a0aa82b45efc49849a0c.jpg)
![](https://oscimg.oschina.net/oscnet/0404054d9a12647ef6f82cf9cfb80a5ac02.jpg)
![](https://oscimg.oschina.net/oscnet/59c23b230f52384e588ee16309b44fa20de.jpg) ![](https://oscimg.oschina.net/oscnet/59c23b230f52384e588ee16309b44fa20de.jpg)
##### 图表示例
![](https://oscimg.oschina.net/oscnet/up-218bc6a1669496b241ebb23506440c0083e.png)
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160834_Lo23.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160842_QK7B.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160849_GBm5.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160858_6RAM.png "在这里输入图片标题")
##### 在线接口文档
![输入图片说明](https://static.oschina.net/uploads/img/201908/27095258_M2Xq.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160957_hN3X.png "在这里输入图片标题")
## 捐赠 ## 捐赠
如果觉得还不错,请作者喝杯咖啡吧 ☺ 如果觉得还不错,请作者喝杯咖啡吧 ☺

View File

@ -14,7 +14,7 @@ USE `jeecg-boot`;
Target Server Version : 50738 Target Server Version : 50738
File Encoding : 65001 File Encoding : 65001
Date: 06/03/2023 21:32:36 Date: 13/03/2023 09:28:06
*/ */
SET NAMES utf8mb4; SET NAMES utf8mb4;
@ -713,6 +713,7 @@ CREATE TABLE `jimu_report_data_source` (
`update_time` datetime NULL DEFAULT NULL COMMENT '更新日期', `update_time` datetime NULL DEFAULT NULL COMMENT '更新日期',
`connect_times` int(1) UNSIGNED NULL DEFAULT 0 COMMENT '连接失败次数', `connect_times` int(1) UNSIGNED NULL DEFAULT 0 COMMENT '连接失败次数',
`tenant_id` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多租户标识', `tenant_id` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多租户标识',
`type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '类型(report:报表;drag:仪表盘)',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_jmdatasource_report_id`(`report_id`) USING BTREE, INDEX `idx_jmdatasource_report_id`(`report_id`) USING BTREE,
INDEX `idx_jmdatasource_code`(`code`) USING BTREE INDEX `idx_jmdatasource_code`(`code`) USING BTREE
@ -721,9 +722,9 @@ CREATE TABLE `jimu_report_data_source` (
-- ---------------------------- -- ----------------------------
-- Records of jimu_report_data_source -- Records of jimu_report_data_source
-- ---------------------------- -- ----------------------------
INSERT INTO `jimu_report_data_source` VALUES ('1324261983692902402', 'jeewx', '1324261770294071296', '', NULL, 'MYSQL', 'com.mysql.jdbc.Driver', 'jdbc:mysql://127.0.0.1:3306/jeewx-boot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8', 'root', 'root', 'jeecg', '2020-11-05 16:07:15', NULL, '2020-11-05 16:07:15', 0, NULL); INSERT INTO `jimu_report_data_source` VALUES ('1324261983692902402', 'jeewx', '1324261770294071296', '', NULL, 'MYSQL', 'com.mysql.jdbc.Driver', 'jdbc:mysql://127.0.0.1:3306/jeewx-boot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8', 'root', 'root', 'jeecg', '2020-11-05 16:07:15', NULL, '2020-11-05 16:07:15', 0, NULL, 'report');
INSERT INTO `jimu_report_data_source` VALUES ('26d21fe4f27920d2f56abc8d90a8e527', 'oracle', '1308645288868712448', '', NULL, 'ORACLE', 'oracle.jdbc.OracleDriver', 'jdbc:oracle:thin:@192.168.1.199:1521:helowin', 'jeecgbootbpm', 'jeecg196283', 'admin', '2021-01-05 19:26:24', NULL, '2021-01-05 19:26:24', 0, NULL); INSERT INTO `jimu_report_data_source` VALUES ('26d21fe4f27920d2f56abc8d90a8e527', 'oracle', '1308645288868712448', '', NULL, 'ORACLE', 'oracle.jdbc.OracleDriver', 'jdbc:oracle:thin:@192.168.1.199:1521:helowin', 'jeecgbootbpm', 'jeecg196283', 'admin', '2021-01-05 19:26:24', NULL, '2021-01-05 19:26:24', 0, NULL, 'report');
INSERT INTO `jimu_report_data_source` VALUES ('8f90daf47d15d35ca6cf420748b8b9ba', 'localhost', '1316944968992034816', '', NULL, 'MYSQL5.7', 'com.mysql.cj.jdbc.Driver', 'jdbc:mysql://127.0.0.1:3306/jeecg-boot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8', 'root', 'root', 'admin', '2021-01-13 14:34:00', NULL, '2021-01-13 14:34:00', 0, NULL); INSERT INTO `jimu_report_data_source` VALUES ('8f90daf47d15d35ca6cf420748b8b9ba', 'localhost', '1316944968992034816', '', NULL, 'MYSQL5.7', 'com.mysql.cj.jdbc.Driver', 'jdbc:mysql://127.0.0.1:3306/jeecg-boot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8', 'root', 'root', 'admin', '2021-01-13 14:34:00', NULL, '2021-01-13 14:34:00', 0, NULL, 'report');
-- ---------------------------- -- ----------------------------
-- Table structure for jimu_report_db -- Table structure for jimu_report_db
@ -2958,7 +2959,7 @@ CREATE TABLE `qrtz_scheduler_state` (
-- ---------------------------- -- ----------------------------
-- Records of qrtz_scheduler_state -- Records of qrtz_scheduler_state
-- ---------------------------- -- ----------------------------
INSERT INTO `qrtz_scheduler_state` VALUES ('MyScheduler', 'qin1678102560776', 1678102793417, 15000); INSERT INTO `qrtz_scheduler_state` VALUES ('MyScheduler', 'qin1678364404962', 1678369184458, 15000);
-- ---------------------------- -- ----------------------------
-- Table structure for qrtz_simple_triggers -- Table structure for qrtz_simple_triggers
@ -4239,6 +4240,26 @@ CREATE TABLE `sys_log` (
-- ---------------------------- -- ----------------------------
-- Records of sys_log -- Records of sys_log
-- ---------------------------- -- ----------------------------
INSERT INTO `sys_log` VALUES ('1632743293639704578', 1, '用户名: admin,登录成功', NULL, 'admin', '管理员', '127.0.0.1', NULL, NULL, NULL, NULL, NULL, NULL, '2023-03-06 22:01:51', NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1633795132552331266', 1, '用户名: admin,登录成功', NULL, 'admin', '管理员', '127.0.0.1', NULL, NULL, NULL, NULL, NULL, NULL, '2023-03-09 19:41:29', NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1633795234301952002', 3, ' jeecg 添加到角色 232', 2, 'admin', '管理员', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2023-03-09 19:41:53', NULL, NULL, 1);
INSERT INTO `sys_log` VALUES ('1633795819784847361', 2, '编辑用户username zhagnxiao', 2, 'admin', '管理员', '127.0.0.1', NULL, NULL, NULL, NULL, NULL, NULL, '2023-03-09 19:44:13', NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1633797138973147137', 2, '添加用户username sdfas', 2, 'admin', '管理员', '127.0.0.1', NULL, NULL, NULL, NULL, NULL, NULL, '2023-03-09 19:49:27', NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1633799025831133186', 2, '添加用户username 123', 2, 'admin', '管理员', '127.0.0.1', NULL, NULL, NULL, NULL, NULL, NULL, '2023-03-09 19:56:57', NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1633799090641518594', 2, '编辑用户username 123', 2, 'admin', '管理员', '127.0.0.1', NULL, NULL, NULL, NULL, NULL, NULL, '2023-03-09 19:57:12', NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1633799500294995970', 2, '添加用户username sdfasdf', 2, 'admin', '管理员', '127.0.0.1', NULL, NULL, NULL, NULL, NULL, NULL, '2023-03-09 19:58:50', NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1633799606465413122', 2, '编辑用户username sdfasdf', 2, 'admin', '管理员', '127.0.0.1', NULL, NULL, NULL, NULL, NULL, NULL, '2023-03-09 19:59:15', NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1633802472806670338', 1, '用户名: 管理员,退出成功', NULL, 'admin', '管理员', '127.0.0.1', NULL, NULL, NULL, NULL, NULL, NULL, '2023-03-09 20:10:39', NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1633802491123195906', 1, '用户名: admin,登录成功', NULL, 'admin', '管理员', '127.0.0.1', NULL, NULL, NULL, NULL, NULL, NULL, '2023-03-09 20:10:43', NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1633802551785414658', 2, '职务表-分页列表查询', 1, 'admin', '管理员', '127.0.0.1', 'org.jeecg.modules.system.controller.SysPositionController.queryPageList()', NULL, ' sysPosition: SysPosition(id=null, code=, name=null, postRank=null, companyId=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, tenantId=0) pageNo: 1 pageSize: 10 req: org.apache.shiro.web.servlet.ShiroHttpServletRequest@400bd6e8', NULL, 44, NULL, '2023-03-09 20:10:58', NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1633802611273228290', 2, '添加用户username asdfasdf', 2, 'admin', '管理员', '127.0.0.1', NULL, NULL, NULL, NULL, NULL, NULL, '2023-03-09 20:11:12', NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1633802653614727170', 2, '批量删除用户 ids 1633802611139010562,1633799500227887106,1633799025764024321,1633797138843123714', 3, 'admin', '管理员', '127.0.0.1', NULL, NULL, NULL, NULL, NULL, NULL, '2023-03-09 20:11:22', NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1633802992560627713', 2, '职务表-分页列表查询', 1, 'admin', '管理员', '127.0.0.1', 'org.jeecg.modules.system.controller.SysPositionController.queryPageList()', NULL, ' sysPosition: SysPosition(id=null, code=, name=null, postRank=null, companyId=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, tenantId=0) pageNo: 1 pageSize: 10 req: org.apache.shiro.web.servlet.ShiroHttpServletRequest@767bb69d', NULL, 18, NULL, '2023-03-09 20:12:43', NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1633802993412071426', 2, '职务表-分页列表查询', 1, 'admin', '管理员', '127.0.0.1', 'org.jeecg.modules.system.controller.SysPositionController.queryPageList()', NULL, ' sysPosition: SysPosition(id=null, code=总经理, name=null, postRank=null, companyId=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, tenantId=0) pageNo: 1 pageSize: 10 req: org.apache.shiro.web.servlet.ShiroHttpServletRequest@f9470cd', NULL, 24, NULL, '2023-03-09 20:12:43', NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1633803007035170818', 2, '编辑用户username admin', 2, 'admin', '管理员', '127.0.0.1', NULL, NULL, NULL, NULL, NULL, NULL, '2023-03-09 20:12:46', NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1633804165707456513', 2, '职务表-分页列表查询', 1, 'admin', '管理员', '127.0.0.1', 'org.jeecg.modules.system.controller.SysPositionController.queryPageList()', NULL, ' sysPosition: SysPosition(id=null, code=null, name=null, postRank=null, companyId=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, tenantId=1000) pageNo: 1 pageSize: 10 req: org.apache.shiro.web.servlet.ShiroHttpServletRequest@7460e74a', NULL, 15, NULL, '2023-03-09 20:17:22', NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1633804994137026562', 2, '修改角色ID: 1501570619841810433 的权限配置操作人 admin', 2, 'admin', '管理员', '127.0.0.1', NULL, NULL, NULL, NULL, NULL, NULL, '2023-03-09 20:20:40', NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1633807285640491010', 2, '编辑用户username admin', 2, 'admin', '管理员', '127.0.0.1', NULL, NULL, NULL, NULL, NULL, NULL, '2023-03-09 20:29:46', NULL, NULL, NULL);
-- ---------------------------- -- ----------------------------
-- Table structure for sys_permission -- Table structure for sys_permission
@ -4282,7 +4303,7 @@ CREATE TABLE `sys_permission` (
-- Records of sys_permission -- Records of sys_permission
-- ---------------------------- -- ----------------------------
INSERT INTO `sys_permission` VALUES ('1170592628746878978', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '菜单管理', '/system/menu', 'system/menu/index', 1, NULL, NULL, 1, NULL, '1', 3.00, 0, 'ant-design:menu-fold-outlined', 0, 0, 0, 0, NULL, 'admin', '2019-09-08 15:00:05', 'admin', '2022-11-10 16:42:38', 0, 0, '1', 0); INSERT INTO `sys_permission` VALUES ('1170592628746878978', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '菜单管理', '/system/menu', 'system/menu/index', 1, NULL, NULL, 1, NULL, '1', 3.00, 0, 'ant-design:menu-fold-outlined', 0, 0, 0, 0, NULL, 'admin', '2019-09-08 15:00:05', 'admin', '2022-11-10 16:42:38', 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('119213522910765570', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '租户用户', '/system/user/tenantUserList', 'system/user/TenantUserList', 1, NULL, NULL, 1, NULL, NULL, 3.20, 0, 'ant-design:user', 1, 0, 0, 0, NULL, NULL, '2018-12-25 20:34:38', 'admin', '2022-12-30 10:11:27', 0, 0, NULL, 0); INSERT INTO `sys_permission` VALUES ('119213522910765570', '1633804334561746946', '租户用户', '/system/user/tenantUserList', 'system/user/TenantUserList', 1, NULL, NULL, 1, NULL, NULL, 3.20, 0, 'ant-design:user', 1, 0, 0, 0, NULL, NULL, '2018-12-25 20:34:38', 'admin', '2023-03-09 20:18:16', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1211885237487923202', '1207203817658105858', 'btn:add', '', '', 1, NULL, NULL, 2, 'btn:add', '1', 1.00, 0, NULL, 1, 0, 0, NULL, NULL, 'admin', '2019-12-31 13:42:11', 'admin', '2020-01-07 20:07:53', 0, 0, '1', 0); INSERT INTO `sys_permission` VALUES ('1211885237487923202', '1207203817658105858', 'btn:add', '', '', 1, NULL, NULL, 2, 'btn:add', '1', 1.00, 0, NULL, 1, 0, 0, NULL, NULL, 'admin', '2019-12-31 13:42:11', 'admin', '2020-01-07 20:07:53', 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('1214376304951664642', '3f915b2769fc80648e92d04e84ca059d', '用户编辑', '', '', 0, NULL, NULL, 2, 'system:user:edit', '1', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2020-01-07 10:40:47', 'admin', '2022-11-17 16:24:33', 0, 0, '1', 0); INSERT INTO `sys_permission` VALUES ('1214376304951664642', '3f915b2769fc80648e92d04e84ca059d', '用户编辑', '', '', 0, NULL, NULL, 2, 'system:user:edit', '1', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2020-01-07 10:40:47', 'admin', '2022-11-17 16:24:33', 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('1214462306546319362', '3f915b2769fc80648e92d04e84ca059d', '新增用户', '', '', 0, NULL, NULL, 2, 'system:user:add', '1', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2020-01-07 16:22:32', 'admin', '2022-11-17 16:24:47', 0, 0, '1', 0); INSERT INTO `sys_permission` VALUES ('1214462306546319362', '3f915b2769fc80648e92d04e84ca059d', '新增用户', '', '', 0, NULL, NULL, 2, 'system:user:add', '1', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2020-01-07 16:22:32', 'admin', '2022-11-17 16:24:47', 0, 0, '1', 0);
@ -4471,7 +4492,7 @@ INSERT INTO `sys_permission` VALUES ('1443390062919208961', '', '消息中心',
INSERT INTO `sys_permission` VALUES ('1443391584864358402', '1443390062919208961', '消息模板', '/message/template', 'system/message/template/index', 1, NULL, NULL, 1, NULL, '0', 2.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2021-09-30 09:45:45', 'admin', '2022-09-22 10:32:42', 0, 0, NULL, 0); INSERT INTO `sys_permission` VALUES ('1443391584864358402', '1443390062919208961', '消息模板', '/message/template', 'system/message/template/index', 1, NULL, NULL, 1, NULL, '0', 2.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2021-09-30 09:45:45', 'admin', '2022-09-22 10:32:42', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1446778415130722306', '1438108219445731330', 'JEECG官网', '/', 'http://www.jeecg.com', 0, NULL, NULL, 1, NULL, '0', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'jeecg', '2021-10-09 18:03:49', 'admin', '2021-11-15 18:01:26', 0, 0, NULL, 1); INSERT INTO `sys_permission` VALUES ('1446778415130722306', '1438108219445731330', 'JEECG官网', '/', 'http://www.jeecg.com', 0, NULL, NULL, 1, NULL, '0', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'jeecg', '2021-10-09 18:03:49', 'admin', '2021-11-15 18:01:26', 0, 0, NULL, 1);
INSERT INTO `sys_permission` VALUES ('1447535997560909826', '1438108197270446081', '禁用', NULL, NULL, 0, NULL, NULL, 2, 'demo.dbarray', '2', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2021-10-11 20:14:10', 'admin', '2021-10-11 20:18:48', 0, 0, '1', 0); INSERT INTO `sys_permission` VALUES ('1447535997560909826', '1438108197270446081', '禁用', NULL, NULL, 0, NULL, NULL, 2, 'demo.dbarray', '2', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2021-10-11 20:14:10', 'admin', '2021-10-11 20:18:48', 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('1447763172274495489', '', '统计报表', '/report', 'layouts/RouteView', 1, NULL, NULL, 0, NULL, '0', 3.10, 0, 'ant-design:bar-chart-outlined', 0, 0, 0, 0, NULL, 'jeecg', '2021-10-12 11:16:53', 'admin', '2023-03-06 19:36:56', 0, 0, NULL, 0); INSERT INTO `sys_permission` VALUES ('1447763172274495489', '', '统计报表', '/report', 'layouts/RouteView', 1, NULL, NULL, 0, NULL, '0', 5.00, 0, 'ant-design:bar-chart-outlined', 0, 0, 0, 0, NULL, 'jeecg', '2021-10-12 11:16:53', 'admin', '2023-03-09 20:21:04', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1447763517847396354', '1447763172274495489', 'EChartDemo', '/report/chartDemo', 'report/chartdemo/index', 1, NULL, NULL, 1, NULL, '0', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'jeecg', '2021-10-12 11:18:15', 'jeecg', '2021-10-14 14:36:38', 0, 0, NULL, 0); INSERT INTO `sys_permission` VALUES ('1447763517847396354', '1447763172274495489', 'EChartDemo', '/report/chartDemo', 'report/chartdemo/index', 1, NULL, NULL, 1, NULL, '0', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'jeecg', '2021-10-12 11:18:15', 'jeecg', '2021-10-14 14:36:38', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1448252726202859522', '1447763172274495489', '布局统计报表', '/statisticst', 'report/statisticst/index', 1, NULL, NULL, 1, NULL, '0', 2.00, 0, NULL, 1, 0, 0, 0, NULL, 'jeecg', '2021-10-13 19:42:12', NULL, NULL, 0, 0, NULL, 0); INSERT INTO `sys_permission` VALUES ('1448252726202859522', '1447763172274495489', '布局统计报表', '/statisticst', 'report/statisticst/index', 1, NULL, NULL, 1, NULL, '0', 2.00, 0, NULL, 1, 0, 0, 0, NULL, 'jeecg', '2021-10-13 19:42:12', NULL, NULL, 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1450308897429536769', '1438108197958311537', 'JVxeTable示例', '/jeecg/j-vxe-table-demo', 'demo/jeecg/JVxeTableDemo/index', 1, NULL, NULL, 1, NULL, '0', 10.00, 0, NULL, 0, 0, 0, 0, NULL, 'admin', '2021-10-19 11:52:41', 'admin', '2021-10-19 11:54:46', 0, 0, NULL, 0); INSERT INTO `sys_permission` VALUES ('1450308897429536769', '1438108197958311537', 'JVxeTable示例', '/jeecg/j-vxe-table-demo', 'demo/jeecg/JVxeTableDemo/index', 1, NULL, NULL, 1, NULL, '0', 10.00, 0, NULL, 0, 0, 0, 0, NULL, 'admin', '2021-10-19 11:52:41', 'admin', '2021-10-19 11:54:46', 0, 0, NULL, 0);
@ -4563,7 +4584,7 @@ INSERT INTO `sys_permission` VALUES ('1593185714482880514', '3f915b2769fc80648e9
INSERT INTO `sys_permission` VALUES ('1594930803956920321', '1439398677984878593', '在线用户', '/system/onlineuser', 'system/onlineuser/OnlineUserList', 1, '', NULL, 1, NULL, '0', 12.00, 0, 'ant-design:aliwangwang-outlined', 1, 0, 0, 0, NULL, 'admin', '2022-11-22 13:48:31', 'admin', '2023-03-04 15:15:36', 0, 0, NULL, 0); INSERT INTO `sys_permission` VALUES ('1594930803956920321', '1439398677984878593', '在线用户', '/system/onlineuser', 'system/onlineuser/OnlineUserList', 1, '', NULL, 1, NULL, '0', 12.00, 0, 'ant-design:aliwangwang-outlined', 1, 0, 0, 0, NULL, 'admin', '2022-11-22 13:48:31', 'admin', '2023-03-04 15:15:36', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1596141938193747970', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '用户设置', '/system/usersetting', 'system/usersetting/UserSetting', 1, '', NULL, 1, NULL, '0', 12.00, 0, 'ant-design:setting-twotone', 0, 0, 1, 0, NULL, 'admin', '2022-11-25 22:01:08', 'admin', '2023-03-04 15:00:26', 0, 0, NULL, 0); INSERT INTO `sys_permission` VALUES ('1596141938193747970', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '用户设置', '/system/usersetting', 'system/usersetting/UserSetting', 1, '', NULL, 1, NULL, '0', 12.00, 0, 'ant-design:setting-twotone', 0, 0, 1, 0, NULL, 'admin', '2022-11-25 22:01:08', 'admin', '2023-03-04 15:00:26', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1596335805278990338', '1596141938193747970', '账户设置用户编辑权限', NULL, NULL, 0, NULL, NULL, 2, 'system:user:setting:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2022-11-26 10:51:29', NULL, NULL, 0, 0, '1', 0); INSERT INTO `sys_permission` VALUES ('1596335805278990338', '1596141938193747970', '账户设置用户编辑权限', NULL, NULL, 0, NULL, NULL, 2, 'system:user:setting:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2022-11-26 10:51:29', NULL, NULL, 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('1597419994965786625', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '租户角色', '/system/role/TenantRoleList', 'system/role/TenantRoleList', 1, '', NULL, 1, NULL, '0', 3.20, 0, 'ant-design:line-height-outlined', 1, 0, 0, 0, NULL, 'admin', '2022-11-29 10:39:40', 'admin', '2023-03-04 15:01:43', 0, 0, NULL, 0); INSERT INTO `sys_permission` VALUES ('1597419994965786625', '1633804334561746946', '租户角色', '/system/role/TenantRoleList', 'system/role/TenantRoleList', 1, '', NULL, 1, NULL, '0', 3.20, 0, 'ant-design:line-height-outlined', 1, 0, 0, 0, NULL, 'admin', '2022-11-29 10:39:40', 'admin', '2023-03-09 20:18:23', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('15c92115213910765570', '3f915b2769fc80648e92d04e84ca059d', '通过ID查询用户信息接口', NULL, NULL, 0, NULL, NULL, 2, 'system:user:queryById', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2022-11-14 19:20:22', NULL, NULL, 0, 0, '1', 0); INSERT INTO `sys_permission` VALUES ('15c92115213910765570', '3f915b2769fc80648e92d04e84ca059d', '通过ID查询用户信息接口', NULL, NULL, 0, NULL, NULL, 2, 'system:user:queryById', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2022-11-14 19:20:22', NULL, NULL, 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('1600105607009165314', '1280350452934307841', '邀请用户', NULL, NULL, 0, NULL, NULL, 2, 'system:tenant:invitation:user', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2022-12-06 20:31:20', NULL, NULL, 0, 0, '1', 0); INSERT INTO `sys_permission` VALUES ('1600105607009165314', '1280350452934307841', '邀请用户', NULL, NULL, 0, NULL, NULL, 2, 'system:tenant:invitation:user', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2022-12-06 20:31:20', NULL, NULL, 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('1600108123037917186', '1280350452934307841', '通过租户id获取用户', NULL, NULL, 0, NULL, NULL, 2, 'system:tenant:user:list', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2022-12-06 20:41:20', NULL, NULL, 0, 0, '1', 0); INSERT INTO `sys_permission` VALUES ('1600108123037917186', '1280350452934307841', '通过租户id获取用户', NULL, NULL, 0, NULL, NULL, 2, 'system:tenant:user:list', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2022-12-06 20:41:20', NULL, NULL, 0, 0, '1', 0);
@ -4580,6 +4601,7 @@ INSERT INTO `sys_permission` VALUES ('1620261087828418562', '1280350452934307841
INSERT INTO `sys_permission` VALUES ('1620305415648989186', '1280350452934307841', '彻底删除租户', NULL, NULL, 0, NULL, NULL, 2, 'system:tenant:deleteTenantLogic', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-01-31 14:18:10', 'admin', '2023-01-31 14:19:51', 0, 0, '1', 0); INSERT INTO `sys_permission` VALUES ('1620305415648989186', '1280350452934307841', '彻底删除租户', NULL, NULL, 0, NULL, NULL, 2, 'system:tenant:deleteTenantLogic', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-01-31 14:18:10', 'admin', '2023-01-31 14:19:51', 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('1620327825894981634', '1280350452934307841', '租户还原', NULL, NULL, 0, NULL, NULL, 2, 'system:tenant:revertTenantLogic', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-01-31 15:47:13', NULL, NULL, 0, 0, '1', 0); INSERT INTO `sys_permission` VALUES ('1620327825894981634', '1280350452934307841', '租户还原', NULL, NULL, 0, NULL, NULL, 2, 'system:tenant:revertTenantLogic', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-01-31 15:47:13', NULL, NULL, 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('1621620772498288641', '1280350452934307841', '添加租户', NULL, NULL, 0, NULL, NULL, 2, 'system:tenant:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-01-11 15:08:29', NULL, NULL, 0, 0, '1', 0); INSERT INTO `sys_permission` VALUES ('1621620772498288641', '1280350452934307841', '添加租户', NULL, NULL, 0, NULL, NULL, 2, 'system:tenant:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-01-11 15:08:29', NULL, NULL, 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('1633804334561746946', '', '我的租户', '/mytenant', 'layouts/RouteView', 1, '', NULL, 0, NULL, '0', 4.00, 0, 'ant-design:ant-design-outlined', 0, 0, 0, 0, NULL, 'admin', '2023-03-09 20:18:03', 'admin', '2023-03-09 20:20:57', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1697220712498288641', '1280350452934307841', '根据ids查询租户', NULL, NULL, 0, NULL, NULL, 2, 'system:tenant:queryList', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-01-11 15:08:29', NULL, NULL, 0, 0, '1', 0); INSERT INTO `sys_permission` VALUES ('1697220712498288641', '1280350452934307841', '根据ids查询租户', NULL, NULL, 0, NULL, NULL, 2, 'system:tenant:queryList', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-01-11 15:08:29', NULL, NULL, 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('190c2b43bec6a5f7a4194a85db67d96a', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '角色管理', '/system/role', 'system/role/index', 1, NULL, NULL, 1, NULL, NULL, 2.00, 0, 'ant-design:solution', 0, 1, 0, NULL, NULL, NULL, '2018-12-25 20:34:38', 'admin', '2021-09-17 15:58:00', 0, 0, NULL, 0); INSERT INTO `sys_permission` VALUES ('190c2b43bec6a5f7a4194a85db67d96a', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '角色管理', '/system/role', 'system/role/index', 1, NULL, NULL, 1, NULL, NULL, 2.00, 0, 'ant-design:solution', 0, 1, 0, NULL, NULL, NULL, '2018-12-25 20:34:38', 'admin', '2021-09-17 15:58:00', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1a0811914300741f4e11838ff37a1d3a', '3f915b2769fc80648e92d04e84ca059d', '手机号禁用', '', '', 0, NULL, NULL, 2, 'user:form:phone', '2', 1.00, 0, NULL, 1, NULL, 0, NULL, NULL, 'admin', '2019-05-11 17:19:30', 'admin', '2019-05-11 18:00:22', 0, 0, '1', NULL); INSERT INTO `sys_permission` VALUES ('1a0811914300741f4e11838ff37a1d3a', '3f915b2769fc80648e92d04e84ca059d', '手机号禁用', '', '', 0, NULL, NULL, 2, 'user:form:phone', '2', 1.00, 0, NULL, 1, NULL, 0, NULL, NULL, 'admin', '2019-05-11 17:19:30', 'admin', '2019-05-11 18:00:22', 0, 0, '1', NULL);
@ -5479,6 +5501,7 @@ INSERT INTO `sys_role_permission` VALUES ('1631912286107684866', '15015706198418
INSERT INTO `sys_role_permission` VALUES ('1631912286107684867', '1501570619841810433', '1594930803956920321', NULL, '2023-03-04 14:59:43', '127.0.0.1'); INSERT INTO `sys_role_permission` VALUES ('1631912286107684867', '1501570619841810433', '1594930803956920321', NULL, '2023-03-04 14:59:43', '127.0.0.1');
INSERT INTO `sys_role_permission` VALUES ('1631912286107684868', '1501570619841810433', '1593173018886709250', NULL, '2023-03-04 14:59:43', '127.0.0.1'); INSERT INTO `sys_role_permission` VALUES ('1631912286107684868', '1501570619841810433', '1593173018886709250', NULL, '2023-03-04 14:59:43', '127.0.0.1');
INSERT INTO `sys_role_permission` VALUES ('1632635480313671681', 'e51758fa916c881624b046d26bd09230', '9502685863ab87f0ad1134142788a385', NULL, '2023-03-06 14:53:26', '127.0.0.1'); INSERT INTO `sys_role_permission` VALUES ('1632635480313671681', 'e51758fa916c881624b046d26bd09230', '9502685863ab87f0ad1134142788a385', NULL, '2023-03-06 14:53:26', '127.0.0.1');
INSERT INTO `sys_role_permission` VALUES ('1633804994019586049', '1501570619841810433', '1633804334561746946', NULL, '2023-03-09 20:20:40', '127.0.0.1');
INSERT INTO `sys_role_permission` VALUES ('165acd6046a0eaf975099f46a3c898ea', 'f6817f48af4fb3af11b9e8bf182f618b', '4f66409ef3bbd69c1d80469d6e2a885e', NULL, NULL, NULL); INSERT INTO `sys_role_permission` VALUES ('165acd6046a0eaf975099f46a3c898ea', 'f6817f48af4fb3af11b9e8bf182f618b', '4f66409ef3bbd69c1d80469d6e2a885e', NULL, NULL, NULL);
INSERT INTO `sys_role_permission` VALUES ('1664b92dff13e1575e3a929caa2fa14d', 'f6817f48af4fb3af11b9e8bf182f618b', 'd2bbf9ebca5a8fa2e227af97d2da7548', NULL, NULL, NULL); INSERT INTO `sys_role_permission` VALUES ('1664b92dff13e1575e3a929caa2fa14d', 'f6817f48af4fb3af11b9e8bf182f618b', 'd2bbf9ebca5a8fa2e227af97d2da7548', NULL, NULL, NULL);
INSERT INTO `sys_role_permission` VALUES ('16ef8ed3865ccc6f6306200760896c50', 'ee8626f80f7c2619917b6236f3a7f02b', 'e8af452d8948ea49d37c934f5100ae6a', NULL, NULL, NULL); INSERT INTO `sys_role_permission` VALUES ('16ef8ed3865ccc6f6306200760896c50', 'ee8626f80f7c2619917b6236f3a7f02b', 'e8af452d8948ea49d37c934f5100ae6a', NULL, NULL, NULL);
@ -5903,7 +5926,8 @@ CREATE TABLE `sys_tenant` (
-- ---------------------------- -- ----------------------------
-- Records of sys_tenant -- Records of sys_tenant
-- ---------------------------- -- ----------------------------
INSERT INTO `sys_tenant` VALUES (1, '北京租户001', '2020-07-10 15:43:32', 'admin', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 1); INSERT INTO `sys_tenant` VALUES (1, '白酒集团', '2020-07-10 15:43:32', 'admin', NULL, NULL, 1, NULL, NULL, NULL, NULL, '7WIUCW', NULL, NULL, NULL, NULL, NULL, 1, 'admin', '2023-03-09 20:27:48', 1);
INSERT INTO `sys_tenant` VALUES (1000, '北京敲敲云科技有限公司', '2023-03-09 19:55:11', 'admin', NULL, NULL, 1, NULL, NULL, NULL, NULL, '2PI3U6', NULL, NULL, NULL, NULL, NULL, 0, 'admin', '2023-03-09 21:38:56', NULL);
-- ---------------------------- -- ----------------------------
-- Table structure for sys_tenant_pack -- Table structure for sys_tenant_pack
@ -5966,6 +5990,7 @@ CREATE TABLE `sys_tenant_pack_user` (
-- ---------------------------- -- ----------------------------
-- Records of sys_tenant_pack_user -- Records of sys_tenant_pack_user
-- ---------------------------- -- ----------------------------
INSERT INTO `sys_tenant_pack_user` VALUES ('1633795234318729217', '1633795213938606082', 'a75d45a015c44384a04449ee80dc3503', 1, 'admin', '2023-03-09 19:41:53', NULL, NULL, 1);
-- ---------------------------- -- ----------------------------
-- Table structure for sys_third_account -- Table structure for sys_third_account
@ -6039,11 +6064,10 @@ CREATE TABLE `sys_user` (
-- ---------------------------- -- ----------------------------
-- Records of sys_user -- Records of sys_user
-- ---------------------------- -- ----------------------------
INSERT INTO `sys_user` VALUES ('1572778193260863489', '123123', '12312322', '0938718c770fa385', 'mSBQHHZP', 'temp/4afbfbedab64034f9015f1bca8c379310b551dab_1663814505787.jpg', '2022-09-16 00:00:00', 1, '111@1.com', '18611788521', NULL, 1, 1, NULL, NULL, 1, '11', 'devleader', NULL, 'admin', '2022-09-22 10:41:57', 'admin', '2022-09-22 10:42:12', 1, '', NULL, NULL, NULL);
INSERT INTO `sys_user` VALUES ('3d464b4ea0d2491aab8a7bde74c57e95', 'zhangsan', '张三', '02ea098224c7d0d2077c14b9a3a1ed16', 'x5xRdeKB', 'https://static.jeecg.com/temp/jmlogo_1606575041993.png', NULL, NULL, NULL, NULL, '财务部', 1, 0, NULL, NULL, 1, '0005', '总经理', NULL, 'admin', '2020-05-14 21:26:24', 'admin', '2020-09-09 14:42:51', 1, '', NULL, NULL, NULL); INSERT INTO `sys_user` VALUES ('3d464b4ea0d2491aab8a7bde74c57e95', 'zhangsan', '张三', '02ea098224c7d0d2077c14b9a3a1ed16', 'x5xRdeKB', 'https://static.jeecg.com/temp/jmlogo_1606575041993.png', NULL, NULL, NULL, NULL, '财务部', 1, 0, NULL, NULL, 1, '0005', '总经理', NULL, 'admin', '2020-05-14 21:26:24', 'admin', '2020-09-09 14:42:51', 1, '', NULL, NULL, NULL);
INSERT INTO `sys_user` VALUES ('a75d45a015c44384a04449ee80dc3503', 'jeecg', 'jeecg', 'eee378a1258530cb', 'mIgiYJow', 'https://static.jeecg.com/temp/国炬软件logo_1606575029126.png', NULL, 1, NULL, NULL, 'A02A01', 1, 0, NULL, NULL, 1, '00002', 'devleader', NULL, 'admin', '2019-02-13 16:02:36', 'jeecg', '2022-03-09 23:03:21', 1, '', NULL, NULL, NULL); INSERT INTO `sys_user` VALUES ('a75d45a015c44384a04449ee80dc3503', 'jeecg', 'jeecg', 'eee378a1258530cb', 'mIgiYJow', 'https://static.jeecg.com/temp/国炬软件logo_1606575029126.png', NULL, 1, NULL, NULL, 'A02A01', 1, 0, NULL, NULL, 1, '00002', 'devleader', NULL, 'admin', '2019-02-13 16:02:36', 'jeecg', '2022-03-09 23:03:21', 1, '', NULL, NULL, NULL);
INSERT INTO `sys_user` VALUES ('e9ca23d68d884d4ebb19d07889727dae', 'admin', '管理员', 'cb362cfeefbf3d8d', 'RCGTeGiH', 'https://static.jeecg.com/temp/国炬软件logo_1606575029126.png', '2018-12-05 00:00:00', 1, 'jeecg@163.com', '18611111111', 'A01', 1, 0, NULL, NULL, 1, '00001', '总经理', NULL, NULL, '2019-06-21 17:54:10', 'admin', '2022-11-03 10:19:31', 2, 'c6d7cb4deeac411cb3384b1b31278596', NULL, 0, NULL); INSERT INTO `sys_user` VALUES ('e9ca23d68d884d4ebb19d07889727dae', 'admin', '管理员', 'cb362cfeefbf3d8d', 'RCGTeGiH', 'https://static.jeecg.com/temp/国炬软件logo_1606575029126.png', '2018-12-05 00:00:00', 1, 'jeecg@163.com', '18611111111', 'A01', 1, 0, NULL, NULL, 1, '00001', '总经理', NULL, NULL, '2019-06-21 17:54:10', 'admin', '2023-03-09 20:29:46', 2, '', NULL, 1000, NULL);
INSERT INTO `sys_user` VALUES ('f0019fdebedb443c98dcb17d88222c38', 'zhagnxiao', '张小红12', 'f898134e5e52ae11a2ffb2c3b57a4e90', 'go3jJ4zX', 'https://static.jeecg.com/temp/jmlogo_1606575041993.png', '2019-04-01 00:00:00', NULL, NULL, '18611711111', '研发部,财务部', 1, 0, NULL, NULL, 1, '00003', 'devleader', NULL, 'admin', '2020-10-01 19:34:10', 'admin', '2023-03-04 15:02:35', 2, '1582683631414632450', NULL, NULL, NULL); INSERT INTO `sys_user` VALUES ('f0019fdebedb443c98dcb17d88222c38', 'zhagnxiao', '张小红12', 'f898134e5e52ae11a2ffb2c3b57a4e90', 'go3jJ4zX', 'https://static.jeecg.com/temp/jmlogo_1606575041993.png', '2019-04-01 00:00:00', NULL, NULL, '18611711111', '研发部,财务部', 1, 0, NULL, NULL, 1, '00003', 'devleader,总经理', NULL, 'admin', '2020-10-01 19:34:10', 'admin', '2023-03-09 19:44:13', 2, '1582683631414632450', NULL, NULL, NULL);
-- ---------------------------- -- ----------------------------
-- Table structure for sys_user_agent -- Table structure for sys_user_agent
@ -6096,10 +6120,9 @@ CREATE TABLE `sys_user_depart` (
INSERT INTO `sys_user_depart` VALUES ('1303584634328633345', '3d464b4ea0d2491aab8a7bde74c57e95', 'a7d7e77e06c84325a40932163adcdaa6'); INSERT INTO `sys_user_depart` VALUES ('1303584634328633345', '3d464b4ea0d2491aab8a7bde74c57e95', 'a7d7e77e06c84325a40932163adcdaa6');
INSERT INTO `sys_user_depart` VALUES ('1256487210695356418', 'a75d45a015c44384a04449ee80dc3503', 'a7d7e77e06c84325a40932163adcdaa6'); INSERT INTO `sys_user_depart` VALUES ('1256487210695356418', 'a75d45a015c44384a04449ee80dc3503', 'a7d7e77e06c84325a40932163adcdaa6');
INSERT INTO `sys_user_depart` VALUES ('1f3a0267811327b9eca86b0cc2b956f3', 'bcbe1290783a469a83ae3bd8effe15d4', '5159cde220114246b045e574adceafe9'); INSERT INTO `sys_user_depart` VALUES ('1f3a0267811327b9eca86b0cc2b956f3', 'bcbe1290783a469a83ae3bd8effe15d4', '5159cde220114246b045e574adceafe9');
INSERT INTO `sys_user_depart` VALUES ('1587992837927714818', 'e9ca23d68d884d4ebb19d07889727dae', 'c6d7cb4deeac411cb3384b1b31278596'); INSERT INTO `sys_user_depart` VALUES ('1633795820112003074', 'f0019fdebedb443c98dcb17d88222c38', '1582683631414632450');
INSERT INTO `sys_user_depart` VALUES ('1631913005669896194', 'f0019fdebedb443c98dcb17d88222c38', '1582683631414632450'); INSERT INTO `sys_user_depart` VALUES ('1633795820124585985', 'f0019fdebedb443c98dcb17d88222c38', '57197590443c44f083d42ae24ef26a2c');
INSERT INTO `sys_user_depart` VALUES ('1631913005669896195', 'f0019fdebedb443c98dcb17d88222c38', '57197590443c44f083d42ae24ef26a2c'); INSERT INTO `sys_user_depart` VALUES ('1633795820137168898', 'f0019fdebedb443c98dcb17d88222c38', '67fc001af12a4f9b8458005d3f19934a');
INSERT INTO `sys_user_depart` VALUES ('1631913005678284802', 'f0019fdebedb443c98dcb17d88222c38', '67fc001af12a4f9b8458005d3f19934a');
-- ---------------------------- -- ----------------------------
-- Table structure for sys_user_role -- Table structure for sys_user_role
@ -6122,9 +6145,9 @@ CREATE TABLE `sys_user_role` (
INSERT INTO `sys_user_role` VALUES ('0ede6d23d53bc7dc990346ff14faabee', '3db4cf42353f4e868b7ccfeef90505d2', 'ee8626f80f7c2619917b6236f3a7f02b', 0); INSERT INTO `sys_user_role` VALUES ('0ede6d23d53bc7dc990346ff14faabee', '3db4cf42353f4e868b7ccfeef90505d2', 'ee8626f80f7c2619917b6236f3a7f02b', 0);
INSERT INTO `sys_user_role` VALUES ('1256487210544361473', 'a75d45a015c44384a04449ee80dc3503', 'ee8626f80f7c2619917b6236f3a7f02b', 0); INSERT INTO `sys_user_role` VALUES ('1256487210544361473', 'a75d45a015c44384a04449ee80dc3503', 'ee8626f80f7c2619917b6236f3a7f02b', 0);
INSERT INTO `sys_user_role` VALUES ('1303584634118918145', '3d464b4ea0d2491aab8a7bde74c57e95', 'ee8626f80f7c2619917b6236f3a7f02b', 0); INSERT INTO `sys_user_role` VALUES ('1303584634118918145', '3d464b4ea0d2491aab8a7bde74c57e95', 'ee8626f80f7c2619917b6236f3a7f02b', 0);
INSERT INTO `sys_user_role` VALUES ('1587992837868994562', 'e9ca23d68d884d4ebb19d07889727dae', '1501570619841810433', 0); INSERT INTO `sys_user_role` VALUES ('1633795820044894209', 'f0019fdebedb443c98dcb17d88222c38', 'ee8626f80f7c2619917b6236f3a7f02b', 0);
INSERT INTO `sys_user_role` VALUES ('1587992837885771777', 'e9ca23d68d884d4ebb19d07889727dae', 'f6817f48af4fb3af11b9e8bf182f618b', 0); INSERT INTO `sys_user_role` VALUES ('1633807285908926466', 'e9ca23d68d884d4ebb19d07889727dae', '1501570619841810433', 1000);
INSERT INTO `sys_user_role` VALUES ('1631913005644730370', 'f0019fdebedb443c98dcb17d88222c38', 'ee8626f80f7c2619917b6236f3a7f02b', 0); INSERT INTO `sys_user_role` VALUES ('1633807285971841026', 'e9ca23d68d884d4ebb19d07889727dae', 'f6817f48af4fb3af11b9e8bf182f618b', 1000);
INSERT INTO `sys_user_role` VALUES ('31af310584bd5795f76b1fe8c38294a0', '70f5dcf03f36471dabba81381919291f', 'e51758fa916c881624b046d26bd09230', 0); INSERT INTO `sys_user_role` VALUES ('31af310584bd5795f76b1fe8c38294a0', '70f5dcf03f36471dabba81381919291f', 'e51758fa916c881624b046d26bd09230', 0);
INSERT INTO `sys_user_role` VALUES ('79d66ef7aa137cfa9957081a1483009d', '9a668858c4c74cf5a2b25ad9608ba095', 'ee8626f80f7c2619917b6236f3a7f02b', 0); INSERT INTO `sys_user_role` VALUES ('79d66ef7aa137cfa9957081a1483009d', '9a668858c4c74cf5a2b25ad9608ba095', 'ee8626f80f7c2619917b6236f3a7f02b', 0);
INSERT INTO `sys_user_role` VALUES ('8d7846ec783e157174e4ce2949231a65', '7ee6630e89d17afbf6d12150197b578d', 'e51758fa916c881624b046d26bd09230', 0); INSERT INTO `sys_user_role` VALUES ('8d7846ec783e157174e4ce2949231a65', '7ee6630e89d17afbf6d12150197b578d', 'e51758fa916c881624b046d26bd09230', 0);
@ -6151,7 +6174,8 @@ CREATE TABLE `sys_user_tenant` (
`update_time` datetime NULL DEFAULT NULL COMMENT '更新日期', `update_time` datetime NULL DEFAULT NULL COMMENT '更新日期',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_sut_user_id`(`user_id`) USING BTREE, INDEX `idx_sut_user_id`(`user_id`) USING BTREE,
INDEX `idx_sut_tenant_id`(`tenant_id`) USING BTREE INDEX `idx_sut_tenant_id`(`tenant_id`) USING BTREE,
INDEX `uniq_sut_user_rel_tenant`(`user_id`, `tenant_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户租户关系表' ROW_FORMAT = DYNAMIC; ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户租户关系表' ROW_FORMAT = DYNAMIC;
-- ---------------------------- -- ----------------------------

View File

@ -11,7 +11,7 @@
Target Server Version : 110200 Target Server Version : 110200
File Encoding : 65001 File Encoding : 65001
Date: 07/03/2023 11:20:38 Date: 13/03/2023 10:26:56
*/ */
@ -1005,7 +1005,8 @@ CREATE TABLE "JEECGBOOT"."JIMU_REPORT_DATA_SOURCE" (
"UPDATE_BY" NVARCHAR2(50), "UPDATE_BY" NVARCHAR2(50),
"UPDATE_TIME" DATE, "UPDATE_TIME" DATE,
"CONNECT_TIMES" NUMBER(11,0), "CONNECT_TIMES" NUMBER(11,0),
"TENANT_ID" NVARCHAR2(10) "TENANT_ID" NVARCHAR2(10),
"TYPE" VARCHAR2(10 BYTE)
) )
LOGGING LOGGING
NOCOMPRESS NOCOMPRESS
@ -1037,13 +1038,14 @@ COMMENT ON COLUMN "JEECGBOOT"."JIMU_REPORT_DATA_SOURCE"."UPDATE_BY" IS '更新
COMMENT ON COLUMN "JEECGBOOT"."JIMU_REPORT_DATA_SOURCE"."UPDATE_TIME" IS '更新日期'; COMMENT ON COLUMN "JEECGBOOT"."JIMU_REPORT_DATA_SOURCE"."UPDATE_TIME" IS '更新日期';
COMMENT ON COLUMN "JEECGBOOT"."JIMU_REPORT_DATA_SOURCE"."CONNECT_TIMES" IS '连接失败次数'; COMMENT ON COLUMN "JEECGBOOT"."JIMU_REPORT_DATA_SOURCE"."CONNECT_TIMES" IS '连接失败次数';
COMMENT ON COLUMN "JEECGBOOT"."JIMU_REPORT_DATA_SOURCE"."TENANT_ID" IS '多租户标识'; COMMENT ON COLUMN "JEECGBOOT"."JIMU_REPORT_DATA_SOURCE"."TENANT_ID" IS '多租户标识';
COMMENT ON COLUMN "JEECGBOOT"."JIMU_REPORT_DATA_SOURCE"."TYPE" IS '类型(report:报表;drag:仪表盘)';
-- ---------------------------- -- ----------------------------
-- Records of JIMU_REPORT_DATA_SOURCE -- Records of JIMU_REPORT_DATA_SOURCE
-- ---------------------------- -- ----------------------------
INSERT INTO "JEECGBOOT"."JIMU_REPORT_DATA_SOURCE" VALUES ('1324261983692902402', 'jeewx', '1324261770294071296', NULL, NULL, 'MYSQL', 'com.mysql.jdbc.Driver', 'jdbc:mysql://127.0.0.1:3306/jeewx-boot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8', 'root', 'root', 'jeecg', TO_DATE('2020-11-05 16:07:15', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2020-11-05 16:07:15', 'SYYYY-MM-DD HH24:MI:SS'), '0', NULL); INSERT INTO "JEECGBOOT"."JIMU_REPORT_DATA_SOURCE" VALUES ('1324261983692902402', 'jeewx', '1324261770294071296', NULL, NULL, 'MYSQL', 'com.mysql.jdbc.Driver', 'jdbc:mysql://127.0.0.1:3306/jeewx-boot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8', 'root', 'root', 'jeecg', TO_DATE('2020-11-05 16:07:15', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2020-11-05 16:07:15', 'SYYYY-MM-DD HH24:MI:SS'), '0', NULL, 'report');
INSERT INTO "JEECGBOOT"."JIMU_REPORT_DATA_SOURCE" VALUES ('26d21fe4f27920d2f56abc8d90a8e527', 'oracle', '1308645288868712448', NULL, NULL, 'ORACLE', 'oracle.jdbc.OracleDriver', 'jdbc:oracle:thin:@192.168.1.199:1521:helowin', 'jeecgbootbpm', 'jeecg196283', 'admin', TO_DATE('2021-01-05 19:26:24', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-05 19:26:24', 'SYYYY-MM-DD HH24:MI:SS'), '0', NULL); INSERT INTO "JEECGBOOT"."JIMU_REPORT_DATA_SOURCE" VALUES ('26d21fe4f27920d2f56abc8d90a8e527', 'oracle', '1308645288868712448', NULL, NULL, 'ORACLE', 'oracle.jdbc.OracleDriver', 'jdbc:oracle:thin:@192.168.1.199:1521:helowin', 'jeecgbootbpm', 'jeecg196283', 'admin', TO_DATE('2021-01-05 19:26:24', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-05 19:26:24', 'SYYYY-MM-DD HH24:MI:SS'), '0', NULL, 'report');
INSERT INTO "JEECGBOOT"."JIMU_REPORT_DATA_SOURCE" VALUES ('8f90daf47d15d35ca6cf420748b8b9ba', 'localhost', '1316944968992034816', NULL, NULL, 'MYSQL5.7', 'com.mysql.cj.jdbc.Driver', 'jdbc:mysql://127.0.0.1:3306/jeecg-boot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8', 'root', 'root', 'admin', TO_DATE('2021-01-13 14:34:00', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-13 14:34:00', 'SYYYY-MM-DD HH24:MI:SS'), '0', NULL); INSERT INTO "JEECGBOOT"."JIMU_REPORT_DATA_SOURCE" VALUES ('8f90daf47d15d35ca6cf420748b8b9ba', 'localhost', '1316944968992034816', NULL, NULL, 'MYSQL5.7', 'com.mysql.cj.jdbc.Driver', 'jdbc:mysql://127.0.0.1:3306/jeecg-boot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8', 'root', 'root', 'admin', TO_DATE('2021-01-13 14:34:00', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-13 14:34:00', 'SYYYY-MM-DD HH24:MI:SS'), '0', NULL, 'report');
-- ---------------------------- -- ----------------------------
-- Table structure for JIMU_REPORT_DB -- Table structure for JIMU_REPORT_DB

View File

@ -12,7 +12,7 @@
Target Server Version : 15004188 Target Server Version : 15004188
File Encoding : 65001 File Encoding : 65001
Date: 07/03/2023 11:19:06 Date: 13/03/2023 10:11:30
*/ */
@ -2492,7 +2492,8 @@ CREATE TABLE [dbo].[jimu_report_data_source] (
[update_by] nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, [update_by] nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL,
[update_time] datetime2(7) NULL, [update_time] datetime2(7) NULL,
[connect_times] int NULL, [connect_times] int NULL,
[tenant_id] nvarchar(10) COLLATE Chinese_PRC_CI_AS NULL [tenant_id] nvarchar(10) COLLATE Chinese_PRC_CI_AS NULL,
[type] nvarchar(10) COLLATE Chinese_PRC_CI_AS NULL
) )
GO GO
@ -2604,17 +2605,24 @@ EXEC sp_addextendedproperty
'COLUMN', N'tenant_id' 'COLUMN', N'tenant_id'
GO GO
EXEC sp_addextendedproperty
'MS_Description', N'类型(report:报表;drag:仪表盘)',
'SCHEMA', N'dbo',
'TABLE', N'jimu_report_data_source',
'COLUMN', N'type'
GO
-- ---------------------------- -- ----------------------------
-- Records of jimu_report_data_source -- Records of jimu_report_data_source
-- ---------------------------- -- ----------------------------
INSERT INTO [dbo].[jimu_report_data_source] ([id], [name], [report_id], [code], [remark], [db_type], [db_driver], [db_url], [db_username], [db_password], [create_by], [create_time], [update_by], [update_time], [connect_times], [tenant_id]) VALUES (N'1324261983692902402', N'jeewx', N'1324261770294071296', N'', NULL, N'MYSQL', N'com.mysql.jdbc.Driver', N'jdbc:mysql://127.0.0.1:3306/jeewx-boot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8', N'root', N'root', N'jeecg', N'2020-11-05 16:07:15.0000000', NULL, N'2020-11-05 16:07:15.0000000', N'0', NULL) INSERT INTO [dbo].[jimu_report_data_source] ([id], [name], [report_id], [code], [remark], [db_type], [db_driver], [db_url], [db_username], [db_password], [create_by], [create_time], [update_by], [update_time], [connect_times], [tenant_id], [type]) VALUES (N'1324261983692902402', N'jeewx', N'1324261770294071296', N'', NULL, N'MYSQL', N'com.mysql.jdbc.Driver', N'jdbc:mysql://127.0.0.1:3306/jeewx-boot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8', N'root', N'root', N'jeecg', N'2020-11-05 16:07:15.0000000', NULL, N'2020-11-05 16:07:15.0000000', N'0', NULL, N'report')
GO GO
INSERT INTO [dbo].[jimu_report_data_source] ([id], [name], [report_id], [code], [remark], [db_type], [db_driver], [db_url], [db_username], [db_password], [create_by], [create_time], [update_by], [update_time], [connect_times], [tenant_id]) VALUES (N'26d21fe4f27920d2f56abc8d90a8e527', N'oracle', N'1308645288868712448', N'', NULL, N'ORACLE', N'oracle.jdbc.OracleDriver', N'jdbc:oracle:thin:@192.168.1.199:1521:helowin', N'jeecgbootbpm', N'jeecg196283', N'admin', N'2021-01-05 19:26:24.0000000', NULL, N'2021-01-05 19:26:24.0000000', N'0', NULL) INSERT INTO [dbo].[jimu_report_data_source] ([id], [name], [report_id], [code], [remark], [db_type], [db_driver], [db_url], [db_username], [db_password], [create_by], [create_time], [update_by], [update_time], [connect_times], [tenant_id], [type]) VALUES (N'26d21fe4f27920d2f56abc8d90a8e527', N'oracle', N'1308645288868712448', N'', NULL, N'ORACLE', N'oracle.jdbc.OracleDriver', N'jdbc:oracle:thin:@192.168.1.199:1521:helowin', N'jeecgbootbpm', N'jeecg196283', N'admin', N'2021-01-05 19:26:24.0000000', NULL, N'2021-01-05 19:26:24.0000000', N'0', NULL, N'report')
GO GO
INSERT INTO [dbo].[jimu_report_data_source] ([id], [name], [report_id], [code], [remark], [db_type], [db_driver], [db_url], [db_username], [db_password], [create_by], [create_time], [update_by], [update_time], [connect_times], [tenant_id]) VALUES (N'8f90daf47d15d35ca6cf420748b8b9ba', N'localhost', N'1316944968992034816', N'', NULL, N'MYSQL5.7', N'com.mysql.cj.jdbc.Driver', N'jdbc:mysql://127.0.0.1:3306/jeecg-boot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8', N'root', N'root', N'admin', N'2021-01-13 14:34:00.0000000', NULL, N'2021-01-13 14:34:00.0000000', N'0', NULL) INSERT INTO [dbo].[jimu_report_data_source] ([id], [name], [report_id], [code], [remark], [db_type], [db_driver], [db_url], [db_username], [db_password], [create_by], [create_time], [update_by], [update_time], [connect_times], [tenant_id], [type]) VALUES (N'8f90daf47d15d35ca6cf420748b8b9ba', N'localhost', N'1316944968992034816', N'', NULL, N'MYSQL5.7', N'com.mysql.cj.jdbc.Driver', N'jdbc:mysql://127.0.0.1:3306/jeecg-boot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8', N'root', N'root', N'admin', N'2021-01-13 14:34:00.0000000', NULL, N'2021-01-13 14:34:00.0000000', N'0', NULL, N'report')
GO GO

View File

@ -4,7 +4,7 @@
<parent> <parent>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-parent</artifactId> <artifactId>jeecg-boot-parent</artifactId>
<version>3.5.0</version> <version>3.5.1</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>
@ -186,7 +186,7 @@
</dependency> </dependency>
<!-- 代码生成器 --> <!-- 代码生成器 -->
<!-- 如下载失败,请参考此文档 http://doc.jeecg.com/2043876 --> <!-- 如下载失败,请参考此文档 https://help.jeecg.com/java/setup/maven.html -->
<dependency> <dependency>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<artifactId>codegenerate</artifactId> <artifactId>codegenerate</artifactId>

View File

@ -78,7 +78,7 @@ public interface CommonConstant {
/** 登录用户Shiro权限缓存KEY前缀 */ /** 登录用户Shiro权限缓存KEY前缀 */
public static String PREFIX_USER_SHIRO_CACHE = "shiro:cache:org.jeecg.config.shiro.ShiroRealm.authorizationCache:"; public static String PREFIX_USER_SHIRO_CACHE = "shiro:cache:org.jeecg.config.shiro.ShiroRealm.authorizationCache:";
/** 登录用户Token令牌缓存KEY前缀 */ /** 登录用户Token令牌缓存KEY前缀 */
String PREFIX_USER_TOKEN = "prefix_user_token_"; String PREFIX_USER_TOKEN = "prefix_user_token:";
// /** Token缓存时间3600秒即一小时 */ // /** Token缓存时间3600秒即一小时 */
// int TOKEN_EXPIRE_TIME = 3600; // int TOKEN_EXPIRE_TIME = 3600;

View File

@ -36,8 +36,8 @@ import org.jeecg.common.util.oConvertUtils;
**/ **/
public class JwtUtil { public class JwtUtil {
/**Token有效期为1小时Token在reids中缓存时间为两倍*/ /**Token有效期为24小时Token在reids中缓存时间乘以2*/
public static final long EXPIRE_TIME = 60 * 60 * 1000; public static final long EXPIRE_TIME = 12 * 60 * 60 * 1000;
static final String WELL_NUMBER = SymbolConstant.WELL_NUMBER + SymbolConstant.LEFT_CURLY_BRACKET; static final String WELL_NUMBER = SymbolConstant.WELL_NUMBER + SymbolConstant.LEFT_CURLY_BRACKET;
/** /**

View File

@ -40,7 +40,7 @@ public class ResourceUtil {
* 所有枚举java类 * 所有枚举java类
*/ */
private final static String CLASS_ENMU_PATTERN="/**/*Enum.class"; private final static String CLASS_ENUM_PATTERN="/**/*Enum.class";
/** /**
* 包路径 org.jeecg * 包路径 org.jeecg
@ -61,7 +61,7 @@ public class ResourceUtil {
return enumDictData; return enumDictData;
} }
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver(); ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
String pattern = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + ClassUtils.convertClassNameToResourcePath(BASE_PACKAGE) + CLASS_ENMU_PATTERN; String pattern = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + ClassUtils.convertClassNameToResourcePath(BASE_PACKAGE) + CLASS_ENUM_PATTERN;
try { try {
Resource[] resources = resourcePatternResolver.getResources(pattern); Resource[] resources = resourcePatternResolver.getResources(pattern);
MetadataReaderFactory readerFactory = new CachingMetadataReaderFactory(resourcePatternResolver); MetadataReaderFactory readerFactory = new CachingMetadataReaderFactory(resourcePatternResolver);

View File

@ -30,6 +30,11 @@ public class SqlInjectionUtil {
/**正则 show tables*/ /**正则 show tables*/
private final static String SHOW_TABLES = "show\\s+tables"; private final static String SHOW_TABLES = "show\\s+tables";
/**
* sleep函数
*/
private final static Pattern FUN_SLEEP = Pattern.compile("sleep\\([\\d\\.]*\\)");
/** /**
* sql注释的正则 * sql注释的正则
*/ */
@ -282,5 +287,13 @@ public class SqlInjectionUtil {
log.error(error); log.error(error);
throw new RuntimeException(error); throw new RuntimeException(error);
} }
// issues/4737 sys/duplicate/check SQL注入 #4737
Matcher sleepMatcher = FUN_SLEEP.matcher(str);
if(sleepMatcher.find()){
String error = "请注意值可能存在SQL注入风险---> sleep";
log.error(error);
throw new RuntimeException(error);
}
} }
} }

View File

@ -1,19 +1,19 @@
package org.jeecg.common.util.filter; package org.jeecg.common.util.filter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream; import java.io.InputStream;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** /**
* @Description: 校验上传文件敏感后缀 * @Description: 校验上传文件敏感后缀
* @author: lsq * @author: lsq
* @date: 2021年08月09日 15:29 * @date: 2021年08月09日 15:29
*/ */
@Slf4j
public class FileTypeFilter { public class FileTypeFilter {
/**文件后缀*/ /**文件后缀*/
@ -112,8 +112,9 @@ public class FileTypeFilter {
*/ */
private static String getFileType(MultipartFile file) throws Exception { private static String getFileType(MultipartFile file) throws Exception {
//update-begin-author:liusq date:20230404 for: [issue/4672]方法造成的文件被占用注释掉此方法tomcat就能自动清理掉临时文件
String fileExtendName = null; String fileExtendName = null;
InputStream is; InputStream is = null;
try { try {
//is = new FileInputStream(file); //is = new FileInputStream(file);
is = file.getInputStream(); is = file.getInputStream();
@ -130,16 +131,29 @@ public class FileTypeFilter {
break; break;
} }
} }
log.info("-----获取到的指定文件类型------"+fileExtendName);
// 如果不是上述类型,则判断扩展名 // 如果不是上述类型,则判断扩展名
if (StringUtils.isBlank(fileExtendName)) { if (StringUtils.isBlank(fileExtendName)) {
String fileName = file.getOriginalFilename(); String fileName = file.getOriginalFilename();
// 如果无扩展名,则直接返回空串
if (-1 == fileName.indexOf(".")) {
return "";
}
// 如果有扩展名,则返回扩展名
return getFileTypeBySuffix(fileName); return getFileTypeBySuffix(fileName);
} }
log.info("-----最終的文件类型------"+fileExtendName);
is.close(); is.close();
return fileExtendName; return fileExtendName;
} catch (Exception exception) { } catch (Exception e) {
throw new Exception(exception.getMessage(), exception); log.error(e.getMessage(), e);
return "";
}finally {
if (is != null) {
is.close();
}
} }
//update-end-author:liusq date:20230404 for: [issue/4672]方法造成的文件被占用注释掉此方法tomcat就能自动清理掉临时文件
} }
/** /**

View File

@ -1,5 +1,6 @@
package org.jeecg.common.util; package org.jeecg.common.util;
import com.alibaba.fastjson.JSONArray;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.CommonConstant;
@ -86,7 +87,7 @@ public class oConvertUtils {
} }
public static int getInt(String s, int defval) { public static int getInt(String s, int defval) {
if (s == null || s == "") { if (s == null || "".equals(s)) {
return (defval); return (defval);
} }
try { try {
@ -97,7 +98,7 @@ public class oConvertUtils {
} }
public static int getInt(String s) { public static int getInt(String s) {
if (s == null || s == "") { if (s == null || "".equals(s)) {
return 0; return 0;
} }
try { try {
@ -108,7 +109,7 @@ public class oConvertUtils {
} }
public static int getInt(String s, Integer df) { public static int getInt(String s, Integer df) {
if (s == null || s == "") { if (s == null || "".equals(s)) {
return df; return df;
} }
try { try {
@ -131,7 +132,7 @@ public class oConvertUtils {
} }
public static double getDouble(String s, double defval) { public static double getDouble(String s, double defval) {
if (s == null || s == "") { if (s == null || "".equals(s)) {
return (defval); return (defval);
} }
try { try {
@ -353,23 +354,63 @@ public class oConvertUtils {
/** /**
* 判断元素是否在数组内 * 判断元素是否在数组内
* *
* @param substring * @param child
* @param source * @param all
* @return * @return
*/ */
public static boolean isIn(String substring, String[] source) { public static boolean isIn(String child, String[] all) {
if (source == null || source.length == 0) { if (all == null || all.length == 0) {
return false; return false;
} }
for (int i = 0; i < source.length; i++) { for (int i = 0; i < all.length; i++) {
String aSource = source[i]; String aSource = all[i];
if (aSource.equals(substring)) { if (aSource.equals(child)) {
return true; return true;
} }
} }
return false; return false;
} }
/**
* 判断元素是否在数组内
*
* @param childArray
* @param all
* @return
*/
public static boolean isArrayIn(String[] childArray, String[] all) {
if (all == null || all.length == 0) {
return false;
}
for (String v : childArray) {
if (!isIn(v, all)) {
return false;
}
}
return true;
}
/**
* 判断元素是否在数组内
*
* @param childArray
* @param all
* @return
*/
public static boolean isJsonArrayIn(JSONArray childArray, String[] all) {
if (all == null || all.length == 0) {
return false;
}
String[] childs = childArray.toArray(new String[]{});
for (String v : childs) {
if (!isIn(v, all)) {
return false;
}
}
return true;
}
/** /**
* 获取Map对象 * 获取Map对象
*/ */
@ -649,6 +690,95 @@ public class oConvertUtils {
return (list == null || list.size() == 0); return (list == null || list.size() == 0);
} }
/**
* 判断旧值与新值 是否相等
*
* @param oldVal
* @param newVal
* @return
*/
public static boolean isEqual(Object oldVal, Object newVal) {
if (oldVal != null && newVal != null) {
if (isArray(oldVal)) {
return equalityOfArrays((Object[]) oldVal, (Object[]) newVal);
}else if(oldVal instanceof JSONArray){
return equalityOfJSONArray((JSONArray) oldVal, (JSONArray) newVal);
}
return oldVal.equals(newVal);
} else {
if (oldVal == null && newVal == null) {
return true;
} else {
return false;
}
}
}
/**
* 方法描述 判断一个对象是否是一个数组
*
* @param obj
* @return
* @author yaomy
* @date 2018年2月5日 下午5:03:00
*/
public static boolean isArray(Object obj) {
if (obj == null) {
return false;
}
return obj.getClass().isArray();
}
/**
* 判断两个数组是否相等(数组元素不分顺序)
*
* @param oldVal
* @param newVal
* @return
*/
public static boolean equalityOfJSONArray(JSONArray oldVal, JSONArray newVal) {
if (oldVal != null && newVal != null) {
Object[] oldValArray = oldVal.toArray();
Object[] newValArray = newVal.toArray();
return equalityOfArrays(oldValArray,newValArray);
} else {
if (oldVal == null && newVal == null) {
return true;
} else {
return false;
}
}
}
/**
* 判断两个数组是否相等(数组元素不分顺序)
*
* @param oldVal
* @param newVal
* @return
*/
public static boolean equalityOfArrays(Object[] oldVal, Object newVal[]) {
if (oldVal != null && newVal != null) {
Arrays.sort(oldVal);
Arrays.sort(newVal);
return Arrays.equals(oldVal, newVal);
} else {
if (oldVal == null && newVal == null) {
return true;
} else {
return false;
}
}
}
// public static void main(String[] args) {
//// String[] a = new String[]{"1", "2"};
//// String[] b = new String[]{"2", "1"};
// Integer a = null;
// Integer b = 1;
// System.out.println(oConvertUtils.isEqual(a, b));
// }
/** /**
* 判断 list 是否不为空 * 判断 list 是否不为空
* *

View File

@ -54,13 +54,13 @@ public class MybatisPlusSaasConfig {
//1.需要租户隔离的表请在此配置 //1.需要租户隔离的表请在此配置
if (MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL) { if (MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL) {
//a.系统管理表 //a.系统管理表
TENANT_TABLE.add("sys_role"); //TENANT_TABLE.add("sys_role");
TENANT_TABLE.add("sys_user_role"); //TENANT_TABLE.add("sys_user_role");
TENANT_TABLE.add("sys_depart"); TENANT_TABLE.add("sys_depart");
TENANT_TABLE.add("sys_category"); TENANT_TABLE.add("sys_category");
TENANT_TABLE.add("sys_data_source"); TENANT_TABLE.add("sys_data_source");
TENANT_TABLE.add("sys_position"); TENANT_TABLE.add("sys_position");
TENANT_TABLE.add("sys_announcement"); //TENANT_TABLE.add("sys_announcement");
} }
//2.示例测试 //2.示例测试

View File

@ -11,6 +11,7 @@ import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection; import org.apache.shiro.subject.PrincipalCollection;
import org.jeecg.common.api.CommonAPI; import org.jeecg.common.api.CommonAPI;
import org.jeecg.common.config.TenantContext; import org.jeecg.common.config.TenantContext;
import org.jeecg.common.constant.CacheConstant;
import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.system.util.JwtUtil;
import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.system.vo.LoginUser;
@ -148,9 +149,27 @@ public class ShiroRealm extends AuthorizingRealm {
//update-begin-author:taoyan date:20211227 for: /issues/I4O14W 用户租户信息变更判断漏洞 //update-begin-author:taoyan date:20211227 for: /issues/I4O14W 用户租户信息变更判断漏洞
String[] arr = userTenantIds.split(","); String[] arr = userTenantIds.split(",");
if(!oConvertUtils.isIn(contextTenantId, arr)){ if(!oConvertUtils.isIn(contextTenantId, arr)){
log.info("租户异常——登录租户:" + contextTenantId); boolean isAuthorization = false;
log.info("租户异常——用户拥有租户组:" + userTenantIds); //========================================================================
throw new AuthenticationException("登录租户授权变更,请重新登陆!"); // 查询用户信息(如果租户不匹配从数据库中重新查询一次用户信息)
String loginUserKey = CacheConstant.SYS_USERS_CACHE + "::" + username;
redisUtil.del(loginUserKey);
LoginUser loginUserFromDb = commonApi.getUserByName(username);
if (oConvertUtils.isNotEmpty(loginUserFromDb.getRelTenantIds())) {
String[] newArray = loginUserFromDb.getRelTenantIds().split(",");
if (oConvertUtils.isIn(contextTenantId, newArray)) {
isAuthorization = true;
}
}
//========================================================================
//*********************************************
if(!isAuthorization){
log.info("租户异常——登录租户:" + contextTenantId);
log.info("租户异常——用户拥有租户组:" + userTenantIds);
throw new AuthenticationException("登录租户授权变更,请重新登陆!");
}
//*********************************************
} }
//update-end-author:taoyan date:20211227 for: /issues/I4O14W 用户租户信息变更判断漏洞 //update-end-author:taoyan date:20211227 for: /issues/I4O14W 用户租户信息变更判断漏洞
} }

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-boot-parent</artifactId> <artifactId>jeecg-boot-parent</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-system-api</artifactId> <artifactId>jeecg-system-api</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-system-api</artifactId> <artifactId>jeecg-system-api</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-module-system</artifactId> <artifactId>jeecg-module-system</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -4,7 +4,7 @@
<parent> <parent>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-module-system</artifactId> <artifactId>jeecg-module-system</artifactId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -9,7 +9,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.authz.annotation.RequiresRoles;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.config.TenantContext; import org.jeecg.common.config.TenantContext;
import org.jeecg.common.constant.CacheConstant; import org.jeecg.common.constant.CacheConstant;
@ -19,10 +18,7 @@ import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.vo.DictModel; import org.jeecg.common.system.vo.DictModel;
import org.jeecg.common.system.vo.DictQuery; import org.jeecg.common.system.vo.DictQuery;
import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.ImportExcelUtil; import org.jeecg.common.util.*;
import org.jeecg.common.util.SqlInjectionUtil;
import org.jeecg.common.util.TokenUtils;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.config.mybatis.MybatisPlusSaasConfig; import org.jeecg.config.mybatis.MybatisPlusSaasConfig;
import org.jeecg.modules.system.entity.SysDict; import org.jeecg.modules.system.entity.SysDict;
import org.jeecg.modules.system.entity.SysDictItem; import org.jeecg.modules.system.entity.SysDictItem;
@ -73,6 +69,8 @@ public class SysDictController {
public RedisTemplate<String, Object> redisTemplate; public RedisTemplate<String, Object> redisTemplate;
@Autowired @Autowired
private DictQueryBlackListHandler dictQueryBlackListHandler; private DictQueryBlackListHandler dictQueryBlackListHandler;
@Autowired
private RedisUtil redisUtil;
@RequestMapping(value = "/list", method = RequestMethod.GET) @RequestMapping(value = "/list", method = RequestMethod.GET)
public Result<IPage<SysDict>> queryPageList(SysDict sysDict,@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, public Result<IPage<SysDict>> queryPageList(SysDict sysDict,@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@ -459,22 +457,33 @@ public class SysDictController {
public Result<?> refleshCache() { public Result<?> refleshCache() {
Result<?> result = new Result<SysDict>(); Result<?> result = new Result<SysDict>();
//清空字典缓存 //清空字典缓存
Set keys = redisTemplate.keys(CacheConstant.SYS_DICT_CACHE + "*"); // Set keys = redisTemplate.keys(CacheConstant.SYS_DICT_CACHE + "*");
Set keys7 = redisTemplate.keys(CacheConstant.SYS_ENABLE_DICT_CACHE + "*"); // Set keys7 = redisTemplate.keys(CacheConstant.SYS_ENABLE_DICT_CACHE + "*");
Set keys2 = redisTemplate.keys(CacheConstant.SYS_DICT_TABLE_CACHE + "*"); // Set keys2 = redisTemplate.keys(CacheConstant.SYS_DICT_TABLE_CACHE + "*");
Set keys21 = redisTemplate.keys(CacheConstant.SYS_DICT_TABLE_BY_KEYS_CACHE + "*"); // Set keys21 = redisTemplate.keys(CacheConstant.SYS_DICT_TABLE_BY_KEYS_CACHE + "*");
Set keys3 = redisTemplate.keys(CacheConstant.SYS_DEPARTS_CACHE + "*"); // Set keys3 = redisTemplate.keys(CacheConstant.SYS_DEPARTS_CACHE + "*");
Set keys4 = redisTemplate.keys(CacheConstant.SYS_DEPART_IDS_CACHE + "*"); // Set keys4 = redisTemplate.keys(CacheConstant.SYS_DEPART_IDS_CACHE + "*");
Set keys5 = redisTemplate.keys( "jmreport:cache:dict*"); // Set keys5 = redisTemplate.keys( "jmreport:cache:dict*");
Set keys6 = redisTemplate.keys( "jmreport:cache:dictTable*"); // Set keys6 = redisTemplate.keys( "jmreport:cache:dictTable*");
redisTemplate.delete(keys); // redisTemplate.delete(keys);
redisTemplate.delete(keys2); // redisTemplate.delete(keys2);
redisTemplate.delete(keys21); // redisTemplate.delete(keys21);
redisTemplate.delete(keys3); // redisTemplate.delete(keys3);
redisTemplate.delete(keys4); // redisTemplate.delete(keys4);
redisTemplate.delete(keys5); // redisTemplate.delete(keys5);
redisTemplate.delete(keys6); // redisTemplate.delete(keys6);
redisTemplate.delete(keys7); // redisTemplate.delete(keys7);
//update-begin-author:liusq date:20230404 for: [issue/4358]springCache中的清除缓存的操作使用了“keys”
redisUtil.removeAll(CacheConstant.SYS_DICT_CACHE);
redisUtil.removeAll(CacheConstant.SYS_ENABLE_DICT_CACHE);
redisUtil.removeAll(CacheConstant.SYS_DICT_TABLE_CACHE);
redisUtil.removeAll(CacheConstant.SYS_DICT_TABLE_BY_KEYS_CACHE);
redisUtil.removeAll(CacheConstant.SYS_DEPARTS_CACHE);
redisUtil.removeAll(CacheConstant.SYS_DEPART_IDS_CACHE);
redisUtil.removeAll("jmreport:cache:dict");
redisUtil.removeAll("jmreport:cache:dictTable");
//update-end-author:liusq date:20230404 for: [issue/4358]springCache中的清除缓存的操作使用了“keys”
return result; return result;
} }

View File

@ -1,5 +1,6 @@
package org.jeecg.modules.system.controller; package org.jeecg.modules.system.controller;
import cn.hutool.core.util.RandomUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -19,6 +20,7 @@ import org.jeecg.common.util.oConvertUtils;
import org.jeecg.config.mybatis.MybatisPlusSaasConfig; import org.jeecg.config.mybatis.MybatisPlusSaasConfig;
import org.jeecg.modules.system.entity.SysPosition; import org.jeecg.modules.system.entity.SysPosition;
import org.jeecg.modules.system.service.ISysPositionService; import org.jeecg.modules.system.service.ISysPositionService;
import org.jeecg.modules.system.service.ISysUserService;
import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ExportParams;
@ -39,6 +41,7 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* @Description: 职务表 * @Description: 职务表
@ -55,6 +58,9 @@ public class SysPositionController {
@Autowired @Autowired
private ISysPositionService sysPositionService; private ISysPositionService sysPositionService;
@Autowired
private ISysUserService userService;
/** /**
* 分页列表查询 * 分页列表查询
* *
@ -98,6 +104,13 @@ public class SysPositionController {
public Result<SysPosition> add(@RequestBody SysPosition sysPosition) { public Result<SysPosition> add(@RequestBody SysPosition sysPosition) {
Result<SysPosition> result = new Result<SysPosition>(); Result<SysPosition> result = new Result<SysPosition>();
try { try {
//update-begin---author:wangshuai ---date:20230313 for【QQYUN-4558】vue3职位功能调整去掉编码和级别可以先隐藏------------
//编号是空的,不需要判断多租户隔离了
if(oConvertUtils.isEmpty(sysPosition.getCode())){
//生成职位编码10位
sysPosition.setCode(RandomUtil.randomString(10));
}
//update-end---author:wangshuai ---date:20230313 for【QQYUN-4558】vue3职位功能调整去掉编码和级别可以先隐藏-------------
sysPositionService.save(sysPosition); sysPositionService.save(sysPosition);
result.success("添加成功!"); result.success("添加成功!");
} catch (Exception e) { } catch (Exception e) {

View File

@ -12,6 +12,7 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.PermissionData; import org.jeecg.common.aspect.annotation.PermissionData;
import org.jeecg.common.config.TenantContext; import org.jeecg.common.config.TenantContext;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.SymbolConstant; import org.jeecg.common.constant.SymbolConstant;
import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.system.vo.LoginUser;
@ -19,6 +20,7 @@ import org.jeecg.common.util.PasswordUtil;
import org.jeecg.common.util.TokenUtils; import org.jeecg.common.util.TokenUtils;
import org.jeecg.common.util.oConvertUtils; import org.jeecg.common.util.oConvertUtils;
import org.jeecg.config.mybatis.MybatisPlusSaasConfig; import org.jeecg.config.mybatis.MybatisPlusSaasConfig;
import org.jeecg.modules.base.service.BaseCommonService;
import org.jeecg.modules.system.entity.*; import org.jeecg.modules.system.entity.*;
import org.jeecg.modules.system.service.ISysTenantPackService; import org.jeecg.modules.system.service.ISysTenantPackService;
import org.jeecg.modules.system.service.ISysTenantService; import org.jeecg.modules.system.service.ISysTenantService;
@ -55,6 +57,9 @@ public class SysTenantController {
@Autowired @Autowired
private ISysTenantPackService sysTenantPackService; private ISysTenantPackService sysTenantPackService;
@Autowired
private BaseCommonService baseCommonService;
/** /**
* 获取列表数据 * 获取列表数据
@ -67,8 +72,8 @@ public class SysTenantController {
//@RequiresPermissions("system:tenant:list") //@RequiresPermissions("system:tenant:list")
@PermissionData(pageComponent = "system/TenantList") @PermissionData(pageComponent = "system/TenantList")
@RequestMapping(value = "/list", method = RequestMethod.GET) @RequestMapping(value = "/list", method = RequestMethod.GET)
public Result<IPage<SysTenant>> queryPageList(SysTenant sysTenant,@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, public Result<IPage<SysTenant>> queryPageList(SysTenant sysTenant, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,HttpServletRequest req) { @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) {
Result<IPage<SysTenant>> result = new Result<IPage<SysTenant>>(); Result<IPage<SysTenant>> result = new Result<IPage<SysTenant>>();
//---author:zhangyafei---date:20210916-----for: 租户管理添加日期范围查询--- //---author:zhangyafei---date:20210916-----for: 租户管理添加日期范围查询---
Date beginDate=null; Date beginDate=null;
@ -104,8 +109,8 @@ public class SysTenantController {
*/ */
@GetMapping("/recycleBinPageList") @GetMapping("/recycleBinPageList")
//@RequiresPermissions("system:tenant:recycleBinPageList") //@RequiresPermissions("system:tenant:recycleBinPageList")
public Result<IPage<SysTenant>> recycleBinPageList(SysTenant sysTenant,@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, public Result<IPage<SysTenant>> recycleBinPageList(SysTenant sysTenant, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,HttpServletRequest req){ @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req){
Result<IPage<SysTenant>> result = new Result<IPage<SysTenant>>(); Result<IPage<SysTenant>> result = new Result<IPage<SysTenant>>();
Page<SysTenant> page = new Page<SysTenant>(pageNo, pageSize); Page<SysTenant> page = new Page<SysTenant>(pageNo, pageSize);
IPage<SysTenant> pageList = sysTenantService.getRecycleBinPageList(page, sysTenant); IPage<SysTenant> pageList = sysTenantService.getRecycleBinPageList(page, sysTenant);
@ -167,6 +172,22 @@ public class SysTenantController {
//@RequiresPermissions("system:tenant:delete") //@RequiresPermissions("system:tenant:delete")
@RequestMapping(value = "/delete", method ={RequestMethod.DELETE, RequestMethod.POST}) @RequestMapping(value = "/delete", method ={RequestMethod.DELETE, RequestMethod.POST})
public Result<?> delete(@RequestParam(name="id",required=true) String id) { public Result<?> delete(@RequestParam(name="id",required=true) String id) {
//------------------------------------------------------------------
//如果是saas隔离的情况下判断当前租户id是否是当前租户下的
if (MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL) {
//获取当前用户
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
SysTenant sysTenant = sysTenantService.getById(id);
String username = "admin";
String createdBy = sysUser.getUsername();
if (!sysTenant.getCreateBy().equals(createdBy) && !username.equals(createdBy)) {
baseCommonService.addLog("未经授权不能删除非自己创建的租户租户ID" + id + ",操作人:" + sysUser.getUsername(), CommonConstant.LOG_TYPE_2, CommonConstant.OPERATE_TYPE_3);
return Result.error("删除租户失败,当前操作人不是租户的创建人!");
}
}
//------------------------------------------------------------------
sysTenantService.removeTenantById(id); sysTenantService.removeTenantById(id);
return Result.ok("删除成功"); return Result.ok("删除成功");
} }
@ -187,6 +208,22 @@ public class SysTenantController {
// 过滤掉已被引用的租户 // 过滤掉已被引用的租户
List<Integer> idList = new ArrayList<>(); List<Integer> idList = new ArrayList<>();
for (String id : ls) { for (String id : ls) {
//------------------------------------------------------------------
//如果是saas隔离的情况下判断当前租户id是否是当前租户下的
if (MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL) {
//获取当前用户
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
SysTenant sysTenant = sysTenantService.getById(id);
String username = "admin";
String createdBy = sysUser.getUsername();
if (!sysTenant.getCreateBy().equals(createdBy) && !username.equals(createdBy)) {
baseCommonService.addLog("未经授权不能删除非自己创建的租户租户ID" + id + ",操作人:" + sysUser.getUsername(), CommonConstant.LOG_TYPE_2, CommonConstant.OPERATE_TYPE_3);
return Result.error("删除租户失败,当前操作人不是租户的创建人!");
}
}
//------------------------------------------------------------------
Long userCount = sysTenantService.countUserLinkTenant(id); Long userCount = sysTenantService.countUserLinkTenant(id);
if (userCount == 0) { if (userCount == 0) {
idList.add(Integer.parseInt(id)); idList.add(Integer.parseInt(id));
@ -218,8 +255,10 @@ public class SysTenantController {
result.error500("参数为空!"); result.error500("参数为空!");
} }
//------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------
//是否开启系统管理模块的多租户数据隔离【SAAS多租户模式】 //获取登录用户信息
if(MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL){ LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
//是否开启系统管理模块的多租户数据隔离【SAAS多租户模式】, admin给特权可以管理所有租户
if(MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL && !"admin".equals(sysUser.getUsername())){
Integer loginSessionTenant = oConvertUtils.getInt(TenantContext.getTenant()); Integer loginSessionTenant = oConvertUtils.getInt(TenantContext.getTenant());
if(loginSessionTenant!=null && !loginSessionTenant.equals(Integer.valueOf(id))){ if(loginSessionTenant!=null && !loginSessionTenant.equals(Integer.valueOf(id))){
result.error500("无权限访问他人租户!"); result.error500("无权限访问他人租户!");
@ -355,13 +394,13 @@ public class SysTenantController {
/** /**
* 邀请用户【低代码应用专用接口】 * 邀请用户【低代码应用专用接口】
* @param ids * @param ids
* @param userIds * @param phone
* @return * @return
*/ */
@PutMapping("/invitationUserJoin") @PutMapping("/invitationUserJoin")
//@RequiresPermissions("system:tenant:invitation:user") //@RequiresPermissions("system:tenant:invitation:user")
public Result<String> invitationUserJoin(@RequestParam("ids") String ids,@RequestParam("userIds") String userIds){ public Result<String> invitationUserJoin(@RequestParam("ids") String ids, @RequestParam("phone") String phone){
sysTenantService.invitationUserJoin(ids,userIds); sysTenantService.invitationUserJoin(ids,phone);
return Result.ok("邀请用户成功"); return Result.ok("邀请用户成功");
} }
@ -400,7 +439,8 @@ public class SysTenantController {
@RequestParam("tenantId") String tenantId){ @RequestParam("tenantId") String tenantId){
Result<String> result = new Result<>(); Result<String> result = new Result<>();
//是否开启系统管理模块的多租户数据隔离【SAAS多租户模式】 //是否开启系统管理模块的多租户数据隔离【SAAS多租户模式】
if(MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL){ LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL && !"admin".equals(sysUser.getUsername())){
Integer loginSessionTenant = oConvertUtils.getInt(TenantContext.getTenant()); Integer loginSessionTenant = oConvertUtils.getInt(TenantContext.getTenant());
if(loginSessionTenant!=null && !loginSessionTenant.equals(Integer.valueOf(tenantId))){ if(loginSessionTenant!=null && !loginSessionTenant.equals(Integer.valueOf(tenantId))){
result.error500("无权限访问他人租户!"); result.error500("无权限访问他人租户!");
@ -417,7 +457,7 @@ public class SysTenantController {
* @return * @return
*/ */
@RequestMapping(value = "/editOwnTenant", method ={RequestMethod.PUT, RequestMethod.POST}) @RequestMapping(value = "/editOwnTenant", method ={RequestMethod.PUT, RequestMethod.POST})
public Result<SysTenant> editOwnTenant(@RequestBody SysTenant tenant,HttpServletRequest req) { public Result<SysTenant> editOwnTenant(@RequestBody SysTenant tenant, HttpServletRequest req) {
Result<SysTenant> result = new Result(); Result<SysTenant> result = new Result();
String tenantId = TokenUtils.getTenantIdByRequest(req); String tenantId = TokenUtils.getTenantIdByRequest(req);
if(!tenantId.equals(tenant.getId().toString())){ if(!tenantId.equals(tenant.getId().toString())){
@ -556,14 +596,14 @@ public class SysTenantController {
*/ */
@PutMapping("/cancelTenant") @PutMapping("/cancelTenant")
//@RequiresPermissions("system:tenant:cancelTenant") //@RequiresPermissions("system:tenant:cancelTenant")
public Result<String> cancelTenant(@RequestBody SysTenant sysTenant,HttpServletRequest request) { public Result<String> cancelTenant(@RequestBody SysTenant sysTenant, HttpServletRequest request) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
SysTenant tenant = sysTenantService.getById(sysTenant.getId()); SysTenant tenant = sysTenantService.getById(sysTenant.getId());
if (null == tenant) { if (null == tenant) {
return Result.error("未找到当前租户信息"); return Result.error("未找到当前租户信息");
} }
if (!sysUser.getUsername().equals(tenant.getCreateBy())) { if (!sysUser.getUsername().equals(tenant.getCreateBy())) {
return Result.error("没有权限"); return Result.error("无权限,只能注销自己创建的租户!");
} }
SysUser userById = sysUserService.getById(sysUser.getId()); SysUser userById = sysUserService.getById(sysUser.getId());
String loginPassword = request.getParameter("loginPassword"); String loginPassword = request.getParameter("loginPassword");
@ -638,7 +678,7 @@ public class SysTenantController {
* @return * @return
*/ */
@DeleteMapping("/exitUserTenant") @DeleteMapping("/exitUserTenant")
public Result<String> exitUserTenant(@RequestBody SysTenant sysTenant,HttpServletRequest request){ public Result<String> exitUserTenant(@RequestBody SysTenant sysTenant, HttpServletRequest request){
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
//验证用户是否已存在 //验证用户是否已存在
Integer count = relationService.userTenantIzExist(sysUser.getId(),sysTenant.getId()); Integer count = relationService.userTenantIzExist(sysUser.getId(),sysTenant.getId());
@ -797,4 +837,24 @@ public class SysTenantController {
TenantDepartAuthInfo info = sysTenantService.getTenantDepartAuthInfo(Integer.parseInt(id)); TenantDepartAuthInfo info = sysTenantService.getTenantDepartAuthInfo(Integer.parseInt(id));
return Result.ok(info); return Result.ok(info);
} }
/**
* 获取产品包下的用户列表(分页)
* @param tenantId
* @param packId
* @param status
* @param pageNo
* @param pageSize
* @return
*/
@GetMapping("/queryTenantPackUserList")
public Result<IPage<TenantPackUser>> queryTenantPackUserList(@RequestParam("tenantId") String tenantId,
@RequestParam("packId") String packId,
@RequestParam("status") Integer status,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
Page<TenantPackUser> page = new Page<>(pageNo,pageSize);
IPage<TenantPackUser> pageList = sysTenantService.queryTenantPackUserList(tenantId,packId,status,page);
return Result.ok(pageList);
}
} }

View File

@ -167,7 +167,7 @@ public class SysUserController {
user.setOrgCode(null); user.setOrgCode(null);
// 保存用户走一个service 保证事务 // 保存用户走一个service 保证事务
//获取租户ids //获取租户ids
String relTenantIds = jsonObject.getString("realTenantIds"); String relTenantIds = jsonObject.getString("relTenantIds");
sysUserService.saveUser(user, selectedRoles, selectedDeparts, relTenantIds); sysUserService.saveUser(user, selectedRoles, selectedDeparts, relTenantIds);
baseCommonService.addLog("添加用户username " +user.getUsername() ,CommonConstant.LOG_TYPE_2, 2); baseCommonService.addLog("添加用户username " +user.getUsername() ,CommonConstant.LOG_TYPE_2, 2);
result.success("添加成功!"); result.success("添加成功!");
@ -1013,7 +1013,7 @@ public class SysUserController {
user.setStatus(CommonConstant.USER_UNFREEZE); user.setStatus(CommonConstant.USER_UNFREEZE);
user.setDelFlag(CommonConstant.DEL_FLAG_0); user.setDelFlag(CommonConstant.DEL_FLAG_0);
user.setActivitiSync(CommonConstant.ACT_SYNC_0); user.setActivitiSync(CommonConstant.ACT_SYNC_0);
sysUserService.addUserWithRole(user,"ee8626f80f7c2619917b6236f3a7f02b");//默认临时角色 test sysUserService.addUserWithRole(user,null);
result.success("注册成功"); result.success("注册成功");
} catch (Exception e) { } catch (Exception e) {
result.error500("注册失败"); result.error500("注册失败");

View File

@ -91,4 +91,14 @@ public interface SysTenantMapper extends BaseMapper<SysTenant> {
* @return * @return
*/ */
List<UserPosition> queryUserPositionList(@Param("userIdList") List<String> userIdList); List<UserPosition> queryUserPositionList(@Param("userIdList") List<String> userIdList);
/**
* 查询产品包关联的用户列表
* @param page
* @param tenantId
* @param packId
* @param status
* @return
*/
List<TenantPackUser> queryTenantPackUserList(@Param("page") Page<TenantPackUser> page, @Param("tenantId") String tenantId, @Param("packId") String packId, @Param("status") Integer status);
} }

View File

@ -1,10 +1,7 @@
package org.jeecg.modules.system.mapper; package org.jeecg.modules.system.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.system.entity.SysTenantPack;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.system.entity.SysTenantPack;
/** /**
* @Description: 租户产品包 * @Description: 租户产品包

View File

@ -68,6 +68,21 @@
) )
and p.del_flag = 0 and p.del_flag = 0
<!--update end Author:lvdandan Date:20200213 for加入部门权限 --> <!--update end Author:lvdandan Date:20200213 for加入部门权限 -->
<!-- update begin Author: taoyan Date:20200213 forQQYUN-4303 【low app】 用户登录的时候 加载low app的套餐权限 加到用户信息 -->
UNION
SELECT p.*
FROM sys_permission p
WHERE exists(
select a.id from sys_tenant_pack_perms a
join sys_tenant_pack b on a.pack_id = b.id
join sys_tenant_pack_user c on c.pack_id = b.id
join sys_user d on d.id = c.user_id
where p.id = a.permission_id AND d.username = #{username,jdbcType=VARCHAR}
)
and p.del_flag = 0
<!-- update end Author: taoyan Date:20200213 forQQYUN-4303 【low app】 用户登录的时候 加载low app的套餐权限 加到用户信息 -->
) h order by h.sort_no ASC ) h order by h.sort_no ASC
</select> </select>

View File

@ -100,7 +100,7 @@
<select id="queryUserPositionList" resultType="org.jeecg.modules.system.vo.tenant.UserPosition"> <select id="queryUserPositionList" resultType="org.jeecg.modules.system.vo.tenant.UserPosition">
SELECT c.id as user_id, name as position_name FROM sys_user c SELECT c.id as user_id, name as position_name FROM sys_user c
join sys_user_position b on c.id = b.user_id join sys_user_position b on c.id = b.user_id
join sys_position a on a.code = b.position_code join sys_position a on a.id = b.position_id
where c.status = 1 and c.del_flag = 0 where c.status = 1 and c.del_flag = 0
and c.id in and c.id in
<foreach collection="userIdList" index="index" item="id" open="(" separator="," close=")"> <foreach collection="userIdList" index="index" item="id" open="(" separator="," close=")">
@ -108,5 +108,18 @@
</foreach> </foreach>
</select> </select>
<!--获取租户产品包用户列表-->
<select id="queryTenantPackUserList" resultType="org.jeecg.modules.system.vo.tenant.TenantPackUser">
SELECT c.id, c.username, c.realname, c.phone, c.avatar, a.pack_name, a.id as pack_id FROM sys_user c
join sys_tenant_pack_user b on c.id = b.user_id
join sys_tenant_pack a on a.id = b.pack_id
where c.status = 1
and c.del_flag = 0
and b.status = #{status}
and a.tenant_id = #{tenantId}
<if test="packId!='' and packId!=null">
and a.id = #{packId}
</if>
</select>
</mapper> </mapper>

View File

@ -1,7 +1,7 @@
package org.jeecg.modules.system.service; package org.jeecg.modules.system.service;
import org.jeecg.modules.system.entity.SysTenantPack;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.system.entity.SysTenantPack;
import org.jeecg.modules.system.entity.SysTenantPackUser; import org.jeecg.modules.system.entity.SysTenantPackUser;
import java.util.List; import java.util.List;
@ -71,5 +71,5 @@ public interface ISysTenantPackService extends IService<SysTenantPack> {
* @param packCode * @param packCode
* @return * @return
*/ */
SysTenantPack getSysTenantPack(Integer tenantId ,String packCode); SysTenantPack getSysTenantPack(Integer tenantId , String packCode);
} }

View File

@ -45,11 +45,11 @@ public interface ISysTenantService extends IService<SysTenant> {
boolean removeTenantById(String id); boolean removeTenantById(String id);
/** /**
* 邀请用户加入租户 * 邀请用户加入租户,通过手机号
* @param ids * @param ids
* @param userIds * @param phone
*/ */
void invitationUserJoin(String ids, String userIds); void invitationUserJoin(String ids, String phone);
/** /**
* 请离用户(租户) * 请离用户(租户)
@ -190,4 +190,14 @@ public interface ISysTenantService extends IService<SysTenant> {
* @param sysTenantPackUser * @param sysTenantPackUser
*/ */
void deleteApply(SysTenantPackUser sysTenantPackUser); void deleteApply(SysTenantPackUser sysTenantPackUser);
/**
* 产品包用户列表
* @param tenantId
* @param packId
* @param status
* @param page
* @return
*/
IPage<TenantPackUser> queryTenantPackUserList(String tenantId, String packId, Integer status, Page<TenantPackUser> page);
} }

View File

@ -192,6 +192,8 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart
sysDepart.setOrgType(String.valueOf(orgType)); sysDepart.setOrgType(String.valueOf(orgType));
sysDepart.setCreateTime(new Date()); sysDepart.setCreateTime(new Date());
sysDepart.setDelFlag(CommonConstant.DEL_FLAG_0.toString()); sysDepart.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
//新添加的部门是叶子节点
sysDepart.setIzLeaf(CommonConstant.IS_LEAF);
this.save(sysDepart); this.save(sysDepart);
//update-begin---author:wangshuai ---date:20220307 for[JTC-119]在部门管理菜单下设置部门负责人 创建用户的时候不需要处理 //update-begin---author:wangshuai ---date:20220307 for[JTC-119]在部门管理菜单下设置部门负责人 创建用户的时候不需要处理
//新增部门的时候新增负责部门 //新增部门的时候新增负责部门

View File

@ -1,6 +1,7 @@
package org.jeecg.modules.system.service.impl; package org.jeecg.modules.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.jeecg.common.constant.SymbolConstant; import org.jeecg.common.constant.SymbolConstant;
import org.jeecg.common.constant.TenantConstant; import org.jeecg.common.constant.TenantConstant;
@ -9,7 +10,6 @@ import org.jeecg.common.util.SpringContextUtils;
import org.jeecg.common.util.oConvertUtils; import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.aop.TenantLog; import org.jeecg.modules.aop.TenantLog;
import org.jeecg.modules.system.entity.SysPackPermission; import org.jeecg.modules.system.entity.SysPackPermission;
import org.jeecg.modules.system.entity.SysTenant;
import org.jeecg.modules.system.entity.SysTenantPack; import org.jeecg.modules.system.entity.SysTenantPack;
import org.jeecg.modules.system.entity.SysTenantPackUser; import org.jeecg.modules.system.entity.SysTenantPackUser;
import org.jeecg.modules.system.mapper.SysPackPermissionMapper; import org.jeecg.modules.system.mapper.SysPackPermissionMapper;
@ -18,11 +18,8 @@ import org.jeecg.modules.system.mapper.SysTenantPackUserMapper;
import org.jeecg.modules.system.service.ISysTenantPackService; import org.jeecg.modules.system.service.ISysTenantPackService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.sql.DataSource;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;

View File

@ -26,10 +26,8 @@ import org.jeecg.modules.system.service.ISysTenantService;
import org.jeecg.modules.system.service.ISysUserService; import org.jeecg.modules.system.service.ISysUserService;
import org.jeecg.modules.system.vo.tenant.*; import org.jeecg.modules.system.vo.tenant.*;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
@ -74,7 +72,7 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
public Long countUserLinkTenant(String id) { public Long countUserLinkTenant(String id) {
LambdaQueryWrapper<SysUserTenant> query = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysUserTenant> query = new LambdaQueryWrapper<>();
query.eq(SysUserTenant::getTenantId,id); query.eq(SysUserTenant::getTenantId,id);
query.eq(SysUserTenant::getStatus,CommonConstant.STATUS_1); query.eq(SysUserTenant::getStatus, CommonConstant.STATUS_1);
// 查找出已被关联的用户数量 // 查找出已被关联的用户数量
return userTenantMapper.selectCount(query); return userTenantMapper.selectCount(query);
} }
@ -91,27 +89,31 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
@Override @Override
@CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true) @CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true)
public void invitationUserJoin(String ids, String userIds) { public void invitationUserJoin(String ids, String phone) {
String[] idArray = ids.split(SymbolConstant.COMMA); String[] idArray = ids.split(SymbolConstant.COMMA);
String[] userIdArray = userIds.split(SymbolConstant.COMMA); //update-begin---author:wangshuai ---date:20230313 for【QQYUN-4605】后台的邀请谁加入租户没办法选不是租户下的用户通过手机号邀请------------
//先循环用户id避免多次查询 SysUser userByPhone = userService.getUserByPhone(phone);
for (String userId : userIdArray) { //说明用户不存在
//循环租户id if(null == userByPhone){
for (String id:idArray) { throw new JeecgBootException("当前用户不存在,请核对手机号");
//update-begin---author:wangshuai ---date:20221223 for[QQYUN-3371]租户逻辑改造,改成关系表------------ }
LambdaQueryWrapper<SysUserTenant> query = new LambdaQueryWrapper<>(); String userId = userByPhone.getId();
query.eq(SysUserTenant::getTenantId,id); //循环租户id
query.eq(SysUserTenant::getUserId,userId); for (String id:idArray) {
long count = userTenantMapper.selectCount(query); //update-begin---author:wangshuai ---date:20221223 for[QQYUN-3371]租户逻辑改造,改成关系表------------
if(count == 0){ LambdaQueryWrapper<SysUserTenant> query = new LambdaQueryWrapper<>();
SysUserTenant relation = new SysUserTenant(); query.eq(SysUserTenant::getTenantId,id);
relation.setUserId(userId); query.eq(SysUserTenant::getUserId,userId);
relation.setTenantId(Integer.valueOf(id)); long count = userTenantMapper.selectCount(query);
relation.setStatus(CommonConstant.USER_TENANT_UNDER_REVIEW); if(count == 0){
userTenantMapper.insert(relation); SysUserTenant relation = new SysUserTenant();
} relation.setUserId(userId);
//update-end---author:wangshuai ---date:20221223 for[QQYUN-3371]租户逻辑改造,改成关系表------------ relation.setTenantId(Integer.valueOf(id));
relation.setStatus(CommonConstant.USER_TENANT_NORMAL);
userTenantMapper.insert(relation);
} }
//update-end---author:wangshuai ---date:20221223 for[QQYUN-3371]租户逻辑改造,改成关系表------------
//update-end---author:wangshuai ---date:20230313 for【QQYUN-4605】后台的邀请谁加入租户没办法选不是租户下的用户通过手机号邀请------------
} }
} }
@ -477,6 +479,7 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
.eq(SysTenantPackUser::getUserId, sysTenantPackUser.getUserId()) .eq(SysTenantPackUser::getUserId, sysTenantPackUser.getUserId())
.eq(SysTenantPackUser::getPackId, sysTenantPackUser.getPackId()); .eq(SysTenantPackUser::getPackId, sysTenantPackUser.getPackId());
sysTenantPackUserMapper.delete(query); sysTenantPackUserMapper.delete(query);
} }
@Override @Override
@ -559,6 +562,46 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
} }
} }
@Override
public IPage<TenantPackUser> queryTenantPackUserList(String tenantId, String packId, Integer status, Page<TenantPackUser> page) {
// 查询用户
List<TenantPackUser> userList = baseMapper.queryTenantPackUserList(page,tenantId, packId,status);
// 获取产品包下用户部门和职位
userList = getPackUserPositionAndDepart(userList);
return page.setRecords(userList);
}
/**
* 获取用户职位和部门
* @param userList
* @return
*/
private List<TenantPackUser> getPackUserPositionAndDepart(List<TenantPackUser> userList) {
if(userList!=null && userList.size()>0){
List<String> userIdList = userList.stream().map(i->i.getId()).collect(Collectors.toList());
// 部门
List<UserDepart> depList = baseMapper.queryUserDepartList(userIdList);
// // 职位
// List<UserPosition> userPositions = baseMapper.queryUserPositionList(userIdList);
// 遍历用户 往用户中添加 部门信息和职位信息
for (TenantPackUser user : userList) {
//添加部门
for (UserDepart dep : depList) {
if (user.getId().equals(dep.getUserId())) {
user.addDepart(dep.getDepartName());
}
}
// //添加职位
// for (UserPosition userPosition : userPositions) {
// if (user.getId().equals(userPosition.getUserId())) {
// user.addPosition(userPosition.getPositionName());
// }
// }
}
}
return userList;
}
/** /**
* 触发入职流程 * 触发入职流程
* *

View File

@ -1,6 +1,6 @@
package org.jeecg.modules.system.service.impl; package org.jeecg.modules.system.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -633,18 +634,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
} }
} }
//update-begin---author:wangshuai ---date:20230112 for用户创建的时候增加临时角色 test------------
//开启租户saas模式
if (MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL) {
String testRoleId = "ee8626f80f7c2619917b6236f3a7f02b";
//如果前台没有传递角色或者传过来的劫色没有临时角色,那么默认临时角色 test
if (oConvertUtils.isEmpty(selectedRoles) || !selectedRoles.contains(testRoleId)) {
SysUserRole userRole = new SysUserRole(user.getId(), testRoleId);
sysUserRoleMapper.insert(userRole);
}
}
//update-end---author:wangshuai ---date:20230112 for用户创建的时候增加临时角色 test------------
//step.3 保存所属部门 //step.3 保存所属部门
if(oConvertUtils.isNotEmpty(selectedDeparts)) { if(oConvertUtils.isNotEmpty(selectedDeparts)) {
String[] arr = selectedDeparts.split(","); String[] arr = selectedDeparts.split(",");
@ -827,6 +816,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
//设置用户登录缓存租户 //设置用户登录缓存租户
this.updateUserDepart(username, null,sysUser.getLoginTenantId()); this.updateUserDepart(username, null,sysUser.getLoginTenantId());
log.info(" 登录接口用户的租户ID = {}", sysUser.getLoginTenantId()); log.info(" 登录接口用户的租户ID = {}", sysUser.getLoginTenantId());
if(sysUser.getLoginTenantId()!=null){
//登录的时候需要手工设置下会话中的租户ID,不然登录接口无法通过租户隔离查询到数据
TenantContext.setTenant(sysUser.getLoginTenantId()+"");
}
return null; return null;
} }
@ -864,12 +857,19 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
}else{ }else{
//是否开启系统管理模块的多租户数据隔离【SAAS多租户模式】 //是否开启系统管理模块的多租户数据隔离【SAAS多租户模式】
if (MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL) { if (MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL) {
SysUserTenant relation = new SysUserTenant(); //update-begin---author:wangshuai ---date:20230220 for判断当前用户是否在当前租户里面如果不存在在新增------------
relation.setUserId(userId); String tenantId = TenantContext.getTenant();
String tenantId = oConvertUtils.getString(TenantContext.getTenant(), "0"); if(oConvertUtils.isNotEmpty(tenantId)){
relation.setTenantId(Integer.valueOf(tenantId)); Integer count = relationMapper.userTenantIzExist(userId, Integer.parseInt(tenantId));
relation.setStatus(CommonConstant.STATUS_1); if(count == 0){
relationMapper.insert(relation); SysUserTenant relation = new SysUserTenant();
relation.setUserId(userId);
relation.setTenantId(Integer.parseInt(tenantId));
relation.setStatus(CommonConstant.STATUS_1);
relationMapper.insert(relation);
}
}
//update-end---author:wangshuai ---date:20230220 for判断当前用户是否在当前租户里面如果不存在在新增------------
} }
} }
} }
@ -885,21 +885,24 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
//数据库的租户id //数据库的租户id
List<Integer> oldTenantIds = relationMapper.getTenantIdsNoStatus(userId); List<Integer> oldTenantIds = relationMapper.getTenantIdsNoStatus(userId);
//如果传过来的租户id为空那么就删除租户 //如果传过来的租户id为空那么就删除租户
if (oConvertUtils.isEmpty(relTenantIds)) { if (oConvertUtils.isEmpty(relTenantIds) && CollectionUtils.isNotEmpty(oldTenantIds)) {
this.deleteTenantByUserId(userId, null); this.deleteTenantByUserId(userId, null);
} else if (oConvertUtils.isNotEmpty(relTenantIds) && oConvertUtils.isEmpty(oldTenantIds)) { } else if (oConvertUtils.isNotEmpty(relTenantIds) && CollectionUtils.isEmpty(oldTenantIds)) {
//如果传过来的租户id不为空但是数据库的租户id为空那么就新增 //如果传过来的租户id不为空但是数据库的租户id为空那么就新增
this.saveUserTenant(userId, relTenantIds); this.saveUserTenant(userId, relTenantIds);
} else { } else {
//都不为空,需要比较,进行添加或删除 //都不为空,需要比较,进行添加或删除
if(oConvertUtils.isNotEmpty(oldTenantIds)){ if(oConvertUtils.isNotEmpty(relTenantIds) && CollectionUtils.isNotEmpty(oldTenantIds)){
//找到新的租户id与原来的租户id不同之处进行删除 //找到新的租户id与原来的租户id不同之处进行删除
List<Integer> tenantIdList = oldTenantIds.stream().filter(item -> !relTenantIds.contains(item.toString())).collect(Collectors.toList()); String[] relTenantIdArray = relTenantIds.split(SymbolConstant.COMMA);
for (Integer tenantId : tenantIdList) { List<String> relTenantIdList = Arrays.asList(relTenantIdArray);
List<Integer> deleteTenantIdList = oldTenantIds.stream().filter(item -> !relTenantIdList.contains(item.toString())).collect(Collectors.toList());
for (Integer tenantId : deleteTenantIdList) {
this.deleteTenantByUserId(userId, tenantId); this.deleteTenantByUserId(userId, tenantId);
} }
//找到原来租户的用户id与新的租户id不同之处进行新增 //找到原来租户的用户id与新的租户id不同之处进行新增
String tenantIds = Arrays.stream(relTenantIds.split(SymbolConstant.COMMA)).filter(item -> !oldTenantIds.contains(Integer.valueOf(item))).collect(Collectors.joining(",")); String tenantIds = relTenantIdList.stream().filter(item -> !oldTenantIds.contains(Integer.valueOf(item))).collect(Collectors.joining(","));
this.saveUserTenant(userId, tenantIds); this.saveUserTenant(userId, tenantIds);
} }
} }

View File

@ -1,3 +1,4 @@
<#include "/common/utils.ftl">
<#if po.isQuery=='Y'> <#if po.isQuery=='Y'>
<#assign query_flag=true> <#assign query_flag=true>
<#if query_field_no==2> <#if query_field_no==2>
@ -13,7 +14,7 @@
</#if> </#if>
<#if po.queryMode=='single'> <#if po.queryMode=='single'>
<#if query_field_no gt 1> </#if><a-col :lg="8"> <#if query_field_no gt 1> </#if><a-col :lg="8">
<#if query_field_no gt 1> </#if><a-form-item label="${po.filedComment}"> <#if query_field_no gt 1> </#if><a-form-item label="${po.filedComment}" name="${po.fieldName}">
<#if po.classType=='sel_search'> <#if po.classType=='sel_search'>
<#if query_field_no gt 1> </#if><j-search-select placeholder="请选择${po.filedComment}" v-model:value="queryParam.${po.fieldName}" dict="${po.dictTable},${po.dictText},${po.dictField}" /> <#if query_field_no gt 1> </#if><j-search-select placeholder="请选择${po.filedComment}" v-model:value="queryParam.${po.fieldName}" dict="${po.dictTable},${po.dictText},${po.dictField}" />
<#elseif po.classType=='sel_user'> <#elseif po.classType=='sel_user'>

View File

@ -21,7 +21,7 @@
<#assign query_flag = false> <#assign query_flag = false>
<!--查询区域--> <!--查询区域-->
<div class="jeecg-basic-table-form-container"> <div class="jeecg-basic-table-form-container">
<a-form @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol"> <a-form ref="formRef" @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-row :gutter="24"> <a-row :gutter="24">
<#-- 开始循环 --> <#-- 开始循环 -->
<#list columns as po> <#list columns as po>
@ -145,7 +145,8 @@
import { startProcess } from '/@/api/common/api'; import { startProcess } from '/@/api/common/api';
</#if> </#if>
const queryParam = ref<any>({}); const formRef = ref();
const queryParam = reactive<any>({});
const toggleSearchStatus = ref<boolean>(false); const toggleSearchStatus = ref<boolean>(false);
const registerModal = ref(); const registerModal = ref();
//注册table数据 //注册table数据
@ -161,12 +162,13 @@
fixed: 'right', fixed: 'right',
}, },
beforeFetch: (params) => { beforeFetch: (params) => {
return Object.assign(params, queryParam.value); return Object.assign(params, queryParam);
}, },
}, },
exportConfig: { exportConfig: {
name: "${tableVo.ftlDescription}", name: "${tableVo.ftlDescription}",
url: getExportUrl, url: getExportUrl,
params: queryParam,
}, },
importConfig: { importConfig: {
url: getImportUrl, url: getImportUrl,
@ -294,7 +296,7 @@
* 重置 * 重置
*/ */
function searchReset() { function searchReset() {
queryParam.value = {}; formRef.value.resetFields();
selectedRowKeys.value = []; selectedRowKeys.value = [];
//刷新数据 //刷新数据
reload(); reload();
@ -306,7 +308,7 @@
*/ */
function setFieldsValue(map) { function setFieldsValue(map) {
Object.keys(map).map((key) => { Object.keys(map).map((key) => {
queryParam.value[key] = map[key]; queryParam[key] = map[key];
}); });
} }
</#if> </#if>
@ -318,7 +320,7 @@
* @param value * @param value
*/ */
function handleAreaChange(key, value) { function handleAreaChange(key, value) {
queryParam.value[key] = value.join(','); queryParam[key] = value.join(',');
} }
</#if> </#if>
@ -344,7 +346,7 @@
* @param value * @param value
*/ */
function handleFormChange(key, value) { function handleFormChange(key, value) {
queryParam.value[key] = value; queryParam[key] = value;
} }
/** /**

View File

@ -1,6 +1,8 @@
<#assign hasChildrenField = ""> <#assign hasChildrenField = "">
<#assign pidFieldName = ""> <#assign pidFieldName = "">
<#assign textFieldName = ""> <#assign textFieldName = "">
<#assign textDbFieldName = "">
<#assign pidDbFieldName = "">
<#list originalColumns as po> <#list originalColumns as po>
<#if po.fieldDbName == tableVo.extendParams.hasChildren> <#if po.fieldDbName == tableVo.extendParams.hasChildren>
<#assign hasChildrenField = po.fieldName> <#assign hasChildrenField = po.fieldName>
@ -8,9 +10,11 @@
<#-- begin 【vue3专用】 --> <#-- begin 【vue3专用】 -->
<#if po.fieldDbName == tableVo.extendParams.pidField> <#if po.fieldDbName == tableVo.extendParams.pidField>
<#assign pidFieldName = po.fieldName> <#assign pidFieldName = po.fieldName>
<#assign pidDbFieldName = po.fieldDbName>
</#if> </#if>
<#if po.fieldDbName == tableVo.extendParams.textField> <#if po.fieldDbName == tableVo.extendParams.textField>
<#assign textFieldName = po.fieldName> <#assign textFieldName = po.fieldName>
<#assign textDbFieldName = po.fieldDbName>
</#if> </#if>
<#-- end 【vue3专用】 --> <#-- end 【vue3专用】 -->
</#list> </#list>
@ -26,11 +30,11 @@
<select id="queryListByPid" parameterType="java.lang.Object" resultType="org.jeecg.common.system.vo.SelectTreeModel"> <select id="queryListByPid" parameterType="java.lang.Object" resultType="org.jeecg.common.system.vo.SelectTreeModel">
select select
id as "key", id as "key",
${textFieldName} as "title", ${textDbFieldName} as "title",
(case when ${Format.humpToUnderline(hasChildrenField)} = '1' then 0 else 1 end) as isLeaf, (case when ${Format.humpToUnderline(hasChildrenField)} = '1' then 0 else 1 end) as isLeaf,
${pidFieldName} as parentId ${pidDbFieldName} as parentId
from ${tableName} from ${tableName}
where ${pidFieldName} = ${r'#'}{pid} where ${pidDbFieldName} = ${r'#'}{pid}
<if test="query != null"> <if test="query != null">
<foreach collection="query.entrySet()" item="value" index="key"> <foreach collection="query.entrySet()" item="value" index="key">
and ${r'$'}{key} = ${r'#'}{value} and ${r'$'}{key} = ${r'#'}{value}

View File

@ -22,7 +22,7 @@
<#assign query_flag = false> <#assign query_flag = false>
<!--查询区域--> <!--查询区域-->
<div class="jeecg-basic-table-form-container"> <div class="jeecg-basic-table-form-container">
<a-form @keyup.enter.native="reload" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol"> <a-form ref="formRef" @keyup.enter.native="reload" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-row :gutter="24"> <a-row :gutter="24">
<#-- 开始循环 --> <#-- 开始循环 -->
<#list columns as po> <#list columns as po>
@ -150,6 +150,8 @@
import { startProcess } from '/@/api/common/api'; import { startProcess } from '/@/api/common/api';
</#if> </#if>
const formRef = ref();
const queryParam = reactive<any>({});
const checkedKeys = ref<Array<string | number>>([]); const checkedKeys = ref<Array<string | number>>([]);
//注册model //注册model
const [registerModal, {openModal}] = useModal(); const [registerModal, {openModal}] = useModal();
@ -166,12 +168,13 @@
fixed:'right' fixed:'right'
}, },
beforeFetch: (params) => { beforeFetch: (params) => {
return Object.assign(params, queryParam.value); return Object.assign(params, queryParam);
}, },
}, },
exportConfig: { exportConfig: {
name:"${tableVo.ftlDescription}", name:"${tableVo.ftlDescription}",
url: getExportUrl, url: getExportUrl,
params: queryParam,
}, },
importConfig: { importConfig: {
url: getImportUrl, url: getImportUrl,
@ -304,7 +307,7 @@
* @param value * @param value
*/ */
function handleFormChange(key, value) { function handleFormChange(key, value) {
queryParam.value[key] = value; queryParam[key] = value;
} }
/** /**
* 初始化字典配置 * 初始化字典配置
@ -330,7 +333,6 @@
</#if> </#if>
/* ----------------------以下为原生查询需要添加的-------------------------- */ /* ----------------------以下为原生查询需要添加的-------------------------- */
const queryParam = ref<any>({});
const toggleSearchStatus = ref<boolean>(false); const toggleSearchStatus = ref<boolean>(false);
const labelCol = reactive({ const labelCol = reactive({
xs: { span: 24 }, xs: { span: 24 },
@ -344,7 +346,7 @@
* 重置 * 重置
*/ */
function searchReset() { function searchReset() {
queryParam.value = {}; formRef.value.resetFields();
selectedRowKeys.value = []; selectedRowKeys.value = [];
//刷新数据 //刷新数据
reload(); reload();
@ -355,7 +357,7 @@
*/ */
function setFieldsValue(map) { function setFieldsValue(map) {
Object.keys(map).map((key) => { Object.keys(map).map((key) => {
queryParam.value[key] = map[key]; queryParam[key] = map[key];
}); });
} }
</#if> </#if>
@ -367,7 +369,7 @@
* @param value * @param value
*/ */
function handleAreaChange(key, value) { function handleAreaChange(key, value) {
queryParam.value[key] = value.join(','); queryParam[key] = value.join(',');
} }
</#if> </#if>
</script> </script>

View File

@ -11,6 +11,6 @@ WORKDIR /jeecg-boot
EXPOSE 8080 EXPOSE 8080
#ADD ./src/main/resources/jeecg ./config/jeecg #ADD ./src/main/resources/jeecg ./config/jeecg
ADD ./target/jeecg-system-start-3.5.0.jar ./ ADD ./target/jeecg-system-start-3.5.1.jar ./
CMD sleep 60;java -Djava.security.egd=file:/dev/./urandom -jar jeecg-system-start-3.5.0.jar CMD sleep 60;java -Djava.security.egd=file:/dev/./urandom -jar jeecg-system-start-3.5.1.jar

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-module-system</artifactId> <artifactId>jeecg-module-system</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -9,6 +9,6 @@ ${AnsiColor.BRIGHT_BLUE}
${AnsiColor.BRIGHT_GREEN} ${AnsiColor.BRIGHT_GREEN}
Jeecg Boot Version: 3.5.0 Jeecg Boot Version: 3.5.1
Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version} Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version}
${AnsiColor.BLACK} ${AnsiColor.BLACK}

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-boot-parent</artifactId> <artifactId>jeecg-boot-parent</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -10,6 +10,6 @@ WORKDIR /jeecg-cloud-gateway
EXPOSE 9999 EXPOSE 9999
ADD ./target/jeecg-cloud-gateway-3.5.0.jar ./ ADD ./target/jeecg-cloud-gateway-3.5.1.jar ./
CMD sleep 1;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-cloud-gateway-3.5.0.jar CMD sleep 1;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-cloud-gateway-3.5.1.jar

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-server-cloud</artifactId> <artifactId>jeecg-server-cloud</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>jeecg-cloud-gateway</artifactId> <artifactId>jeecg-cloud-gateway</artifactId>

View File

@ -33,7 +33,7 @@ public class GatewayRoutersConfig {
this.dataId = dataId + ".json"; this.dataId = dataId + ".json";
} }
@Value("${jeecg.route.config.group:DEFAULT_GROUP:#{null}}") @Value("${spring.cloud.nacos.config.group:DEFAULT_GROUP:#{null}}")
public void setRouteGroup(String routeGroup) { public void setRouteGroup(String routeGroup) {
this.routeGroup = routeGroup; this.routeGroup = routeGroup;
} }
@ -43,7 +43,7 @@ public class GatewayRoutersConfig {
this.serverAddr = serverAddr; this.serverAddr = serverAddr;
} }
@Value("${spring.cloud.nacos.discovery.namespace:#{null}}") @Value("${spring.cloud.nacos.config.namespace:#{null}}")
public void setNamespace(String namespace) { public void setNamespace(String namespace) {
this.namespace = namespace; this.namespace = namespace;
} }

View File

@ -13,6 +13,8 @@ spring:
nacos: nacos:
config: config:
server-addr: @config.server-addr@ server-addr: @config.server-addr@
group: @config.group@
namespace: @config.namespace@
discovery: discovery:
server-addr: ${spring.cloud.nacos.config.server-addr} server-addr: ${spring.cloud.nacos.config.server-addr}
gateway: gateway:

View File

@ -10,6 +10,6 @@ WORKDIR /jeecg-cloud-nacos
EXPOSE 8848 EXPOSE 8848
ADD ./target/jeecg-cloud-nacos-3.5.0.jar ./ ADD ./target/jeecg-cloud-nacos-3.5.1.jar ./
CMD sleep 1;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-cloud-nacos-3.5.0.jar CMD sleep 1;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-cloud-nacos-3.5.1.jar

View File

@ -5,7 +5,7 @@
<artifactId>jeecg-cloud-nacos</artifactId> <artifactId>jeecg-cloud-nacos</artifactId>
<name>jeecg-cloud-nacos</name> <name>jeecg-cloud-nacos</name>
<description>nacos启动模块</description> <description>nacos启动模块</description>
<version>3.5.0</version> <version>3.5.1</version>
<!-- Nacos2不支持springboot2.6.6 --> <!-- Nacos2不支持springboot2.6.6 -->
<parent> <parent>

View File

@ -10,6 +10,6 @@ WORKDIR /jeecg-demo-cloud
EXPOSE 7002 EXPOSE 7002
ADD ./target/jeecg-demo-cloud-start-3.5.0.jar ./ ADD ./target/jeecg-demo-cloud-start-3.5.1.jar ./
CMD sleep 1;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-demo-cloud-start-3.5.0.jar CMD sleep 1;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-demo-cloud-start-3.5.1.jar

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-server-cloud</artifactId> <artifactId>jeecg-server-cloud</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -8,6 +8,8 @@ spring:
nacos: nacos:
config: config:
server-addr: @config.server-addr@ server-addr: @config.server-addr@
group: @config.group@
namespace: @config.namespace@
discovery: discovery:
server-addr: ${spring.cloud.nacos.config.server-addr} server-addr: ${spring.cloud.nacos.config.server-addr}
config: config:

View File

@ -10,6 +10,6 @@ WORKDIR /jeecg-system-cloud
EXPOSE 7001 EXPOSE 7001
ADD ./target/jeecg-system-cloud-start-3.5.0.jar ./ ADD ./target/jeecg-system-cloud-start-3.5.1.jar ./
CMD sleep 1;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-system-cloud-start-3.5.0.jar CMD sleep 1;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-system-cloud-start-3.5.1.jar

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-server-cloud</artifactId> <artifactId>jeecg-server-cloud</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>jeecg-system-cloud-start</artifactId> <artifactId>jeecg-system-cloud-start</artifactId>

View File

@ -21,7 +21,7 @@ import java.net.UnknownHostException;
/** /**
* 微服务启动类(采用此类启动项目为微服务模式) * 微服务启动类(采用此类启动项目为微服务模式)
* 注意: 需要先在naocs里面创建配置文件参考文档 http://doc.jeecg.com/2704725 * 注意: 需要先初始化Nacos的数据库脚本db/tables_nacos.sql
* @author zyf * @author zyf
* @date: 2022/4/21 10:55 * @date: 2022/4/21 10:55
*/ */

View File

@ -8,6 +8,8 @@ spring:
nacos: nacos:
config: config:
server-addr: @config.server-addr@ server-addr: @config.server-addr@
group: @config.group@
namespace: @config.namespace@
discovery: discovery:
server-addr: ${spring.cloud.nacos.config.server-addr} server-addr: ${spring.cloud.nacos.config.server-addr}
config: config:

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-visual</artifactId> <artifactId>jeecg-visual</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>jeecg-cloud-monitor</artifactId> <artifactId>jeecg-cloud-monitor</artifactId>

View File

@ -10,6 +10,6 @@ WORKDIR /jeecg-cloud-sentinel
EXPOSE 8848 EXPOSE 8848
ADD ./target/jeecg-cloud-sentinel-3.5.0.jar ./ ADD ./target/jeecg-cloud-sentinel-3.5.1.jar ./
CMD sleep 5;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-cloud-sentinel-3.5.0.jar CMD sleep 5;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-cloud-sentinel-3.5.1.jar

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-visual</artifactId> <artifactId>jeecg-visual</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<artifactId>jeecg-cloud-sentinel</artifactId> <artifactId>jeecg-cloud-sentinel</artifactId>
<name>jeecg-cloud-sentinel</name> <name>jeecg-cloud-sentinel</name>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-cloud-test</artifactId> <artifactId>jeecg-cloud-test</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<description>公共测试模块</description> <description>公共测试模块</description>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-cloud-test</artifactId> <artifactId>jeecg-cloud-test</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<description>消息队列测试模块</description> <description>消息队列测试模块</description>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-cloud-test-seata</artifactId> <artifactId>jeecg-cloud-test-seata</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<description>分布式事务测试模块</description> <description>分布式事务测试模块</description>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-cloud-test-seata</artifactId> <artifactId>jeecg-cloud-test-seata</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<description>分布式事务测试模块</description> <description>分布式事务测试模块</description>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-cloud-test-seata</artifactId> <artifactId>jeecg-cloud-test-seata</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<description>分布式事务测试模块</description> <description>分布式事务测试模块</description>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-cloud-test</artifactId> <artifactId>jeecg-cloud-test</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>jeecg-cloud-test-seata</artifactId> <artifactId>jeecg-cloud-test-seata</artifactId>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-cloud-test</artifactId> <artifactId>jeecg-cloud-test</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-visual</artifactId> <artifactId>jeecg-visual</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -10,7 +10,7 @@ WORKDIR /jeecg-cloud-xxljob
EXPOSE 9080 EXPOSE 9080
ADD ./target/jeecg-cloud-xxljob-3.5.0.jar ./ ADD ./target/jeecg-cloud-xxljob-3.5.1.jar ./
CMD java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-cloud-xxljob-3.5.0.jar CMD java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-cloud-xxljob-3.5.1.jar

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-visual</artifactId> <artifactId>jeecg-visual</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
@ -45,6 +45,8 @@
<dependency> <dependency>
<groupId>mysql</groupId> <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
<scope>runtime</scope>
</dependency> </dependency>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-server-cloud</artifactId> <artifactId>jeecg-server-cloud</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>jeecg-boot-parent</artifactId> <artifactId>jeecg-boot-parent</artifactId>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<version>3.5.0</version> <version>3.5.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

18
pom.xml
View File

@ -2,7 +2,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-parent</artifactId> <artifactId>jeecg-boot-parent</artifactId>
<version>3.5.0</version> <version>3.5.1</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<name>JEECG BOOT ${project.version} </name> <name>JEECG BOOT ${project.version} </name>
@ -22,12 +22,12 @@
<parent> <parent>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId> <artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.14</version> <version>2.7.10</version>
<relativePath/> <relativePath/>
</parent> </parent>
<properties> <properties>
<jeecgboot.version>3.5.0</jeecgboot.version> <jeecgboot.version>3.5.1</jeecgboot.version>
<java.version>1.8</java.version> <java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@ -428,6 +428,10 @@
<profile.name>dev</profile.name> <profile.name>dev</profile.name>
<!--Nacos服务地址--> <!--Nacos服务地址-->
<config.server-addr>jeecg-boot-nacos:8848</config.server-addr> <config.server-addr>jeecg-boot-nacos:8848</config.server-addr>
<!--Nacos配置中心命名空间,用于支持多环境.这里必须使用ID不能使用名称,默认为空-->
<config.namespace></config.namespace>
<!--Nacos配置分组名称-->
<config.group>DEFAULT_GROUP</config.group>
</properties> </properties>
</profile> </profile>
<!-- 测试 --> <!-- 测试 -->
@ -438,6 +442,10 @@
<profile.name>test</profile.name> <profile.name>test</profile.name>
<!--Nacos服务地址--> <!--Nacos服务地址-->
<config.server-addr>jeecg-boot-nacos:8848</config.server-addr> <config.server-addr>jeecg-boot-nacos:8848</config.server-addr>
<!--Nacos配置中心命名空间,用于支持多环境.这里必须使用ID不能使用名称,默认为空-->
<config.namespace></config.namespace>
<!--Nacos配置分组名称-->
<config.group>DEFAULT_GROUP</config.group>
</properties> </properties>
</profile> </profile>
<!-- 生产 --> <!-- 生产 -->
@ -448,6 +456,10 @@
<profile.name>prod</profile.name> <profile.name>prod</profile.name>
<!--Nacos服务地址--> <!--Nacos服务地址-->
<config.server-addr>jeecg-boot-nacos:8848</config.server-addr> <config.server-addr>jeecg-boot-nacos:8848</config.server-addr>
<!--Nacos配置中心命名空间,用于支持多环境.这里必须使用ID不能使用名称,默认为空-->
<config.namespace></config.namespace>
<!--Nacos配置分组名称-->
<config.group>DEFAULT_GROUP</config.group>
</properties> </properties>
</profile> </profile>
<!-- SpringCloud运行环境 --> <!-- SpringCloud运行环境 -->