Compare commits
293 Commits
v5.10.1.sp
...
v5.8.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
77aeb4ac4f | ||
|
|
2b122eecd5 | ||
|
|
6ad196d82d | ||
|
|
b002592f4e | ||
|
|
3f6d1593b6 | ||
|
|
db5f195fff | ||
|
|
1c539f3796 | ||
|
|
75e5e2765c | ||
|
|
fcf5d8a04c | ||
|
|
9f0d45cad9 | ||
|
|
28ec083c26 | ||
|
|
4c2d645b0a | ||
|
|
eb94eba608 | ||
|
|
bd5d543bf5 | ||
|
|
739f2d58b7 | ||
|
|
d62dc0310a | ||
|
|
f4456ec359 | ||
|
|
8cdd2fd99c | ||
|
|
7e3a55a578 | ||
|
|
7ce1f84866 | ||
|
|
ccc3ea6894 | ||
|
|
b5c100f9a6 | ||
|
|
cf151678a9 | ||
|
|
2ba4d16ef1 | ||
|
|
dfbc3284b4 | ||
|
|
9317d0e6bb | ||
|
|
474fee2943 | ||
|
|
5d1fe5236a | ||
|
|
808175d835 | ||
|
|
3ba3aa2b2b | ||
|
|
aba56f7aa2 | ||
|
|
648199245a | ||
|
|
893292ed20 | ||
|
|
68a26fa727 | ||
|
|
d0a2cbfa58 | ||
|
|
dffd48c454 | ||
|
|
92c41f0cb5 | ||
|
|
8e3992767c | ||
|
|
e3c2bb82fd | ||
|
|
3924575550 | ||
|
|
826698a809 | ||
|
|
a0fa0281fa | ||
|
|
53bea929c1 | ||
|
|
2922d90dd9 | ||
|
|
0ec8e0b89a | ||
|
|
184e7ad554 | ||
|
|
49e669c47e | ||
|
|
4469aad2c8 | ||
|
|
18831ab95d | ||
|
|
bddf67e726 | ||
|
|
01779973e5 | ||
|
|
4e249c116c | ||
|
|
d909a2527a | ||
|
|
32a7e1a5f8 | ||
|
|
e5d217f5b2 | ||
|
|
090b2cd3fc | ||
|
|
9b4b4affa0 | ||
|
|
09d2af2491 | ||
|
|
e279700113 | ||
|
|
b36bdbdd48 | ||
|
|
02d0992694 | ||
|
|
75b66fbc29 | ||
|
|
51ea1cebb3 | ||
|
|
f7fc2ff8ad | ||
|
|
f8f8469c3a | ||
|
|
50136e09a2 | ||
|
|
66d7ec04dc | ||
|
|
e714923b47 | ||
|
|
456eb9644b | ||
|
|
46e0ee7717 | ||
|
|
67041873fc | ||
|
|
2d298a6fc7 | ||
|
|
d3de1eb957 | ||
|
|
5c09f28266 | ||
|
|
15947015f8 | ||
|
|
d46ee0c359 | ||
|
|
11c8c3e0f7 | ||
|
|
afdbef4f26 | ||
|
|
541656c60a | ||
|
|
68cfc664ec | ||
|
|
ad423b4b9b | ||
|
|
4c9ca4d932 | ||
|
|
d6237f719b | ||
|
|
3cd5b2379d | ||
|
|
ad292502a9 | ||
|
|
1ac8085c8c | ||
|
|
df5e557f21 | ||
|
|
0484e1f64d | ||
|
|
6ac8a82718 | ||
|
|
163a387099 | ||
|
|
7b84892389 | ||
|
|
0d4701c8cc | ||
|
|
563571ae53 | ||
|
|
4575e6c211 | ||
|
|
49464e8bca | ||
|
|
9ccfd534d0 | ||
|
|
e68f96f3d6 | ||
|
|
07ba80ec4b | ||
|
|
3671148f56 | ||
|
|
6e56e515ae | ||
|
|
e6257a98c1 | ||
|
|
6a7817137a | ||
|
|
b32ffa3b6a | ||
|
|
95ec1770df | ||
|
|
9573da0309 | ||
|
|
aedd50c8c2 | ||
|
|
d8d8902e71 | ||
|
|
b4ffcf6f47 | ||
|
|
e3851a1066 | ||
|
|
47c88e5c6d | ||
|
|
05641a271e | ||
|
|
657f22da98 | ||
|
|
03ad0954e2 | ||
|
|
992e3c0cb7 | ||
|
|
c62f575d10 | ||
|
|
db5778a833 | ||
|
|
396e506936 | ||
|
|
2029cfc65a | ||
|
|
8de5edc40e | ||
|
|
37a74e7168 | ||
|
|
29345f8873 | ||
|
|
e9da7f1926 | ||
|
|
5cd3b507e4 | ||
|
|
533473b315 | ||
|
|
9eab7217cc | ||
|
|
553a0d652a | ||
|
|
4bc6d9e498 | ||
|
|
f1e7e5b8ee | ||
|
|
b99fcbad06 | ||
|
|
d9b626e925 | ||
|
|
0106d47779 | ||
|
|
30e4839da1 | ||
|
|
73d910ad13 | ||
|
|
a407593fc0 | ||
|
|
c3c377ba94 | ||
|
|
f130af6d7a | ||
|
|
ef4d06ff2e | ||
|
|
24d51e416e | ||
|
|
ed836c2f6a | ||
|
|
529d2b8192 | ||
|
|
9c0885b4c9 | ||
|
|
7ccbb05b7b | ||
|
|
53af15f85d | ||
|
|
21b15f16e3 | ||
|
|
8176853791 | ||
|
|
a56e29d8f7 | ||
|
|
081505f79c | ||
|
|
a6adfbc726 | ||
|
|
e883de354f | ||
|
|
f4909921ac | ||
|
|
0eb09a0dbb | ||
|
|
a58a2dcda2 | ||
|
|
1318ce840c | ||
|
|
0a771a7008 | ||
|
|
2ea481a417 | ||
|
|
07d3eef8ab | ||
|
|
f3c4a0dbe9 | ||
|
|
8f14549fee | ||
|
|
bccecc8b39 | ||
|
|
4a8bad7d35 | ||
|
|
8ef29563f5 | ||
|
|
87b8dc6ec4 | ||
|
|
b1f29a9d57 | ||
|
|
33eb95f120 | ||
|
|
4bfe7b2316 | ||
|
|
b0350b36d7 | ||
|
|
9f16332c09 | ||
|
|
419ed4f01b | ||
|
|
69cd032b7e | ||
|
|
c0aeef4881 | ||
|
|
e7c6e7e85b | ||
|
|
7f06df2bed | ||
|
|
250788a398 | ||
|
|
196cf4f10c | ||
|
|
3b587c661b | ||
|
|
7eb9484d7e | ||
|
|
c610af7c6b | ||
|
|
0c7cefb184 | ||
|
|
19d2399eb2 | ||
|
|
37b0a120c9 | ||
|
|
5fb6ab0ca6 | ||
|
|
2ba8b953d3 | ||
|
|
738fd5c552 | ||
|
|
745f6e88c0 | ||
|
|
3db837d6d6 | ||
|
|
14054a964f | ||
|
|
14581655d2 | ||
|
|
f162584d1e | ||
|
|
e57e8127b5 | ||
|
|
b7d4efa6a6 | ||
|
|
91a4db4eb8 | ||
|
|
7ed84e48cf | ||
|
|
f068bd9c90 | ||
|
|
4ae907a023 | ||
|
|
652a242c2b | ||
|
|
d242408de2 | ||
|
|
b8f51011ed | ||
|
|
84913ab783 | ||
|
|
b7bb765193 | ||
|
|
d1b06c45c8 | ||
|
|
19fe2023a6 | ||
|
|
590046d90c | ||
|
|
00c162ece1 | ||
|
|
d5deb38769 | ||
|
|
b71165f73c | ||
|
|
4260accf88 | ||
|
|
353131ab2c | ||
|
|
acb6baa226 | ||
|
|
5b7f7b0860 | ||
|
|
c57238e279 | ||
|
|
24ea4aaed0 | ||
|
|
0af1ae18c8 | ||
|
|
e054df919f | ||
|
|
a9ca557672 | ||
|
|
5bc76dd23d | ||
|
|
f337faeecc | ||
|
|
a6d84c59c9 | ||
|
|
b8279ffe64 | ||
|
|
af44331820 | ||
|
|
00ead34076 | ||
|
|
9b07e167f7 | ||
|
|
0fb15e31d6 | ||
|
|
3e769325f8 | ||
|
|
d555d508c3 | ||
|
|
11511c14bd | ||
|
|
2238ca062f | ||
|
|
3563f18335 | ||
|
|
983ad2faff | ||
|
|
f569da908d | ||
|
|
2e0718ba41 | ||
|
|
846bf82375 | ||
|
|
8cc6f25dd1 | ||
|
|
5ff9ca9815 | ||
|
|
31e6b01b4e | ||
|
|
bc8a6d2db7 | ||
|
|
9a13b33dd8 | ||
|
|
4bdba535bb | ||
|
|
09bf40feee | ||
|
|
5d74d2783f | ||
|
|
807b47dbc4 | ||
|
|
456cdaf883 | ||
|
|
d1b588b7d5 | ||
|
|
22a4b0fcf7 | ||
|
|
84407b5785 | ||
|
|
f5771c56a4 | ||
|
|
a3dee0f70a | ||
|
|
797abcdf87 | ||
|
|
0559c79687 | ||
|
|
f514b86bbc | ||
|
|
49992195df | ||
|
|
631225a108 | ||
|
|
5922951c16 | ||
|
|
5dc1b29a34 | ||
|
|
97252f7d82 | ||
|
|
efa8d7788a | ||
|
|
40c5759f59 | ||
|
|
13df22605b | ||
|
|
a2644570be | ||
|
|
da12b2d092 | ||
|
|
f5080cd8f5 | ||
|
|
729801bab5 | ||
|
|
0de77acca2 | ||
|
|
7128998483 | ||
|
|
1becabaea3 | ||
|
|
23b726e335 | ||
|
|
6909116d9a | ||
|
|
12132ab592 | ||
|
|
920a1a8916 | ||
|
|
eaa6646a74 | ||
|
|
696b7addb9 | ||
|
|
43fbbda930 | ||
|
|
727454d2a7 | ||
|
|
33d0693bb1 | ||
|
|
1eaff67ffd | ||
|
|
f54126bc07 | ||
|
|
fce22831ab | ||
|
|
ae17e2c2a4 | ||
|
|
db9ff3647a | ||
|
|
e5f5c4cd11 | ||
|
|
1098757b6a | ||
|
|
084bfaac92 | ||
|
|
e7ec4c52e8 | ||
|
|
02f0e1b300 | ||
|
|
e7e15fd15e | ||
|
|
a2d873fee5 | ||
|
|
48a93201e6 | ||
|
|
e3e222d7bb | ||
|
|
050aa6e4bf | ||
|
|
a0bfba3abb | ||
|
|
96838f50ad | ||
|
|
0a3c0e4bc8 | ||
|
|
0d24b71fe3 | ||
|
|
e658f9e6f6 |
13
LICENSE
13
LICENSE
@@ -206,16 +206,15 @@
|
||||
|
||||
1. 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款。
|
||||
2. 不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
|
||||
3. 在使用本软件时,由于它集成了众多第三方开源软件,请共同遵守这些开源软件的使用许可条款规定。
|
||||
4. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、版权声明和其他原作者
|
||||
3. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、版权声明和其他原作者
|
||||
规定需要包含的说明(请尊重原作者的著作权,不要删除或修改文件中的`Copyright`和`@author`信息)
|
||||
更不要,全局替换源代码中的 jeesite 或 ThinkGem 等字样,否则你将违反本协议条款承担责任。
|
||||
5. 您若套用本软件的一些代码或功能参考,请保留源文件中的版权和作者,需要在您的软件介绍明显位置
|
||||
4. 您若套用本软件的一些代码或功能参考,请保留源文件中的版权和作者,需要在您的软件介绍明显位置
|
||||
说明出处,举例:本软件基于 JeeSite 快速开发平台,并附带链接:http://jeesite.com
|
||||
6. 任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
|
||||
7. 如果你对本软件有改进,希望可以贡献给我们,共同进步。
|
||||
8. 本项目已申请软件著作权,请尊重开源,感谢阅读。
|
||||
9. 无用户数限制,无在线人数限制,放心使用。
|
||||
5. 任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
|
||||
6. 如果你对本软件有改进,希望可以贡献给我们,共同进步。
|
||||
7. 本项目已申请软件著作权,请尊重开源,感谢阅读。
|
||||
8. 无用户数限制,无在线人数限制,放心使用。
|
||||
|
||||
版权所有:济南卓源软件有限公司
|
||||
|
||||
|
||||
92
README.md
92
README.md
@@ -2,15 +2,12 @@
|
||||
<p align="center">
|
||||
<img alt="JeeSite" src="https://jeesite.com/assets/images/logo.png" width="120" height="120" style="margin-bottom: 10px;">
|
||||
</p>
|
||||
<h3 align="center" style="margin:30px 0 30px;font-weight:bold;font-size:30px;">快速开发平台 - Spring Boot 3</h3>
|
||||
<h3 align="center" style="margin:30px 0 30px;font-weight:bold;font-size:30px;">快速开发平台 - Spring Boot</h3>
|
||||
<p align="center">
|
||||
<a href="https://spring.io/projects/spring-boot" target="__blank"><img alt="SpringBoot-V2.7/3.4" src="https://img.shields.io/badge/SpringBoot-V2.7/3.4-blue.svg"></a>
|
||||
<a href="https://v3.cn.vuejs.org/" target="__blank"><img alt="TypeScript-Vue3" src="https://img.shields.io/badge/TypeScript-Vue3-green.svg"></a>
|
||||
<a href="https://jeesite.com/docs/upgrade/" target="__blank"><img alt="JeeSite-V5.x" src="https://img.shields.io/badge/JeeSite-V5.x-success.svg"></a>
|
||||
<a href="https://gitee.com/thinkgem/jeesite5" target="__blank"><img alt="star" src="https://gitee.com/thinkgem/jeesite5/badge/star.svg?theme=dark"></a>
|
||||
<a href="https://gitee.com/thinkgem/jeesite-vue" target="__blank"><img alt="star" src="https://gitee.com/thinkgem/jeesite-vue/badge/star.svg?theme=dark"></a>
|
||||
<a href="https://gitee.com/thinkgem/jeesite" target="__blank"><img alt="star" src="https://gitee.com/thinkgem/jeesite/badge/star.svg?theme=gvp"></a>
|
||||
<a href="https://gitcode.com/thinkgem/jeesite" target="__blank"><img alt="star" src="https://gitcode.com/thinkgem/jeesite/star/badge.svg"></a>
|
||||
<a href="https://jeesite.com/docs/upgrade/" target="__blank"><img alt="JeeSite-V5.8" src="https://img.shields.io/badge/JeeSite-V5.8-success.svg"></a>
|
||||
<a href="https://spring.io/projects/spring-boot#learn" target="__blank"><img alt="SpringBoot-2.7/3.2" src="https://img.shields.io/badge/SpringBoot-2.7/3.2-blue.svg"></a>
|
||||
<a href="https://gitee.com/thinkgem/jeesite5/stargazers" target="__blank"><img alt="star" src="https://gitee.com/thinkgem/jeesite5/badge/star.svg?theme=dark"></a>
|
||||
<a href="https://gitee.com/thinkgem/jeesite5/members" target="__blank"><img alt="fork" src="https://gitee.com/thinkgem/jeesite5/badge/fork.svg?theme=dark"></a>
|
||||
</p>
|
||||
|
||||
------
|
||||
@@ -27,40 +24,25 @@
|
||||
* 使用文档:<https://jeesite.com/docs>
|
||||
* 问题反馈:<http://jeesite.net> [【新手必读】](https://gitee.com/thinkgem/jeesite5/issues/I18ARR)
|
||||
* 需求收集:<https://gitee.com/thinkgem/jeesite5/issues/new>
|
||||
* 联系我们:<http://s.jeesite.com>
|
||||
* QQ 群:`127515876`、`209330483`、`223507718`、`709534275`、`730390092`、`1373527`、`183903863(外包)`
|
||||
* 关注微信公众号,了解最新动态:
|
||||
|
||||
<p style="padding-left:40px">
|
||||
<img alt="JeeSite微信公众号" src="https://jeesite.com/assets/images/mp.png" width="200">
|
||||
<p style="padding-left:40px">
|
||||
<img alt="JeeSite微信公众号" src="https://images.gitee.com/uploads/images/2020/0727/091951_a3ab258c_6732.jpeg" width="220" height="220">
|
||||
</p>
|
||||
|
||||
* QQ 群:`127515876`、`209330483`、`223507718`、`709534275`、`730390092`、`1373527`、`183903863(外包)`
|
||||
* 微信群:如果二维码过期,请尝试刷新图片,或者添加客服微信 jeesitex 邀请您进群
|
||||
|
||||
<p style="padding-left:40px"><a href="https://jeesite.com/assets/images/wxg_cur.png" target="_blank">
|
||||
<img alt="JeeSite微信群" src="https://jeesite.com/assets/images/wxg_cur.png" width="200"/></a>
|
||||
</p>
|
||||
|
||||
* 源码仓库地址:
|
||||
[Gitee](https://gitee.com/thinkgem/jeesite5)、
|
||||
[GitCode](https://gitcode.com/thinkgem/jeesite5)、
|
||||
[GitHub](https://github.com/thinkgem/jeesite5)
|
||||
* 分离版源码仓库地址:
|
||||
[Gitee](https://gitee.com/thinkgem/jeesite-vue)、
|
||||
[GitCode](https://gitcode.com/thinkgem/jeesite-vue)、
|
||||
[GitHub](https://github.com/thinkgem/jeesite-vue)
|
||||
* 源码合集仓库地址:
|
||||
[GVP](https://gitee.com/thinkgem/jeesite/tree/v5.springboot3)、
|
||||
[G-Star](https://gitcode.com/thinkgem/jeesite/overview?ref=v5.springboot3)、
|
||||
[GitHub](https://github.com/thinkgem/jeesite/tree/v5.springboot3)
|
||||
* 源码仓库地址1:<https://gitee.com/thinkgem/jeesite5>
|
||||
* 源码仓库地址2:<https://github.com/thinkgem/jeesite5>
|
||||
* 分离版前端源码仓库地址1:<https://gitee.com/thinkgem/jeesite-vue>
|
||||
* 分离版前端源码仓库地址2:<https://github.com/thinkgem/jeesite-vue>
|
||||
|
||||
## 平台介绍
|
||||
|
||||
* JeeSite 快速开发平台,低代码,轻量级,不仅仅是一个后台开发框架,它是一个企业级快速开发解决方案,后端基于经典组合 Spring Boot、Shiro、MyBatis,前端采用分离版 Vue3、Vite、Ant Design Vue、TypeScript、Vben Admin 最先进技术栈,或者 Beetl、Bootstrap、AdminLTE 经典开发模式。
|
||||
* JeeSite 快速开发平台,不仅仅是一个后台开发框架,它是一个企业级快速开发解决方案,后端基于经典组合 Spring Boot、Shiro、MyBatis,前端采用 Beetl、Bootstrap、AdminLTE 经典开发模式,或者分离版 Vue3、Vite、Ant Design Vue、TypeScript、Vben Admin 最先进技术栈。
|
||||
|
||||
* 提供在线数据源管理、数据表建模、代码生成等功能,可自动创建业务模块代码工程和微服务模块代码工程,自动生成前端代码和后端代码;包括核心功能模块如:组织机构、用户、角色、岗位、管理员、权限审计、菜单及按钮权限、数据权限、模块管理、系统参数、字典管理、系统监控、数据监控等;扩展功能如:工作流引擎、内容管理、消息推送、单点登录、第三方登录、在线作业调度、对象存储、可视化数据大屏、报表设计器、在线文件预览、国际化、全文检索、统一认证服务等。
|
||||
|
||||
* 本平台采用松耦合设计,真正的轻量级,微内核,快速部署,插件架构,模块增减便捷,支持扩展 SaaS 架构、集群部署、读写分离、分库分表、Spring Cloud 微服务架构;并内置了众多账号安全设置、密码策略、系统访问限制等安全解决方案,支持等保评测。
|
||||
* 本平台采用松耦合设计,微内核和插件架构,模块增减便捷,支持集群,支持 SaaS 架构,支持读写分离、分库分表、Spring Cloud 微服务架构;并内置了众多账号安全设置、密码策略、系统访问限制等安全解决方案,支持等保评测。
|
||||
|
||||
* 本平台专注于为初级研发人员提供强大的支持,使他们能够高效、快速地开发出复杂的业务功能,同时为中高级人员腾出宝贵的时间,专注于更具战略性和创新性的任务。我们致力于让开发者能够全心投入业务逻辑中,而将繁琐的技术细节交由平台来封装处理。这不仅降低了技术实现的难度,还确保了系统架构的稳定性和安全性,进而帮助企业节省人力成本、缩短项目周期,并提高整体软件的安全性和质量。
|
||||
|
||||
@@ -76,7 +58,7 @@
|
||||
|
||||
* JeeSite 非常易于二次开发,可控性高,整体架构清晰、技术稳定而先进、源代码书写规范、经典技术会的人多、易于维护、易于扩展、安全稳定。
|
||||
|
||||
* JeeSite 功能全,知识点非常多,也非常少。因为她使用的都是一些通用的技术,通俗的设计风格,大多数基础知识点,多数人都能掌握,所以每一个 JeeSite 的功能点都非常容易掌握。只要您学会使用这些功能和组件的应用,就可以顺利地完成系统开发了。
|
||||
* JeeSite 功能全,知识点非常多,也非常少。因为她使用的都是一些通用的技术,通俗的设计风格,大多数基础知识点,多数人都能掌握,所以每一个 JeeSite 的功能点都非常容易掌握。只要您学会使用这些功能和组件的应用,就可以顺利的完成系统开发了。
|
||||
|
||||
* JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,封装不是限制您去做一些事情,而是在便捷的同时,也具有较好的扩展性,在不具备一些功能的情况下,JeeSite 提供了扩展接口,提供了原生调用方法。
|
||||
|
||||
@@ -95,17 +77,17 @@
|
||||
|
||||
## 技术选型
|
||||
|
||||
* 主框架:Spring Boot 3.3、Spring Framework 6.1、Apache Shiro 2.0、J2Cache
|
||||
* 持久层:Apache MyBatis 3.5、Hibernate Validator 8.0、Alibaba Druid 1.2
|
||||
* 视图层:Spring MVC 6.1、Beetl 3.10(替换JSP)、Bootstrap 3.3、AdminLTE 2.4
|
||||
* 主框架:Spring Boot 2.7、Spring Framework 5.3、Apache Shiro 1.12、J2Cache
|
||||
* 持久层:Apache MyBatis 3.5、Hibernate Validator 6.2、Alibaba Druid 1.2
|
||||
* 视图层:Spring MVC 5.3、Beetl 3.10(替换JSP)、Bootstrap 3.3、AdminLTE 2.4
|
||||
* 前端组件:jQuery 3.7、jqGrid 4.7、layer 3.5、zTree 3.5、jQuery Validation
|
||||
* 分离前端版:Node.js、TypeScript、Vue3、Vite、Ant Design Vue、Vue Vben Admin
|
||||
* 工作流引擎:Flowable 7.1、符合 BPMN 规范、在线流程设计器、中国式流程、退回、撤回、自由流
|
||||
* Bootstrap 版 支持 IE10 及以上版本及其他所有现代浏览器,如:谷歌、火狐、国产浏览器 等
|
||||
* 工作流引擎:Flowable 6.6、符合 BPMN 规范、在线流程设计器、中国式流程、退回、撤回、自由流
|
||||
* Bootstrap 版 支持 IE9 及以上版本及其他所有现代浏览器,如:谷歌、火狐、国产浏览器 等
|
||||
* Vue3 版 支持现代浏览器,如:谷歌 Chrome 86+、火狐、国产浏览器 等
|
||||
* 技术选型(详细):<http://jeesite.com/docs/technology/>
|
||||
* JeeSite Vue 版本:<https://gitee.com/thinkgem/jeesite-vue>
|
||||
* Spring Boot 2.x 版本:<https://gitee.com/thinkgem/jeesite5/tree/v5.9>
|
||||
* Spring Boot 3.x 版本:<https://gitee.com/thinkgem/jeesite5/tree/v5.springboot3>
|
||||
|
||||
## 更多介绍
|
||||
|
||||
@@ -138,8 +120,8 @@
|
||||
|
||||
### 本地运行
|
||||
|
||||
1. 环境准备:`JDK 17+`、`Maven 3.8+`、使用 `MySQL 5.7 or 8.x` 数据库、[其它数据库](https://jeesite.com/docs/technology/#_8、已支持数据库)
|
||||
2. 下载源码:<https://gitee.com/thinkgem/jeesite5/repository/archive/v5.springboot3.zip> 并解压
|
||||
1. 环境准备:`JDK 1.8 or 11、17`、`Maven 3.6+`、使用 `MySQL 5.7 or 8.0` 数据库、[其它数据库](https://jeesite.com/docs/technology/#_8、已支持数据库)
|
||||
2. 下载源码:<https://gitee.com/thinkgem/jeesite5/repository/archive/v5.7.zip> 并解压
|
||||
3. 打开文件:`/web/src/main/resources/config/application.yml` 配置JDBC连接
|
||||
4. 执行脚本:`/web/bin/init-data.bat` 初始化数据库
|
||||
5. 执行脚本:`/web/bin/run-tomcat.bat` 启动服务即可
|
||||
@@ -149,12 +131,12 @@
|
||||
|
||||
### 快速运行
|
||||
|
||||
1. 环境准备:`JDK 17+`、`Maven 3.8+`、无需准备数据库(使用内嵌 H2 DB、Vue资源包)
|
||||
2. 下载源码:<https://gitee.com/thinkgem/jeesite5/repository/archive/v5.springboot3.zip> 并解压
|
||||
1. 环境准备:`JDK 1.8 or 11、17`、`Maven 3.6+`、无需准备数据库(使用内嵌 H2 DB、Vue资源包)
|
||||
2. 下载源码:<https://gitee.com/thinkgem/jeesite5/repository/archive/v5.7.zip> 并解压
|
||||
3. 执行脚本:`/web-fast/bin/run-tomcat.bat` 启动服务即可(自动初始化库)
|
||||
4. Vue分离版本地址:<http://127.0.0.1:8980/vue/login>
|
||||
5. 全栈版本地址:<http://127.0.0.1:8980/a/login>
|
||||
6. 初始登录账号:超级管理员:system 密码:admin
|
||||
4. 全栈版本地址:<http://127.0.0.1:8980/a/login>
|
||||
5. Vue分离版本地址:<http://127.0.0.1:8980/vue/login>
|
||||
6. 默认超级管理员账号:system 密码 admin
|
||||
7. 部署常见问题:<https://jeesite.com/docs/faq/>
|
||||
|
||||
### 容器运行
|
||||
@@ -233,22 +215,20 @@ docker run --name jeesite-web -p 8980:8980 -d --restart unless-stopped \
|
||||
|
||||
1. 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款。
|
||||
2. 不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
|
||||
3. 在使用本软件时,由于它集成了众多第三方开源软件,请共同遵守这些开源软件的使用许可条款规定。
|
||||
4. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、版权声明和其他原作者
|
||||
3. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、版权声明和其他原作者
|
||||
规定需要包含的说明(请尊重原作者的著作权,不要删除或修改文件中的`Copyright`和`@author`信息)
|
||||
更不要,全局替换源代码中的 jeesite 或 ThinkGem 等字样,否则你将违反本协议条款承担责任。
|
||||
5. 您若套用本软件的一些代码或功能参考,请保留源文件中的版权和作者,需要在您的软件介绍明显位置
|
||||
4. 您若套用本软件的一些代码或功能参考,请保留源文件中的版权和作者,需要在您的软件介绍明显位置
|
||||
说明出处,举例:本软件基于 JeeSite 快速开发平台,并附带链接:http://jeesite.com
|
||||
6. 任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
|
||||
7. 如果你对本软件有改进,希望可以贡献给我们,共同进步。
|
||||
8. 本项目已申请软件著作权,请尊重开源,感谢阅读。
|
||||
9. 无用户数限制,无在线人数限制,放心使用。
|
||||
5. 任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
|
||||
6. 如果你对本软件有改进,希望可以贡献给我们,共同进步。
|
||||
7. 本项目已申请软件著作权,请尊重开源,感谢阅读。
|
||||
8. 无用户数限制,无在线人数限制,放心使用。
|
||||
|
||||
## 技术支持与服务
|
||||
## 技术服务与支持
|
||||
|
||||
* 本软件免费,我们也提供了相应的收费服务,因为:
|
||||
* 没有资金的支撑就很难得到发展,特别是一个好的产品,如果 JeeSite 帮助了您,请为我们点赞。支持我们,您可以获得更多回馈,我们会把公益事业做的更好,开放更多资源,回报社区和社会。请给我们一些动力吧,在此非常感谢已支持我们的朋友!
|
||||
* **联系我们**:请访问技术支持与服务页面:<http://s.jeesite.com>
|
||||
* **联系我们**:请访问技术支持服务页面:<https://jeesite.com/docs/support/>
|
||||
|
||||
## 今后如何升级?
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.10.1.springboot3-SNAPSHOT</version>
|
||||
<version>5.8.1-SNAPSHOT</version>
|
||||
<relativePath>../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
|
||||
<!-- Servlet Api -->
|
||||
<dependency>
|
||||
<groupId>jakarta.servlet</groupId>
|
||||
<artifactId>jakarta.servlet-api</artifactId>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>javax.servlet-api</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -45,12 +45,12 @@
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>${commons-io.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Fury serialize -->
|
||||
|
||||
<!-- Java serialization -->
|
||||
<dependency>
|
||||
<groupId>org.apache.fury</groupId>
|
||||
<artifactId>fury-core</artifactId>
|
||||
<version>${fury.version}</version>
|
||||
<groupId>de.ruedigermoeller</groupId>
|
||||
<artifactId>fst</artifactId>
|
||||
<version>${fst.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Jackson json -->
|
||||
|
||||
@@ -15,7 +15,7 @@ import org.apache.commons.text.StringEscapeUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLDecoder;
|
||||
import java.net.URLEncoder;
|
||||
@@ -226,6 +226,7 @@ public class EncodeUtils {
|
||||
// 如果开始不是HTML,XML,JOSN格式,则再进行HTML的 "、<、> 转码。
|
||||
if (!StringUtils.startsWithIgnoreCase(value, "<!--HTML-->") // HTML
|
||||
&& !StringUtils.startsWithIgnoreCase(value, "<?xml ") // XML
|
||||
&& !StringUtils.contains(value, "id=\"FormHtml\"") // JFlow
|
||||
&& !(StringUtils.startsWith(value, "{") && StringUtils.endsWith(value, "}")) // JSON Object
|
||||
&& !(StringUtils.startsWith(value, "[") && StringUtils.endsWith(value, "]")) // JSON Array
|
||||
){
|
||||
@@ -266,8 +267,7 @@ public class EncodeUtils {
|
||||
"(?:')|(?:--)|(/\\*(?:.|[\\n\\r])*?\\*/)|((extractvalue|updatexml|if|mid|database|rand|user)([\\s]*?)\\()"
|
||||
+ "|(\\b(select|update|and|or|delete|insert|trancate|substr|ascii|declare|exec|count|master|into"
|
||||
+ "|drop|execute|case when|sleep|union|load_file)\\b)", Pattern.CASE_INSENSITIVE);
|
||||
private static final Pattern simplePattern = Pattern.compile("[a-z0-9_\\.\\, ]*", Pattern.CASE_INSENSITIVE);
|
||||
private static final Pattern columnNamePattern = Pattern.compile("[a-z0-9_\\.`\"\\[\\]]*", Pattern.CASE_INSENSITIVE);
|
||||
private static final Pattern orderByPattern = Pattern.compile("[a-z0-9_\\.\\, ]*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
/**
|
||||
* SQL过滤,防止注入,传入参数输入有select相关代码,替换空。
|
||||
@@ -284,13 +284,8 @@ public class EncodeUtils {
|
||||
public static String sqlFilter(String text, String source){
|
||||
if (text != null){
|
||||
String value = text;
|
||||
if (StringUtils.inString(source, "simple", "orderBy")) {
|
||||
Matcher matcher = simplePattern.matcher(value);
|
||||
if (!matcher.matches()) {
|
||||
value = StringUtils.EMPTY;
|
||||
}
|
||||
} else if (StringUtils.inString(source, "columnName")) {
|
||||
Matcher matcher = columnNamePattern.matcher(value);
|
||||
if ("orderBy".equals(source)) {
|
||||
Matcher matcher = orderByPattern.matcher(value);
|
||||
if (!matcher.matches()) {
|
||||
value = StringUtils.EMPTY;
|
||||
}
|
||||
|
||||
@@ -1,185 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
*/
|
||||
package com.jeesite.common.codec;
|
||||
|
||||
import com.jeesite.common.io.PropertiesUtils;
|
||||
|
||||
import javax.crypto.BadPaddingException;
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.IllegalBlockSizeException;
|
||||
import javax.crypto.NoSuchPaddingException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.security.*;
|
||||
import java.security.spec.InvalidKeySpecException;
|
||||
import java.security.spec.PKCS8EncodedKeySpec;
|
||||
import java.security.spec.X509EncodedKeySpec;
|
||||
|
||||
/**
|
||||
* RSA 加密解密工具类,非对称加密
|
||||
* @author ThinkGem
|
||||
*/
|
||||
public class RsaUtils {
|
||||
|
||||
private static final String RSA = "RSA";
|
||||
private static final String algorithm = "SHA256withRSA";
|
||||
private static final boolean STORE_BASE64 = PropertiesUtils.getInstance()
|
||||
.getPropertyToBoolean("encrypt.storeBase64", "false");
|
||||
|
||||
/**
|
||||
* 生成 RSA 秘钥对
|
||||
*/
|
||||
public static String[] genKeys() {
|
||||
try {
|
||||
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(RSA);
|
||||
keyPairGenerator.initialize(1024);
|
||||
KeyPair keyPair = keyPairGenerator.generateKeyPair();
|
||||
PublicKey publicKey = keyPair.getPublic();
|
||||
PrivateKey privateKey = keyPair.getPrivate();
|
||||
return new String[]{
|
||||
EncodeUtils.encodeBase64(publicKey.getEncoded()),
|
||||
EncodeUtils.encodeBase64(privateKey.getEncoded()),
|
||||
};
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将 Base64 公钥串,转化为公钥对象
|
||||
* @author ThinkGem
|
||||
*/
|
||||
public static PublicKey toPublicKey(String publicKey) {
|
||||
try {
|
||||
KeyFactory keyFactory = KeyFactory.getInstance(RSA);
|
||||
X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(EncodeUtils.decodeBase64(publicKey));
|
||||
return keyFactory.generatePublic(publicKeySpec);
|
||||
} catch (InvalidKeySpecException | NoSuchAlgorithmException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将 Base64 私钥串,转化为私钥对象
|
||||
* @author ThinkGem
|
||||
*/
|
||||
public static PrivateKey toPrivateKey(String privateKey) {
|
||||
try {
|
||||
KeyFactory keyFactory = KeyFactory.getInstance(RSA);
|
||||
PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(EncodeUtils.decodeBase64(privateKey));
|
||||
return keyFactory.generatePrivate(pkcs8EncodedKeySpec);
|
||||
} catch (InvalidKeySpecException | NoSuchAlgorithmException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 公钥加密
|
||||
* @author ThinkGem
|
||||
*/
|
||||
public static byte[] encode(byte[] input, PublicKey publicKey) {
|
||||
try {
|
||||
Cipher encryptCipher = Cipher.getInstance(RSA);
|
||||
encryptCipher.init(Cipher.ENCRYPT_MODE, publicKey);
|
||||
return encryptCipher.doFinal(input);
|
||||
} catch (InvalidKeyException | NoSuchPaddingException | IllegalBlockSizeException |
|
||||
NoSuchAlgorithmException | BadPaddingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 公钥加密
|
||||
* @author ThinkGem
|
||||
*/
|
||||
public static String encode(String input, PublicKey publicKey) {
|
||||
if (STORE_BASE64) {
|
||||
return EncodeUtils.encodeBase64(encode(input.getBytes(StandardCharsets.UTF_8), publicKey));
|
||||
}
|
||||
return EncodeUtils.encodeHex(encode(input.getBytes(StandardCharsets.UTF_8), publicKey));
|
||||
}
|
||||
|
||||
/**
|
||||
* 私钥解密
|
||||
* @author ThinkGem
|
||||
*/
|
||||
public static byte[] decode(byte[] input, PrivateKey privateKey) {
|
||||
return decodeImpl(input, privateKey);
|
||||
}
|
||||
|
||||
private static byte[] decodeImpl(byte[] input, PrivateKey privateKey) {
|
||||
try {
|
||||
Cipher decryptCipher = Cipher.getInstance(RSA);
|
||||
decryptCipher.init(Cipher.DECRYPT_MODE, privateKey);
|
||||
return decryptCipher.doFinal(input);
|
||||
} catch (InvalidKeyException | NoSuchPaddingException | IllegalBlockSizeException |
|
||||
NoSuchAlgorithmException | BadPaddingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 私钥解密
|
||||
* @author ThinkGem
|
||||
*/
|
||||
public static String decode(String input, PrivateKey privateKey) {
|
||||
if (STORE_BASE64) {
|
||||
return new String(decode(EncodeUtils.decodeBase64(input), privateKey), StandardCharsets.UTF_8);
|
||||
}
|
||||
return new String(decode(EncodeUtils.decodeHex(input), privateKey), StandardCharsets.UTF_8);
|
||||
}
|
||||
|
||||
/**
|
||||
* 私钥签名
|
||||
* @author ThinkGem
|
||||
*/
|
||||
public static byte[] sign(byte[] input, PrivateKey privateKey) {
|
||||
try {
|
||||
Signature sig = Signature.getInstance(algorithm);
|
||||
sig.initSign(privateKey);
|
||||
sig.update(input);
|
||||
return sig.sign();
|
||||
} catch (NoSuchAlgorithmException | SignatureException | InvalidKeyException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 私钥签名
|
||||
* @author ThinkGem
|
||||
*/
|
||||
public static String sign(String input, PrivateKey privateKey) {
|
||||
if (STORE_BASE64) {
|
||||
return EncodeUtils.encodeBase64(sign(input.getBytes(StandardCharsets.UTF_8), privateKey));
|
||||
}
|
||||
return EncodeUtils.encodeHex(sign(input.getBytes(StandardCharsets.UTF_8), privateKey));
|
||||
}
|
||||
|
||||
/**
|
||||
* 公钥验签
|
||||
* @author ThinkGem
|
||||
*/
|
||||
public static boolean verify(byte[] input, PublicKey publicKey, byte[] signature) {
|
||||
try {
|
||||
Signature sig = Signature.getInstance(algorithm);
|
||||
sig.initVerify(publicKey);
|
||||
sig.update(input);
|
||||
return sig.verify(signature);
|
||||
} catch (NoSuchAlgorithmException | SignatureException | InvalidKeyException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 公钥验签
|
||||
* @author ThinkGem
|
||||
*/
|
||||
public static boolean verify(String input, PublicKey publicKey, String signature) {
|
||||
if (STORE_BASE64) {
|
||||
return verify(input.getBytes(StandardCharsets.UTF_8), publicKey, EncodeUtils.decodeBase64(signature));
|
||||
}
|
||||
return verify(input.getBytes(StandardCharsets.UTF_8), publicKey, EncodeUtils.decodeHex(signature));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,9 +7,6 @@ package com.jeesite.common.io;
|
||||
import com.jeesite.common.codec.EncodeUtils;
|
||||
import com.jeesite.common.collect.ListUtils;
|
||||
import com.jeesite.common.lang.StringUtils;
|
||||
import jakarta.servlet.ServletOutputStream;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import net.sf.jmimemagic.Magic;
|
||||
import net.sf.jmimemagic.MagicMatch;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
@@ -18,6 +15,9 @@ import org.slf4j.LoggerFactory;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
|
||||
import javax.activation.MimetypesFileTypeMap;
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.*;
|
||||
import java.util.Enumeration;
|
||||
import java.util.List;
|
||||
|
||||
@@ -36,7 +36,9 @@ public class PropertiesUtils {
|
||||
// 默认加载的文件,可通过继承覆盖(若有相同Key,优先加载后面的)
|
||||
public static final String[] DEFAULT_CONFIG_FILE = new String[]{
|
||||
"classpath:application.yml", "classpath:config/application.yml",
|
||||
"classpath:bootstrap.yml", "classpath:config/bootstrap.yml",
|
||||
"file:application.yml", "file:config/application.yml",
|
||||
"file:bootstrap.yml", "file:config/bootstrap.yml",
|
||||
};
|
||||
|
||||
private static final Logger logger = PropertiesUtils.initLogger();
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
*/
|
||||
package com.jeesite.common.lang;
|
||||
|
||||
import jakarta.servlet.RequestDispatcher;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.RequestDispatcher;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
@@ -28,8 +28,6 @@ public class ExceptionUtils {
|
||||
ex = (Throwable) request.getAttribute("exception");
|
||||
} else if (request.getAttribute(RequestDispatcher.ERROR_EXCEPTION) != null) {
|
||||
ex = (Throwable) request.getAttribute(RequestDispatcher.ERROR_EXCEPTION);
|
||||
} else if (request.getAttribute("org.springframework.web.servlet.DispatcherServlet.EXCEPTION") != null) {
|
||||
ex = (Throwable) request.getAttribute("org.springframework.web.servlet.DispatcherServlet.EXCEPTION");
|
||||
}
|
||||
return ex;
|
||||
}
|
||||
|
||||
@@ -4,14 +4,12 @@
|
||||
*/
|
||||
package com.jeesite.common.lang;
|
||||
|
||||
import com.jeesite.common.io.PropertiesUtils;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.apache.fury.Fury;
|
||||
import org.apache.fury.ThreadSafeFury;
|
||||
import org.apache.fury.config.Language;
|
||||
import org.nustaq.serialization.FSTConfiguration;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.core.NamedThreadLocal;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
@@ -27,24 +25,13 @@ import java.lang.reflect.InvocationTargetException;
|
||||
public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(ObjectUtils.class);
|
||||
|
||||
/**
|
||||
* 当前类的实例持有者(静态内部类,延迟加载,懒汉式,线程安全的单例模式)
|
||||
*/
|
||||
private static final class Static {
|
||||
private static final Boolean isJavaSerialize;
|
||||
private static final ThreadSafeFury fury;
|
||||
static {
|
||||
isJavaSerialize = PropertiesUtils.getInstance()
|
||||
.getPropertyToBoolean("isJavaSerialize", "false");
|
||||
org.apache.fury.logging.LoggerFactory.useSlf4jLogging(true);
|
||||
fury = Fury.builder().withLanguage(Language.JAVA)
|
||||
.withRefTracking(true)
|
||||
.requireClassRegistration(false)
|
||||
.buildThreadSafeFury();
|
||||
}
|
||||
private static final boolean isJavaSerialize;
|
||||
|
||||
static {
|
||||
String[] ver = StringUtils.split(System.getProperty("java.version"), StringUtils.DOT);
|
||||
isJavaSerialize = ver.length > 0 && Integer.parseInt(ver[0]) > 1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 转换为 Double 类型
|
||||
*/
|
||||
@@ -86,37 +73,14 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
|
||||
* 转换为 Long 类型
|
||||
*/
|
||||
public static Long toLong(final Object val) {
|
||||
if (val == null) {
|
||||
return 0L;
|
||||
}
|
||||
try {
|
||||
String str = val.toString();
|
||||
if (StringUtils.isBlank(str)) {
|
||||
return 0L;
|
||||
}
|
||||
if (StringUtils.contains(str, "*")) {
|
||||
Long number = null, d = null;
|
||||
for (String s : StringUtils.split(str, "*")) {
|
||||
d = Long.parseLong(StringUtils.trim(s));
|
||||
if (number == null) {
|
||||
number = d;
|
||||
} else {
|
||||
number *= d;
|
||||
}
|
||||
}
|
||||
return number;
|
||||
}
|
||||
return Long.parseLong(StringUtils.trim(str));
|
||||
} catch (Exception e) {
|
||||
return 0L;
|
||||
}
|
||||
return toDouble(val).longValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为 Integer 类型
|
||||
*/
|
||||
public static Integer toInteger(final Object val) {
|
||||
return toLong(val).intValue();
|
||||
return toDouble(val).intValue();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -189,7 +153,8 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
|
||||
return null;
|
||||
}
|
||||
byte[] bytes = ObjectUtils.serialize(source);
|
||||
return ObjectUtils.unserialize(bytes);
|
||||
Object target = ObjectUtils.unserialize(bytes);
|
||||
return target;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -199,10 +164,10 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
|
||||
*/
|
||||
public static byte[] serialize(Object object) {
|
||||
try {
|
||||
if (Static.isJavaSerialize) {
|
||||
if (isJavaSerialize) {
|
||||
return ObjectUtils.serializeJava(object);
|
||||
} else {
|
||||
return ObjectUtils.serializeFury(object);
|
||||
}else {
|
||||
return ObjectUtils.serializeFst(object);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("serialize: {}", e.getMessage());
|
||||
@@ -217,10 +182,10 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
|
||||
*/
|
||||
public static Object unserialize(byte[] bytes) {
|
||||
try {
|
||||
if (Static.isJavaSerialize) {
|
||||
if (isJavaSerialize) {
|
||||
return ObjectUtils.unserializeJava(bytes);
|
||||
} else {
|
||||
return ObjectUtils.unserializeFury(bytes);
|
||||
}else {
|
||||
return ObjectUtils.unserializeFst(bytes);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("unserialize: {}", e.getMessage());
|
||||
@@ -278,88 +243,51 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
|
||||
}
|
||||
return object;
|
||||
}
|
||||
|
||||
|
||||
private static ThreadLocal<FSTConfiguration> fstConfiguration =
|
||||
new NamedThreadLocal<FSTConfiguration>("FSTConfiguration") {
|
||||
@Override
|
||||
public FSTConfiguration initialValue() {
|
||||
return FSTConfiguration.createDefaultConfiguration();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 序列化对象
|
||||
* FST 序列化对象
|
||||
* @param object
|
||||
* @return
|
||||
*/
|
||||
public static byte[] serializeFury(Object object) {
|
||||
public static byte[] serializeFst(Object object) {
|
||||
if (object == null){
|
||||
return null;
|
||||
}
|
||||
long beginTime = System.currentTimeMillis();
|
||||
byte[] bytes = Static.fury.serialize(object);
|
||||
byte[] bytes = fstConfiguration.get().asByteArray(object);
|
||||
long totalTime = System.currentTimeMillis() - beginTime;
|
||||
if (totalTime > 30000){
|
||||
logger.warn(object.getClass() + " serialize time: " + TimeUtils.formatTime(totalTime));
|
||||
logger.warn(object.getClass() + " fst serialize time: " + TimeUtils.formatTime(totalTime));
|
||||
}
|
||||
return bytes;
|
||||
}
|
||||
|
||||
/**
|
||||
* 反序列化对象
|
||||
* FST 反序列化对象
|
||||
* @param bytes
|
||||
* @return
|
||||
*/
|
||||
public static Object unserializeFury(byte[] bytes) {
|
||||
public static Object unserializeFst(byte[] bytes) {
|
||||
if (bytes == null){
|
||||
return null;
|
||||
}
|
||||
long beginTime = System.currentTimeMillis();
|
||||
Object object = Static.fury.deserialize(bytes);
|
||||
Object object = fstConfiguration.get().asObject(bytes);
|
||||
long totalTime = System.currentTimeMillis() - beginTime;
|
||||
if (totalTime > 30000 && object != null){
|
||||
logger.warn(object.getClass() + " unserialize time: " + TimeUtils.formatTime(totalTime));
|
||||
logger.warn(object.getClass() + " fst unserialize time: " + TimeUtils.formatTime(totalTime));
|
||||
}
|
||||
return object;
|
||||
}
|
||||
|
||||
// private static ThreadLocal<FSTConfiguration> fstConfiguration =
|
||||
// new NamedThreadLocal<FSTConfiguration>("FSTConfiguration") {
|
||||
// @Override
|
||||
// public FSTConfiguration initialValue() {
|
||||
// return FSTConfiguration.createDefaultConfiguration();
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// /**
|
||||
// * FST 序列化对象
|
||||
// * @param object
|
||||
// * @return
|
||||
// */
|
||||
// public static byte[] serializeFst(Object object) {
|
||||
// if (object == null){
|
||||
// return null;
|
||||
// }
|
||||
// long beginTime = System.currentTimeMillis();
|
||||
// byte[] bytes = fstConfiguration.get().asByteArray(object);
|
||||
// long totalTime = System.currentTimeMillis() - beginTime;
|
||||
// if (totalTime > 30000){
|
||||
// logger.warn(object.getClass() + " fst serialize time: " + TimeUtils.formatTime(totalTime));
|
||||
// }
|
||||
// return bytes;
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * FST 反序列化对象
|
||||
// * @param bytes
|
||||
// * @return
|
||||
// */
|
||||
// public static Object unserializeFst(byte[] bytes) {
|
||||
// if (bytes == null){
|
||||
// return null;
|
||||
// }
|
||||
// long beginTime = System.currentTimeMillis();
|
||||
// Object object = fstConfiguration.get().asObject(bytes);
|
||||
// long totalTime = System.currentTimeMillis() - beginTime;
|
||||
// if (totalTime > 30000 && object != null){
|
||||
// logger.warn(object.getClass() + " fst unserialize time: " + TimeUtils.formatTime(totalTime));
|
||||
// }
|
||||
// return object;
|
||||
// }
|
||||
|
||||
// private static Pool<Kryo> kryoPool = new Pool<Kryo>(true, false, 8) {
|
||||
// protected Kryo create() {
|
||||
// Kryo kryo = new Kryo();
|
||||
|
||||
@@ -26,7 +26,6 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
|
||||
public static final String COLON = ":";
|
||||
public static final String TILDE = "~";
|
||||
public static final String UNDERLINE = "_";
|
||||
public static final String MINUS = "-";
|
||||
|
||||
/**
|
||||
* 分隔字符串(逗号分隔)
|
||||
@@ -285,7 +284,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
|
||||
boolean upperCase = false;
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
char c = s.charAt(i);
|
||||
if (c == UNDERLINE.charAt(0) || c == MINUS.charAt(0)) {
|
||||
if (c == UNDERLINE.charAt(0)) {
|
||||
upperCase = i != 1; // 不允许第二个字符是大写
|
||||
} else if (upperCase) {
|
||||
sb.append(Character.toUpperCase(c));
|
||||
|
||||
@@ -50,7 +50,7 @@ public class JsonMapper extends ObjectMapper {
|
||||
private static final class JsonMapperHolder {
|
||||
private static final JsonMapper INSTANCE = new JsonMapper();
|
||||
}
|
||||
|
||||
|
||||
public JsonMapper() {
|
||||
// Spring ObjectMapper 初始化配置,支持 @JsonView
|
||||
new Jackson2ObjectMapperBuilder().configure(this);
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.jeesite.common.codec.EncodeUtils;
|
||||
import com.jeesite.common.io.PropertiesUtils;
|
||||
import com.jeesite.common.lang.StringUtils;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
public class IpUtils {
|
||||
|
||||
|
||||
@@ -77,6 +77,7 @@ public class ReflectUtils {
|
||||
//Method method = getAccessibleMethodByName(object, methodName, 0);
|
||||
//if (method == null) { return; }
|
||||
//Class<?> returnType = method.getReturnType();
|
||||
System.out.println(object.getClass());
|
||||
MethodAccess ma = MethodAccess.get(object.getClass());
|
||||
Class<?> returnType = ma.getReturnTypes()[ma.getIndex(methodName)];
|
||||
childObj = returnType.getDeclaredConstructor().newInstance();
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.apache.poi.xssf.usermodel.XSSFRichTextString;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.*;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
*/
|
||||
package com.jeesite.common.utils.excel.fieldtype;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
|
||||
/**
|
||||
* BigDecimal类型转换
|
||||
* @author ThinkGem
|
||||
* @version 2020-3-5
|
||||
* @example fieldType = BigDecimalType.class
|
||||
*/
|
||||
public class BigDecimalType implements FieldType {
|
||||
|
||||
/**
|
||||
* 获取对象值(导入)
|
||||
*/
|
||||
@Override
|
||||
public Object getValue(String val) {
|
||||
return new BigDecimal(val);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取对象值(导出)
|
||||
*/
|
||||
@Override
|
||||
public String setValue(Object val) {
|
||||
return val == null ? StringUtils.EMPTY : val.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取对象值格式(导出)
|
||||
*/
|
||||
@Override
|
||||
public String getDataFormat() {
|
||||
return "0.00";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,9 +7,9 @@ package com.jeesite.common.web;
|
||||
import com.jeesite.common.codec.EncodeUtils;
|
||||
import com.jeesite.common.io.PropertiesUtils;
|
||||
import com.jeesite.common.lang.StringUtils;
|
||||
import jakarta.servlet.http.Cookie;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.Cookie;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* Cookie工具类
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
package com.jeesite.common.web.http;
|
||||
|
||||
import com.jeesite.common.io.PropertiesUtils;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* 统一包装结果输出类:{ code: 200, msg: "", data: {} | [] }
|
||||
|
||||
@@ -12,15 +12,14 @@ import com.jeesite.common.lang.ExceptionUtils;
|
||||
import com.jeesite.common.lang.StringUtils;
|
||||
import com.jeesite.common.mapper.JsonMapper;
|
||||
import com.jeesite.common.mapper.XmlMapper;
|
||||
import jakarta.servlet.ServletRequest;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.apache.commons.lang3.Validate;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.util.AntPathMatcher;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
@@ -58,11 +57,6 @@ public class ServletUtils {
|
||||
// 是否打印错误信息参数到视图页面(生产环境关闭)
|
||||
private static final Boolean PRINT_ERROR_INFO = PROPS.getPropertyToBoolean("error.page.printErrorInfo", "true");
|
||||
|
||||
// 允许重定向的地址,不设置为全部允许,设置this只允许本项目内部跳转,多个用逗号隔开,例如:this,http://*.jeesite.com
|
||||
private static final String[] ALLOW_REDIRECTS = PROPS.getPropertyToArray("shiro.allowRedirects", "");
|
||||
private static final Boolean SCHEME_HTTPS = PROPS.getPropertyToBoolean("server.schemeHttps", "false");
|
||||
private static final AntPathMatcher PATH_MATCHER = new AntPathMatcher();
|
||||
|
||||
/**
|
||||
* 获取当前请求对象
|
||||
* web.xml: <listener><listener-class>
|
||||
@@ -390,15 +384,10 @@ public class ServletUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前请求的域名(含端口)
|
||||
* @author ThinkGem
|
||||
* 获取请求的域名(含端口)
|
||||
*/
|
||||
public static String getThisDomain(HttpServletRequest request) {
|
||||
String url = request.getRequestURL().toString();
|
||||
public static String getRequestDomain(String url) {
|
||||
String scheme = StringUtils.substringBefore(url, "://");
|
||||
if (SCHEME_HTTPS && StringUtils.equals(scheme, "http")) {
|
||||
scheme = "https";
|
||||
}
|
||||
String domain = StringUtils.substringAfter(url, "://");
|
||||
if (StringUtils.contains(domain, "/")) {
|
||||
domain = StringUtils.substringBefore(domain, "/");
|
||||
@@ -406,28 +395,6 @@ public class ServletUtils {
|
||||
return scheme + "://" + domain;
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证地址是否允许重定向
|
||||
* @author ThinkGem
|
||||
*/
|
||||
public static boolean isAllowRedirects(HttpServletRequest request, String url) {
|
||||
if (ALLOW_REDIRECTS == null || ALLOW_REDIRECTS.length == 0) {
|
||||
return true;
|
||||
}
|
||||
boolean allow = false;
|
||||
for (String pattern : ALLOW_REDIRECTS) {
|
||||
String p = StringUtils.trim(pattern);
|
||||
if ("this".equals(p)) {
|
||||
p = getThisDomain(request);
|
||||
}
|
||||
if (PATH_MATCHER.match(p + "/**", url)){
|
||||
allow = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return allow;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得请求参数值
|
||||
*/
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*/
|
||||
package com.jeesite.common.web.http;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import eu.bitwalker.useragentutils.Browser;
|
||||
import eu.bitwalker.useragentutils.DeviceType;
|
||||
|
||||
@@ -235,6 +235,3 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
|
||||
.ui-jqgrid .ui-jqgrid-frozen .ui-jqgrid-htable th div {height:46px!important;}
|
||||
.ui-jqgrid .ui-jqgrid-htable th div {padding:15px 0 15px 2px;}
|
||||
.ui-jqgrid tr.jqgrow td {height: 49px;}
|
||||
.table-form .ui-jqgrid .ui-jqgrid-frozen .ui-jqgrid-htable th div {height:36px!important;}
|
||||
.table-form .ui-jqgrid .ui-jqgrid-htable th div {padding:9px 0 8px 2px;}
|
||||
.table-form .ui-jqgrid tr.jqgrow td {height: 39px;}
|
||||
|
||||
@@ -235,6 +235,3 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
|
||||
.ui-jqgrid .ui-jqgrid-frozen .ui-jqgrid-htable th div {height:46px!important;}
|
||||
.ui-jqgrid .ui-jqgrid-htable th div {padding:15px 0 15px 2px;}
|
||||
.ui-jqgrid tr.jqgrow td {height: 49px;}
|
||||
.table-form .ui-jqgrid .ui-jqgrid-frozen .ui-jqgrid-htable th div {height:36px!important;}
|
||||
.table-form .ui-jqgrid .ui-jqgrid-htable th div {padding:9px 0 8px 2px;}
|
||||
.table-form .ui-jqgrid tr.jqgrow td {height: 39px;}
|
||||
|
||||
@@ -296,9 +296,6 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
|
||||
.ui-jqgrid .ui-jqgrid-frozen .ui-jqgrid-htable th div {height:46px!important;}
|
||||
.ui-jqgrid .ui-jqgrid-htable th div {padding:15px 0 15px 2px;}
|
||||
.ui-jqgrid tr.jqgrow td {height: 49px;}
|
||||
.table-form .ui-jqgrid .ui-jqgrid-frozen .ui-jqgrid-htable th div {height:36px!important;}
|
||||
.table-form .ui-jqgrid .ui-jqgrid-htable th div {padding:9px 0 8px 2px;}
|
||||
.table-form .ui-jqgrid tr.jqgrow td {height: 39px;}
|
||||
|
||||
.ui-jqgrid tr.jqgroup td, .ui-jqgrid tr.footrow td, .ui-jqgrid tr.jqfoot td {background:#323232;}
|
||||
.ui-jqgrid .actions .moreItems {background:#1a1a1a;border-color:#3c3c3c;box-shadow:none;}
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 2.5 KiB |
@@ -20,11 +20,11 @@ span{display:block;font-size:12px;line-height:12px;}
|
||||
<p>您正在使用 Internet Explorer 的过期版本(IE6、IE7、IE8 内核的浏览器)。这意味着在升级浏览器前,您将无法继续访问。</p>
|
||||
<hr>
|
||||
<h2>为什么会出现这个页面?</h2>
|
||||
<p>如果您不知道升级浏览器是什么意思,请请教一些熟练电脑操作的朋友。如果您使用的不是Internet Explorer,而是360、QQ、搜狗等,双核浏览器,出现这个页面可能是您切换到了兼容模式,请<strong style="color:#f00;">切换到极速模式</strong>下,如果还不行请升级至最新版浏览器。</p>
|
||||
<p>如果您不知道升级浏览器是什么意思,请请教一些熟练电脑操作的朋友。如果您使用的不是IE6/7/8,而是360、QQ、搜狗等,双核浏览器,出现这个页面可能是您切换到了兼容模式,请<strong style="color:#f00;">切换到极速模式</strong>下,如果还不行请升级至最新版浏览器。</p>
|
||||
<hr>
|
||||
<h2>请注意:微软(Microsoft)对 Windows XP、Vista、7、8、8.1 及 Internet Explorer 的支持已经结束</h2>
|
||||
<p>微软(Microsoft)不再为已经结束的版本提供相应支持和更新。如果您继续使用这些,您将可能受到病毒、间谍软件和其他恶意软件的攻击,无法确保个人信息的安全。请参阅 <a href="http://windows.microsoft.com/zh-cn/windows/end-support-help">Windows XP 支持已经结束的说明</a> 。</p>
|
||||
<p>于 2022 年 6 月 15 日,微软对 Internet Explorer 11 的支持也已结束。请参阅 <a href="http://windows.microsoft.com/zh-cn/internet-explorer/download-ie"> Internet Explorer 浏览器下载</a>。</p>
|
||||
<h2>请注意:微软(Microsoft)对 Windows XP 及 IE6、IE7、IE8、IE9、IE10 的支持已经结束</h2>
|
||||
<p>自 2014 年 4 月 8 日起,微软(Microsoft)不再为 Windows XP 和 Internet Explorer 8 及以下版本提供相应支持和更新。如果您继续使用这些,您将可能受到病毒、间谍软件和其他恶意软件的攻击,无法确保个人信息的安全。请参阅 <a href="http://windows.microsoft.com/zh-cn/windows/end-support-help">Microsoft 关于 Windows XP 支持已经结束的说明</a> 。</p>
|
||||
<p>尽管 Internet Explorer 11 将于 2022 年 6 月 15 日也停止了支持。但您也可以继续使用 <a href="http://windows.microsoft.com/zh-cn/internet-explorer/download-ie"> Internet Explorer 11 浏览器</a>。</p>
|
||||
<hr>
|
||||
<h2>您可以选择更先进的浏览器</h2>
|
||||
<p>推荐使用以下浏览器的最新版本。如果您的电脑已有以下浏览器的最新版本则直接使用该浏览器访问 <b id="url"></b>即可。</p>
|
||||
@@ -32,7 +32,7 @@ span{display:block;font-size:12px;line-height:12px;}
|
||||
<li><img src="img/chrome360.jpg"><a href="http://chrome.360.cn/"> 360极速浏览器<span>360 Chrome</span></a></li>
|
||||
<li><img src="img/chrome.jpg"><a href="http://www.google.cn/intl/zh-CN/chrome/browser/desktop/index.html"> 谷歌浏览器<span>Google Chrome</span></a></li>
|
||||
<li><img src="img/firefox.jpg"><a href="http://www.firefox.com.cn/download/"> 火狐浏览器<span>Mozilla Firefox</span></a></li>
|
||||
<li><img src="img/edge.png"><a href="https://www.microsoft.com/zh-cn/edge"> Edge 浏览器<span>Microsoft Edge</span></a></li>
|
||||
<li><img src="img/ie.jpg"><a href="https://www.microsoft.com/zh-cn/edge"> Edge 浏览器<span>Microsoft Edge</span></a></li>
|
||||
</ul><div class="clean"></div></div>
|
||||
<hr><br/>
|
||||
<script>
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
*/
|
||||
package com.jeesite.test.codec;
|
||||
|
||||
import com.jeesite.common.codec.EncodeUtils;
|
||||
import com.jeesite.common.codec.RsaUtils;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.security.PrivateKey;
|
||||
import java.security.PublicKey;
|
||||
|
||||
/**
|
||||
* RSA 加密解密工具类,非对称加密
|
||||
* @author ThinkGem
|
||||
*/
|
||||
public class RsaUtilsTest {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
String s = "Hello word! 你好,中文!";
|
||||
System.out.println(s);
|
||||
|
||||
String[] keys = RsaUtils.genKeys();
|
||||
System.out.println("公钥:" + keys[0]);
|
||||
PublicKey publicKey = RsaUtils.toPublicKey(keys[0]);
|
||||
System.out.println("私钥:" + keys[1]);
|
||||
PrivateKey privateKey = RsaUtils.toPrivateKey(keys[1]);
|
||||
|
||||
byte[] data = RsaUtils.encode(s.getBytes(), publicKey);
|
||||
String dataString = EncodeUtils.encodeBase64(data);
|
||||
System.out.println("加密数据:" + dataString);
|
||||
|
||||
byte[] data2 = RsaUtils.decode(data, privateKey);
|
||||
String dataString2 = new String(data2, StandardCharsets.UTF_8);
|
||||
System.out.println("解密数据:" + dataString2);
|
||||
|
||||
byte[] sign = RsaUtils.sign(s.getBytes(), privateKey);
|
||||
System.out.println("数据签名:" + EncodeUtils.encodeBase64(sign));
|
||||
|
||||
boolean b = RsaUtils.verify(s.getBytes(), publicKey, sign);
|
||||
System.out.println("数据验签:" + b);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
*/
|
||||
package com.jeesite.test.lang;
|
||||
|
||||
import com.jeesite.common.lang.ObjectUtils;
|
||||
|
||||
import java.text.ParseException;
|
||||
|
||||
/**
|
||||
* 对象操作工具测试类
|
||||
* @author ThinkGem
|
||||
* @version 2025-02-05
|
||||
*/
|
||||
public class ObjectUtilsTest {
|
||||
|
||||
public static void main(String[] args) throws ParseException {
|
||||
String str = "1738746499603094500";
|
||||
System.out.println(ObjectUtils.toDouble(str));
|
||||
System.out.println(ObjectUtils.toFloat(str));
|
||||
System.out.println(ObjectUtils.toLong(str));
|
||||
System.out.println(ObjectUtils.toInteger(str));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
*/
|
||||
package com.jeesite.test.web.http;
|
||||
|
||||
import com.jeesite.common.web.http.HttpClientUtils;
|
||||
|
||||
/**
|
||||
* HTTP客户端测试工具类(支持HTTPS)
|
||||
* @author ThinkGem
|
||||
* @version 2017-3-27
|
||||
*/
|
||||
public class HttpClientUtilsTest {
|
||||
|
||||
public static void main(String[] args) {
|
||||
String content = HttpClientUtils.get("https://jeesite.com");
|
||||
System.out.println(content);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -329,7 +329,7 @@
|
||||
</word>
|
||||
<word>
|
||||
<id>a63e3fda50530388ba263296184d8a6919a75791</id>
|
||||
<length>4000</length>
|
||||
<length>1000</length>
|
||||
<decimal>null</decimal>
|
||||
<array>false</array>
|
||||
<array_dimension>null</array_dimension>
|
||||
|
||||
@@ -16,7 +16,7 @@ CREATE TABLE js_app_comment
|
||||
update_date timestamp NOT NULL,
|
||||
remarks vargraphic(500),
|
||||
create_by_name varchar(200),
|
||||
device_info varchar(4000),
|
||||
device_info varchar(1000),
|
||||
reply_date date,
|
||||
reply_content vargraphic(500),
|
||||
reply_user_code varchar(64),
|
||||
|
||||
@@ -16,7 +16,7 @@ CREATE TABLE js_app_comment
|
||||
update_date datetime NOT NULL,
|
||||
remarks varchar(500),
|
||||
create_by_name varchar(200),
|
||||
device_info varchar(4000),
|
||||
device_info varchar(1000),
|
||||
reply_date date,
|
||||
reply_content varchar(500),
|
||||
reply_user_code varchar(64),
|
||||
|
||||
@@ -16,7 +16,7 @@ CREATE TABLE [js_app_comment]
|
||||
[update_date] datetime NOT NULL,
|
||||
[remarks] nvarchar(500),
|
||||
[create_by_name] varchar(200),
|
||||
[device_info] varchar(4000),
|
||||
[device_info] varchar(1000),
|
||||
[reply_date] date,
|
||||
[reply_content] nvarchar(500),
|
||||
[reply_user_code] varchar(64),
|
||||
|
||||
@@ -17,7 +17,7 @@ CREATE TABLE js_app_comment
|
||||
update_date datetime NOT NULL COMMENT '更新时间',
|
||||
remarks varchar(500) COMMENT '备注信息',
|
||||
create_by_name varchar(200) COMMENT '提问人员姓名',
|
||||
device_info varchar(4000) COMMENT '设备信息',
|
||||
device_info varchar(1000) COMMENT '设备信息',
|
||||
reply_date date COMMENT '回复时间',
|
||||
reply_content varchar(500) COMMENT '回复意见',
|
||||
reply_user_code varchar(64) COMMENT '回复人员',
|
||||
|
||||
@@ -16,7 +16,7 @@ CREATE TABLE js_app_comment
|
||||
update_date timestamp NOT NULL,
|
||||
remarks nvarchar2(500),
|
||||
create_by_name varchar2(200),
|
||||
device_info varchar2(4000),
|
||||
device_info varchar2(1000),
|
||||
reply_date date,
|
||||
reply_content nvarchar2(500),
|
||||
reply_user_code varchar2(64),
|
||||
|
||||
@@ -16,7 +16,7 @@ CREATE TABLE js_app_comment
|
||||
update_date timestamp NOT NULL,
|
||||
remarks varchar(500),
|
||||
create_by_name varchar(200),
|
||||
device_info varchar(4000),
|
||||
device_info varchar(1000),
|
||||
reply_date date,
|
||||
reply_content varchar(500),
|
||||
reply_user_code varchar(64),
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.10.1.springboot3-SNAPSHOT</version>
|
||||
<version>5.8.1-SNAPSHOT</version>
|
||||
<relativePath>../../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -4,15 +4,17 @@
|
||||
*/
|
||||
package com.jeesite.modules.app.entity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
import javax.validation.constraints.Size;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.jeesite.common.entity.DataEntity;
|
||||
import com.jeesite.common.mybatis.annotation.Column;
|
||||
import com.jeesite.common.mybatis.annotation.Table;
|
||||
import com.jeesite.common.mybatis.mapper.query.QueryType;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.Size;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* APP意见反馈Entity
|
||||
@@ -82,7 +84,7 @@ public class AppComment extends DataEntity<AppComment> {
|
||||
this.contact = contact;
|
||||
}
|
||||
|
||||
@Size(min=0, max=4000, message="设备信息长度不能超过 4000 个字符")
|
||||
@Size(min=0, max=1000, message="设备信息长度不能超过 1000 个字符")
|
||||
public String getDeviceInfo() {
|
||||
return deviceInfo;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ package com.jeesite.modules.app.entity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import jakarta.validation.constraints.Size;
|
||||
import javax.validation.constraints.Size;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.jeesite.common.entity.DataEntity;
|
||||
|
||||
@@ -6,8 +6,8 @@ package com.jeesite.modules.app.web;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
*/
|
||||
package com.jeesite.modules.app.web;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@@ -16,7 +16,7 @@ CREATE TABLE ${_prefix}app_comment
|
||||
update_date timestamp NOT NULL,
|
||||
remarks vargraphic(500),
|
||||
create_by_name varchar(200),
|
||||
device_info varchar(4000),
|
||||
device_info varchar(1000),
|
||||
reply_date date,
|
||||
reply_content vargraphic(500),
|
||||
reply_user_code varchar(64),
|
||||
|
||||
@@ -16,7 +16,7 @@ CREATE TABLE ${_prefix}app_comment
|
||||
update_date datetime NOT NULL,
|
||||
remarks varchar(500),
|
||||
create_by_name varchar(200),
|
||||
device_info varchar(4000),
|
||||
device_info varchar(1000),
|
||||
reply_date date,
|
||||
reply_content varchar(500),
|
||||
reply_user_code varchar(64),
|
||||
|
||||
@@ -16,7 +16,7 @@ CREATE TABLE [${_prefix}app_comment]
|
||||
[update_date] datetime NOT NULL,
|
||||
[remarks] nvarchar(500),
|
||||
[create_by_name] varchar(200),
|
||||
[device_info] varchar(4000),
|
||||
[device_info] varchar(1000),
|
||||
[reply_date] date,
|
||||
[reply_content] nvarchar(500),
|
||||
[reply_user_code] varchar(64),
|
||||
|
||||
@@ -17,7 +17,7 @@ CREATE TABLE ${_prefix}app_comment
|
||||
update_date datetime NOT NULL COMMENT '更新时间',
|
||||
remarks varchar(500) COMMENT '备注信息',
|
||||
create_by_name varchar(200) COMMENT '提问人员姓名',
|
||||
device_info varchar(4000) COMMENT '设备信息',
|
||||
device_info varchar(1000) COMMENT '设备信息',
|
||||
reply_date date COMMENT '回复时间',
|
||||
reply_content varchar(500) COMMENT '回复意见',
|
||||
reply_user_code varchar(64) COMMENT '回复人员',
|
||||
|
||||
@@ -16,7 +16,7 @@ CREATE TABLE ${_prefix}app_comment
|
||||
update_date timestamp NOT NULL,
|
||||
remarks nvarchar2(500),
|
||||
create_by_name varchar2(200),
|
||||
device_info varchar2(4000),
|
||||
device_info varchar2(1000),
|
||||
reply_date date,
|
||||
reply_content nvarchar2(500),
|
||||
reply_user_code varchar2(64),
|
||||
|
||||
@@ -16,7 +16,7 @@ CREATE TABLE ${_prefix}app_comment
|
||||
update_date timestamp NOT NULL,
|
||||
remarks varchar(500),
|
||||
create_by_name varchar(200),
|
||||
device_info varchar(4000),
|
||||
device_info varchar(1000),
|
||||
reply_date date,
|
||||
reply_content varchar(500),
|
||||
reply_user_code varchar(64),
|
||||
|
||||
@@ -19,9 +19,4 @@
|
||||
5.7.0
|
||||
5.7.1
|
||||
5.8.0
|
||||
5.8.1
|
||||
5.9.0
|
||||
5.9.1
|
||||
5.9.2
|
||||
5.10.0
|
||||
5.10.1
|
||||
5.8.1
|
||||
@@ -160,7 +160,7 @@
|
||||
</div>
|
||||
<% } %>
|
||||
<script>
|
||||
$('#inputForm').validate({
|
||||
$("#inputForm").validate({
|
||||
submitHandler: function(form){
|
||||
js.ajaxSubmitForm($(form), function(data){
|
||||
js.showMessage(data.message);
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<#form:form id="searchForm" model="${appComment}" action="${ctx}/app/appComment/listData" method="post" class="form-inline "
|
||||
<#form:form id="searchForm" model="${appComment}" action="${ctx}/app/appComment/listData" method="post" class="form-inline hide"
|
||||
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('问题分类')}:</label>
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
</div>
|
||||
<% } %>
|
||||
<script>
|
||||
$('#inputForm').validate({
|
||||
$("#inputForm").validate({
|
||||
submitHandler: function(form){
|
||||
js.ajaxSubmitForm($(form), function(data){
|
||||
js.showMessage(data.message);
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<#form:form id="searchForm" model="${appUpgrade}" action="${ctx}/app/appUpgrade/listData" method="post" class="form-inline "
|
||||
<#form:form id="searchForm" model="${appUpgrade}" action="${ctx}/app/appUpgrade/listData" method="post" class="form-inline hide"
|
||||
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('应用代号')}:</label>
|
||||
@@ -37,7 +37,7 @@
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('发布时间')}:</label>
|
||||
<div class="control-inline">
|
||||
<#form:input path="upDate" readonly="true" maxlength="20" class="form-control laydate width-date"
|
||||
<#form:input path="upDate" readonly="true" maxlength="20" class="form-control laydate width-datetime"
|
||||
dataFormat="date" data-type="date" data-format="yyyy-MM-dd"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
51
modules/cms/README.md
Normal file
51
modules/cms/README.md
Normal file
@@ -0,0 +1,51 @@
|
||||
|
||||
# 技术交流
|
||||
|
||||
* 交流 QQ 群(千人大群):`127515876`、`209330483`、`223507718`、`709534275`、`730390092`、`1373527`、`183903863(外包)`
|
||||
* 码云Gitee:<https://gitee.com/thinkgem/jeesite5>
|
||||
* GitHub:<https://github.com/thinkgem/jeesite5>
|
||||
* 作者博客:<https://my.oschina.net/thinkgem>
|
||||
* **帮助文档:**<http://docs.jeesite.com>
|
||||
* 官方网站:<http://jeesite.com>
|
||||
* 问题反馈:<http://jeesite.net> [【新手必读】](https://gitee.com/thinkgem/jeesite5/issues/I18ARR)
|
||||
* 关注微信公众号,了解最新动态:
|
||||
|
||||

|
||||
|
||||
## 介绍
|
||||
|
||||
JeeSite CMS 内容管理,是一个轻量级的 Web 建站神器,可以快速进行企业网站、门户网站、个人博客、知识库等建设。
|
||||
|
||||
* 基础功能:站点管理、栏目管理、栏目权限、模板管理、内容发布
|
||||
* 高级功能:多租户、多站点、页面静态化访问、全文检索
|
||||
|
||||
规划内容:站内统计、标签管理、留言管理、相关文章选取、文章多栏目
|
||||
|
||||
## 快速体验
|
||||
|
||||
### 在线演示
|
||||
|
||||
1. 前端演示:<http://demo.jeesite.com/js/f/index-main.html>
|
||||
2. 后端演示:<http://demo.jeesite.com/js/a/index#/js/a/cms/index#内容发布>
|
||||
3. 账号:system
|
||||
4. 密码:admin
|
||||
|
||||
### 本地运行
|
||||
|
||||
1. 环境准备:`JDK 1.8 or 11、17`、`Maven 3.6+`、`MySQL 5.7 or 8.0`
|
||||
2. 下载源码:<https://gitee.com/thinkgem/jeesite5/tree/master/modules/cms>
|
||||
3. 打开文件:/web`/src/main/resources/config/application.yml` 配置JDBC连接
|
||||
4. 打开文件:/web`/pom.xml` 打开 `jeesite-module-cms` 模块(去掉的注释标记)
|
||||
5. 执行脚本:/web`/bin/init-data.bat` 初始化数据库
|
||||
5. 执行脚本:/web`/bin/run-tomcat.bat` 启动服务即可
|
||||
6. 浏览器访问:<http://127.0.0.1:8980/js/> 账号 system 密码 admin
|
||||
7. 部署常见问题:<https://jeesite.com/docs/faq/>
|
||||
|
||||
### 开发环境
|
||||
|
||||
1. 部署运行文档:<https://jeesite.com/docs/install-deploy/>
|
||||
2. 部署常见问题:<https://jeesite.com/docs/faq/>
|
||||
|
||||
## 在线文档
|
||||
|
||||
* <http://docs.jeesite.com>
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.10.1.springboot3-SNAPSHOT</version>
|
||||
<version>5.8.1-SNAPSHOT</version>
|
||||
<relativePath>../../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -13,9 +13,9 @@ import com.jeesite.common.mybatis.annotation.Table;
|
||||
import com.jeesite.common.mybatis.mapper.query.QueryType;
|
||||
import com.jeesite.modules.cms.utils.CmsUtils;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
@@ -61,7 +61,7 @@ import java.util.Date;
|
||||
@Column(name = "site_code"),
|
||||
@Column(name = "site_name"),
|
||||
})
|
||||
}, extWhereKeys = "dsfCategory", orderBy = "a.update_date DESC"
|
||||
}, orderBy = "a.update_date DESC", extWhereKeys = "dsfCategory"
|
||||
)
|
||||
public class Article extends DataEntity<Article> {
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*/
|
||||
package com.jeesite.modules.cms.entity;
|
||||
|
||||
import jakarta.validation.constraints.Size;
|
||||
import javax.validation.constraints.Size;
|
||||
|
||||
import com.jeesite.common.entity.DataEntity;
|
||||
import com.jeesite.common.entity.Extend;
|
||||
|
||||
@@ -14,8 +14,8 @@ import com.jeesite.common.mybatis.annotation.Table;
|
||||
import com.jeesite.common.mybatis.mapper.query.QueryType;
|
||||
import com.jeesite.modules.cms.utils.CmsUtils;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -44,7 +44,7 @@ import java.util.List;
|
||||
on = "s.site_code = a.site_code", columns = {
|
||||
@Column(name = "site_name"),
|
||||
})
|
||||
}, extWhereKeys = "dsfCategory", orderBy = "a.tree_sorts, a.category_code"
|
||||
}, orderBy = "a.tree_sorts, a.category_code", extWhereKeys = "dsfCategory"
|
||||
)
|
||||
public class Category extends TreeEntity<Category> {
|
||||
|
||||
|
||||
@@ -6,10 +6,10 @@ package com.jeesite.modules.cms.entity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import jakarta.validation.constraints.Size;
|
||||
import javax.validation.constraints.Size;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.jeesite.common.entity.BaseEntity;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*/
|
||||
package com.jeesite.modules.cms.entity;
|
||||
|
||||
import jakarta.validation.constraints.Size;
|
||||
import javax.validation.constraints.Size;
|
||||
|
||||
import com.jeesite.common.entity.DataEntity;
|
||||
import com.jeesite.common.mybatis.annotation.Column;
|
||||
|
||||
@@ -14,8 +14,8 @@ import com.jeesite.modules.cms.utils.CmsUtils;
|
||||
import com.jeesite.modules.sys.utils.CorpUtils;
|
||||
import com.jeesite.modules.sys.utils.UserUtils;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*/
|
||||
package com.jeesite.modules.cms.entity;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import com.jeesite.common.entity.DataEntity;
|
||||
import com.jeesite.common.mybatis.annotation.Column;
|
||||
|
||||
@@ -6,7 +6,7 @@ package com.jeesite.modules.cms.entity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import jakarta.validation.constraints.Size;
|
||||
import javax.validation.constraints.Size;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.jeesite.common.entity.BaseEntity;
|
||||
|
||||
@@ -20,7 +20,7 @@ import com.jeesite.modules.cms.service.CategoryService;
|
||||
import com.jeesite.modules.cms.service.SiteService;
|
||||
import org.springframework.ui.Model;
|
||||
|
||||
import jakarta.servlet.ServletContext;
|
||||
import javax.servlet.ServletContext;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -27,8 +27,8 @@ import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
*/
|
||||
package com.jeesite.modules.cms.web;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
*/
|
||||
package com.jeesite.modules.cms.web;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@@ -24,8 +24,8 @@ import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
|
||||
@@ -21,8 +21,8 @@ import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@ package com.jeesite.modules.cmsfront.web;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
|
||||
@@ -27,9 +27,4 @@
|
||||
5.7.0
|
||||
5.7.1
|
||||
5.8.0
|
||||
5.8.1
|
||||
5.9.0
|
||||
5.9.1
|
||||
5.9.2
|
||||
5.10.0
|
||||
5.10.1
|
||||
5.8.1
|
||||
@@ -1210,7 +1210,7 @@
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal">×</button>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Modal title</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
@@ -1255,7 +1255,7 @@
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal">×</button>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Source Code</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<#form:form id="searchForm" model="${article}" action="${ctx}/cms/article/listData" method="post" class="form-inline "
|
||||
<#form:form id="searchForm" model="${article}" action="${ctx}/cms/article/listData" method="post" class="form-inline hide"
|
||||
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('栏目编码')}:</label>
|
||||
@@ -54,7 +54,7 @@
|
||||
<script>
|
||||
//# // 初始化DataGrid对象
|
||||
$('#dataGrid').dataGrid({
|
||||
searchForm: $('#searchForm'),
|
||||
searchForm: $("#searchForm"),
|
||||
columnModel: [
|
||||
{header:'${text("标题")}', name:'title', index:'a.category_code', width:350, align:"left", frozen:true, formatter: function(val, obj, row, act){
|
||||
return '<a href="${ctx}/cms/article/form?id='+row.id+'" class="btnList" data-title="${text("编辑文章")}">'+(val||row.id)+'</a>';
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<#form:form id="searchForm" model="${category}" action="${ctx}/cms/category/listData" method="post" class="form-inline "
|
||||
<#form:form id="searchForm" model="${category}" action="${ctx}/cms/category/listData" method="post" class="form-inline hide"
|
||||
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
|
||||
<#form:hidden path="site.siteCode" maxlength="64" class="form-control width-120" />
|
||||
<div class="form-group">
|
||||
@@ -69,7 +69,7 @@
|
||||
<script>
|
||||
//# // 初始化DataGrid对象
|
||||
$('#dataGrid').dataGrid({
|
||||
searchForm: $('#searchForm'),
|
||||
searchForm: $("#searchForm"),
|
||||
columnModel: [
|
||||
{header:'${text("名称")}', name:'categoryName', index:'a.category_name', width:250, align:"left", frozen:true, formatter: function(val, obj, row, act){
|
||||
return '( '+row.categoryCode+' ) '+'<a href="${ctx}/cms/category/form?categoryCode='+row.categoryCode+'" class="btnList" data-title="${text("编辑栏目表")}">'+(val||row.id)+'</a>';
|
||||
|
||||
@@ -173,7 +173,7 @@
|
||||
</div>
|
||||
<% } %>
|
||||
<script>
|
||||
$('#inputForm').validate({
|
||||
$("#inputForm").validate({
|
||||
submitHandler: function(form){
|
||||
js.ajaxSubmitForm($(form), function(data){
|
||||
js.showMessage(data.message);
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<#form:form id="searchForm" model="${comment}" action="${ctx}/cms/comment/listData" method="post" class="form-inline "
|
||||
<#form:form id="searchForm" model="${comment}" action="${ctx}/cms/comment/listData" method="post" class="form-inline hide"
|
||||
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('栏目编码')}:</label>
|
||||
@@ -107,7 +107,7 @@
|
||||
<script>
|
||||
//# // 初始化DataGrid对象
|
||||
$('#dataGrid').dataGrid({
|
||||
searchForm: $('#searchForm'),
|
||||
searchForm: $("#searchForm"),
|
||||
columnModel: [
|
||||
{header:'${text('栏目编码')}', name:'categoryCode', index:'a.category_code', width:150, align:"left", frozen:true, formatter: function(val, obj, row, act){
|
||||
return '<a href="${ctx}/cms/comment/form?id='+row.id+'" class="btnList" data-title="${text('编辑文章评论表')}">'+(val||row.id)+'</a>';
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
</div>
|
||||
<% } %>
|
||||
<script>
|
||||
$('#inputForm').validate({
|
||||
$("#inputForm").validate({
|
||||
submitHandler: function(form){
|
||||
js.ajaxSubmitForm($(form), function(data){
|
||||
js.showMessage(data.message);
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<#form:form id="searchForm" model="${report}" action="${ctx}/cms/report/listData" method="post" class="form-inline "
|
||||
<#form:form id="searchForm" model="${report}" action="${ctx}/cms/report/listData" method="post" class="form-inline hide"
|
||||
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('举报来源')}:</label>
|
||||
@@ -59,7 +59,7 @@
|
||||
<script>
|
||||
//# // 初始化DataGrid对象
|
||||
$('#dataGrid').dataGrid({
|
||||
searchForm: $('#searchForm'),
|
||||
searchForm: $("#searchForm"),
|
||||
columnModel: [
|
||||
{header:'${text('举报来源')}', name:'reportSource', index:'a.report_source', width:150, align:"left", frozen:true, formatter: function(val, obj, row, act){
|
||||
return '<a href="${ctx}/cms/report/form?id='+row.id+'" class="btnList" data-title="${text('编辑内容举报表')}">'+(val||row.id)+'</a>';
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<#form:form id="searchForm" model="${site}" action="${ctx}/cms/site/listData" method="post" class="form-inline "
|
||||
<#form:form id="searchForm" model="${site}" action="${ctx}/cms/site/listData" method="post" class="form-inline hide"
|
||||
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('站点名称')}:</label>
|
||||
|
||||
@@ -351,7 +351,7 @@
|
||||
</div>
|
||||
<% } %>
|
||||
<script>
|
||||
$('#inputForm').validate({
|
||||
$("#inputForm").validate({
|
||||
submitHandler: function(form){
|
||||
js.ajaxSubmitForm($(form), function(data){
|
||||
js.showMessage(data.message);
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<#form:form id="searchForm" model="${visitLog}" action="${ctx}/cms/visitLog/listData" method="post" class="form-inline "
|
||||
<#form:form id="searchForm" model="${visitLog}" action="${ctx}/cms/visitLog/listData" method="post" class="form-inline hide"
|
||||
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('请求的URL地址')}:</label>
|
||||
@@ -66,7 +66,7 @@
|
||||
<script>
|
||||
//# // 初始化DataGrid对象
|
||||
$('#dataGrid').dataGrid({
|
||||
searchForm: $('#searchForm'),
|
||||
searchForm: $("#searchForm"),
|
||||
columnModel: [
|
||||
{header:'${text('请求的URL地址')}', name:'requestUrl', index:'a.request_url', width:150, align:"left", frozen:true, formatter: function(val, obj, row, act){
|
||||
return '<a href="${ctx}/cms/visitLog/form?id='+row.id+'" class="btnList" data-title="${text('编辑访问日志表')}">'+(val||row.id)+'</a>';
|
||||
|
||||
@@ -25,7 +25,7 @@ if (message != ''){
|
||||
function page(n,s){
|
||||
$("#pageNo").val(n);
|
||||
$("#pageSize").val(s);
|
||||
$('#searchForm').submit();
|
||||
$("#searchForm").submit();
|
||||
return false;
|
||||
}
|
||||
function sel(th, val){
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
BIN
modules/core/db/core.xls
Normal file
BIN
modules/core/db/core.xls
Normal file
Binary file not shown.
Binary file not shown.
@@ -2,31 +2,6 @@
|
||||
|
||||
/* Create Tables */
|
||||
|
||||
-- 业务分类
|
||||
CREATE TABLE js_biz_category
|
||||
(
|
||||
category_code varchar(64) NOT NULL,
|
||||
view_code varchar(500),
|
||||
category_name varchar(64) NOT NULL,
|
||||
parent_code varchar(64) NOT NULL,
|
||||
parent_codes varchar(767) NOT NULL,
|
||||
tree_sort decimal(10) NOT NULL,
|
||||
tree_sorts varchar(767) NOT NULL,
|
||||
tree_leaf char(1) NOT NULL,
|
||||
tree_level decimal(4) NOT NULL,
|
||||
tree_names varchar(767) NOT NULL,
|
||||
status char(1) DEFAULT '0' NOT NULL,
|
||||
create_by varchar(64) NOT NULL,
|
||||
create_date timestamp NOT NULL,
|
||||
update_by varchar(64) NOT NULL,
|
||||
update_date timestamp NOT NULL,
|
||||
remarks vargraphic(500),
|
||||
corp_code varchar(64) DEFAULT '0' NOT NULL,
|
||||
corp_name vargraphic(100) DEFAULT 'JeeSite' NOT NULL,
|
||||
PRIMARY KEY (category_code)
|
||||
);
|
||||
|
||||
|
||||
-- 代码生成表
|
||||
CREATE TABLE js_gen_table
|
||||
(
|
||||
@@ -104,6 +79,31 @@ CREATE TABLE js_sys_area
|
||||
);
|
||||
|
||||
|
||||
-- 业务分类
|
||||
CREATE TABLE js_biz_category
|
||||
(
|
||||
category_code varchar(64) NOT NULL,
|
||||
view_code varchar(500),
|
||||
category_name varchar(64) NOT NULL,
|
||||
parent_code varchar(64) NOT NULL,
|
||||
parent_codes varchar(767) NOT NULL,
|
||||
tree_sort decimal(10) NOT NULL,
|
||||
tree_sorts varchar(767) NOT NULL,
|
||||
tree_leaf char(1) NOT NULL,
|
||||
tree_level decimal(4) NOT NULL,
|
||||
tree_names varchar(767) NOT NULL,
|
||||
status char(1) DEFAULT '0' NOT NULL,
|
||||
create_by varchar(64) NOT NULL,
|
||||
create_date timestamp NOT NULL,
|
||||
update_by varchar(64) NOT NULL,
|
||||
update_date timestamp NOT NULL,
|
||||
remarks vargraphic(500),
|
||||
corp_code varchar(64) DEFAULT '0' NOT NULL,
|
||||
corp_name vargraphic(100) DEFAULT 'JeeSite' NOT NULL,
|
||||
PRIMARY KEY (category_code)
|
||||
);
|
||||
|
||||
|
||||
-- 公司表
|
||||
CREATE TABLE js_sys_company
|
||||
(
|
||||
@@ -492,21 +492,6 @@ CREATE TABLE js_sys_menu
|
||||
);
|
||||
|
||||
|
||||
-- 菜单数据权限
|
||||
CREATE TABLE js_sys_menu_data_scope
|
||||
(
|
||||
id varchar(64) NOT NULL,
|
||||
role_code varchar(64) NOT NULL,
|
||||
menu_code varchar(64) NOT NULL,
|
||||
rule_name varchar(100),
|
||||
rule_type char(1),
|
||||
rule_config clob,
|
||||
status char(1),
|
||||
remarks vargraphic(500),
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
|
||||
-- 模块表
|
||||
CREATE TABLE js_sys_module
|
||||
(
|
||||
@@ -782,8 +767,7 @@ CREATE TABLE js_sys_role_data_scope
|
||||
ctrl_type varchar(20) NOT NULL,
|
||||
ctrl_data varchar(64) NOT NULL,
|
||||
ctrl_permi varchar(64) NOT NULL,
|
||||
menu_code varchar(64) DEFAULT '0' NOT NULL,
|
||||
PRIMARY KEY (role_code, ctrl_type, ctrl_data, ctrl_permi, menu_code)
|
||||
PRIMARY KEY (role_code, ctrl_type, ctrl_data, ctrl_permi)
|
||||
);
|
||||
|
||||
|
||||
@@ -950,8 +934,6 @@ CREATE INDEX idx_sys_menu_sc ON js_sys_menu (sys_code);
|
||||
CREATE INDEX idx_sys_menu_is ON js_sys_menu (is_show);
|
||||
CREATE INDEX idx_sys_menu_mcs ON js_sys_menu (module_codes);
|
||||
CREATE INDEX idx_sys_menu_wt ON js_sys_menu (weight);
|
||||
CREATE INDEX idx_sys_menu_ds_mc ON js_sys_menu_data_scope (menu_code);
|
||||
CREATE INDEX idx_sys_menu_ds_rc ON js_sys_menu_data_scope (role_code);
|
||||
CREATE INDEX idx_sys_module_status ON js_sys_module (status);
|
||||
CREATE INDEX idx_sys_msg_inner_cb ON js_sys_msg_inner (create_by);
|
||||
CREATE INDEX idx_sys_msg_inner_status ON js_sys_msg_inner (status);
|
||||
|
||||
@@ -2,31 +2,6 @@
|
||||
|
||||
/* Create Tables */
|
||||
|
||||
-- 业务分类
|
||||
CREATE TABLE js_biz_category
|
||||
(
|
||||
category_code varchar(64) NOT NULL,
|
||||
view_code varchar(500),
|
||||
category_name varchar(64) NOT NULL,
|
||||
parent_code varchar(64) NOT NULL,
|
||||
parent_codes varchar(767) NOT NULL,
|
||||
tree_sort decimal(10) NOT NULL,
|
||||
tree_sorts varchar(767) NOT NULL,
|
||||
tree_leaf char(1) NOT NULL,
|
||||
tree_level decimal(4) NOT NULL,
|
||||
tree_names varchar(767) NOT NULL,
|
||||
status char(1) DEFAULT '0' NOT NULL,
|
||||
create_by varchar(64) NOT NULL,
|
||||
create_date datetime NOT NULL,
|
||||
update_by varchar(64) NOT NULL,
|
||||
update_date datetime NOT NULL,
|
||||
remarks varchar(500),
|
||||
corp_code varchar(64) DEFAULT '0' NOT NULL,
|
||||
corp_name varchar(100) DEFAULT 'JeeSite' NOT NULL,
|
||||
PRIMARY KEY (category_code)
|
||||
);
|
||||
|
||||
|
||||
-- 代码生成表
|
||||
CREATE TABLE js_gen_table
|
||||
(
|
||||
@@ -104,6 +79,31 @@ CREATE TABLE js_sys_area
|
||||
);
|
||||
|
||||
|
||||
-- 业务分类
|
||||
CREATE TABLE js_biz_category
|
||||
(
|
||||
category_code varchar(64) NOT NULL,
|
||||
view_code varchar(500),
|
||||
category_name varchar(64) NOT NULL,
|
||||
parent_code varchar(64) NOT NULL,
|
||||
parent_codes varchar(767) NOT NULL,
|
||||
tree_sort decimal(10) NOT NULL,
|
||||
tree_sorts varchar(767) NOT NULL,
|
||||
tree_leaf char(1) NOT NULL,
|
||||
tree_level decimal(4) NOT NULL,
|
||||
tree_names varchar(767) NOT NULL,
|
||||
status char(1) DEFAULT '0' NOT NULL,
|
||||
create_by varchar(64) NOT NULL,
|
||||
create_date datetime NOT NULL,
|
||||
update_by varchar(64) NOT NULL,
|
||||
update_date datetime NOT NULL,
|
||||
remarks varchar(500),
|
||||
corp_code varchar(64) DEFAULT '0' NOT NULL,
|
||||
corp_name varchar(100) DEFAULT 'JeeSite' NOT NULL,
|
||||
PRIMARY KEY (category_code)
|
||||
);
|
||||
|
||||
|
||||
-- 公司表
|
||||
CREATE TABLE js_sys_company
|
||||
(
|
||||
@@ -492,21 +492,6 @@ CREATE TABLE js_sys_menu
|
||||
);
|
||||
|
||||
|
||||
-- 菜单数据权限
|
||||
CREATE TABLE js_sys_menu_data_scope
|
||||
(
|
||||
id varchar(64) NOT NULL,
|
||||
role_code varchar(64) NOT NULL,
|
||||
menu_code varchar(64) NOT NULL,
|
||||
rule_name varchar(100),
|
||||
rule_type char(1),
|
||||
rule_config clob,
|
||||
status char(1),
|
||||
remarks varchar(500),
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
|
||||
-- 模块表
|
||||
CREATE TABLE js_sys_module
|
||||
(
|
||||
@@ -782,8 +767,7 @@ CREATE TABLE js_sys_role_data_scope
|
||||
ctrl_type varchar(20) NOT NULL,
|
||||
ctrl_data varchar(64) NOT NULL,
|
||||
ctrl_permi varchar(64) NOT NULL,
|
||||
menu_code varchar(64) DEFAULT '0' NOT NULL,
|
||||
PRIMARY KEY (role_code, ctrl_type, ctrl_data, ctrl_permi, menu_code)
|
||||
PRIMARY KEY (role_code, ctrl_type, ctrl_data, ctrl_permi)
|
||||
);
|
||||
|
||||
|
||||
@@ -950,8 +934,6 @@ CREATE INDEX idx_sys_menu_sc ON js_sys_menu (sys_code);
|
||||
CREATE INDEX idx_sys_menu_is ON js_sys_menu (is_show);
|
||||
CREATE INDEX idx_sys_menu_mcs ON js_sys_menu (module_codes);
|
||||
CREATE INDEX idx_sys_menu_wt ON js_sys_menu (weight);
|
||||
CREATE INDEX idx_sys_menu_ds_mc ON js_sys_menu_data_scope (menu_code);
|
||||
CREATE INDEX idx_sys_menu_ds_rc ON js_sys_menu_data_scope (role_code);
|
||||
CREATE INDEX idx_sys_module_status ON js_sys_module (status);
|
||||
CREATE INDEX idx_sys_msg_inner_cb ON js_sys_msg_inner (create_by);
|
||||
CREATE INDEX idx_sys_msg_inner_status ON js_sys_msg_inner (status);
|
||||
@@ -1017,25 +999,6 @@ CREATE INDEX idx_sys_user_cc ON js_sys_user (corp_code);
|
||||
|
||||
/* Comments */
|
||||
|
||||
COMMENT ON TABLE js_biz_category IS '业务分类';
|
||||
COMMENT ON COLUMN js_biz_category.category_code IS '流程分类';
|
||||
COMMENT ON COLUMN js_biz_category.view_code IS '分类代码';
|
||||
COMMENT ON COLUMN js_biz_category.category_name IS '分类名称';
|
||||
COMMENT ON COLUMN js_biz_category.parent_code IS '父级编号';
|
||||
COMMENT ON COLUMN js_biz_category.parent_codes IS '所有父级编号';
|
||||
COMMENT ON COLUMN js_biz_category.tree_sort IS '排序号(升序)';
|
||||
COMMENT ON COLUMN js_biz_category.tree_sorts IS '所有排序号';
|
||||
COMMENT ON COLUMN js_biz_category.tree_leaf IS '是否最末级';
|
||||
COMMENT ON COLUMN js_biz_category.tree_level IS '层次级别';
|
||||
COMMENT ON COLUMN js_biz_category.tree_names IS '全节点名';
|
||||
COMMENT ON COLUMN js_biz_category.status IS '状态(0正常 1删除 2停用)';
|
||||
COMMENT ON COLUMN js_biz_category.create_by IS '创建者';
|
||||
COMMENT ON COLUMN js_biz_category.create_date IS '创建时间';
|
||||
COMMENT ON COLUMN js_biz_category.update_by IS '更新者';
|
||||
COMMENT ON COLUMN js_biz_category.update_date IS '更新时间';
|
||||
COMMENT ON COLUMN js_biz_category.remarks IS '备注信息';
|
||||
COMMENT ON COLUMN js_biz_category.corp_code IS '租户代码';
|
||||
COMMENT ON COLUMN js_biz_category.corp_name IS '租户名称';
|
||||
COMMENT ON TABLE js_gen_table IS '代码生成表';
|
||||
COMMENT ON COLUMN js_gen_table.table_name IS '表名';
|
||||
COMMENT ON COLUMN js_gen_table.class_name IS '实体类名称';
|
||||
@@ -1095,6 +1058,25 @@ COMMENT ON COLUMN js_sys_area.create_date IS '创建时间';
|
||||
COMMENT ON COLUMN js_sys_area.update_by IS '更新者';
|
||||
COMMENT ON COLUMN js_sys_area.update_date IS '更新时间';
|
||||
COMMENT ON COLUMN js_sys_area.remarks IS '备注信息';
|
||||
COMMENT ON TABLE js_biz_category IS '业务分类';
|
||||
COMMENT ON COLUMN js_biz_category.category_code IS '流程分类';
|
||||
COMMENT ON COLUMN js_biz_category.view_code IS '分类代码';
|
||||
COMMENT ON COLUMN js_biz_category.category_name IS '分类名称';
|
||||
COMMENT ON COLUMN js_biz_category.parent_code IS '父级编号';
|
||||
COMMENT ON COLUMN js_biz_category.parent_codes IS '所有父级编号';
|
||||
COMMENT ON COLUMN js_biz_category.tree_sort IS '排序号(升序)';
|
||||
COMMENT ON COLUMN js_biz_category.tree_sorts IS '所有排序号';
|
||||
COMMENT ON COLUMN js_biz_category.tree_leaf IS '是否最末级';
|
||||
COMMENT ON COLUMN js_biz_category.tree_level IS '层次级别';
|
||||
COMMENT ON COLUMN js_biz_category.tree_names IS '全节点名';
|
||||
COMMENT ON COLUMN js_biz_category.status IS '状态(0正常 1删除 2停用)';
|
||||
COMMENT ON COLUMN js_biz_category.create_by IS '创建者';
|
||||
COMMENT ON COLUMN js_biz_category.create_date IS '创建时间';
|
||||
COMMENT ON COLUMN js_biz_category.update_by IS '更新者';
|
||||
COMMENT ON COLUMN js_biz_category.update_date IS '更新时间';
|
||||
COMMENT ON COLUMN js_biz_category.remarks IS '备注信息';
|
||||
COMMENT ON COLUMN js_biz_category.corp_code IS '租户代码';
|
||||
COMMENT ON COLUMN js_biz_category.corp_name IS '租户名称';
|
||||
COMMENT ON TABLE js_sys_company IS '公司表';
|
||||
COMMENT ON COLUMN js_sys_company.company_code IS '公司编码';
|
||||
COMMENT ON COLUMN js_sys_company.view_code IS '公司代码';
|
||||
@@ -1393,15 +1375,6 @@ COMMENT ON COLUMN js_sys_menu.extend_d2 IS '扩展 Date 2';
|
||||
COMMENT ON COLUMN js_sys_menu.extend_d3 IS '扩展 Date 3';
|
||||
COMMENT ON COLUMN js_sys_menu.extend_d4 IS '扩展 Date 4';
|
||||
COMMENT ON COLUMN js_sys_menu.extend_json IS '扩展 JSON';
|
||||
COMMENT ON TABLE js_sys_menu_data_scope IS '菜单数据权限';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.id IS '编号';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.role_code IS '角色编码';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.menu_code IS '菜单编码';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.rule_name IS '规则名称';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.rule_type IS '规则类型(1 角色数据范围 2自定义条件规则 3自定义SQL)';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.rule_config IS '规则配置(JSON)';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.status IS '状态(0正常 1删除 2停用)';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.remarks IS '备注信息';
|
||||
COMMENT ON TABLE js_sys_module IS '模块表';
|
||||
COMMENT ON COLUMN js_sys_module.module_code IS '模块编码';
|
||||
COMMENT ON COLUMN js_sys_module.module_name IS '模块名称';
|
||||
@@ -1578,7 +1551,7 @@ COMMENT ON COLUMN js_sys_role.is_sys IS '系统内置(1是 0否)';
|
||||
COMMENT ON COLUMN js_sys_role.is_show IS '是否显示';
|
||||
COMMENT ON COLUMN js_sys_role.user_type IS '用户类型(employee员工 member会员)';
|
||||
COMMENT ON COLUMN js_sys_role.desktop_url IS '桌面地址(仪表盘地址)';
|
||||
COMMENT ON COLUMN js_sys_role.data_scope IS '数据范围(0未设置 1全部数据 2自定义数据)';
|
||||
COMMENT ON COLUMN js_sys_role.data_scope IS '数据范围设置(0未设置 1全部数据 2自定义数据)';
|
||||
COMMENT ON COLUMN js_sys_role.biz_scope IS '适应业务范围(不同的功能,不同的数据权限支持)';
|
||||
COMMENT ON COLUMN js_sys_role.sys_codes IS '包含系统(多个用逗号隔开)';
|
||||
COMMENT ON COLUMN js_sys_role.status IS '状态(0正常 1删除 2停用)';
|
||||
@@ -1615,7 +1588,6 @@ COMMENT ON COLUMN js_sys_role_data_scope.role_code IS '控制角色编码';
|
||||
COMMENT ON COLUMN js_sys_role_data_scope.ctrl_type IS '控制类型';
|
||||
COMMENT ON COLUMN js_sys_role_data_scope.ctrl_data IS '控制数据';
|
||||
COMMENT ON COLUMN js_sys_role_data_scope.ctrl_permi IS '控制权限';
|
||||
COMMENT ON COLUMN js_sys_role_data_scope.menu_code IS '菜单编码';
|
||||
COMMENT ON TABLE js_sys_role_menu IS '角色与菜单关联表';
|
||||
COMMENT ON COLUMN js_sys_role_menu.role_code IS '角色编码';
|
||||
COMMENT ON COLUMN js_sys_role_menu.menu_code IS '菜单编码';
|
||||
|
||||
@@ -2,31 +2,6 @@
|
||||
|
||||
/* Create Tables */
|
||||
|
||||
-- 业务分类
|
||||
CREATE TABLE [js_biz_category]
|
||||
(
|
||||
[category_code] varchar(64) NOT NULL,
|
||||
[view_code] varchar(500),
|
||||
[category_name] varchar(64) NOT NULL,
|
||||
[parent_code] varchar(64) NOT NULL,
|
||||
[parent_codes] varchar(767) NOT NULL,
|
||||
[tree_sort] decimal(10) NOT NULL,
|
||||
[tree_sorts] varchar(767) NOT NULL,
|
||||
[tree_leaf] char(1) NOT NULL,
|
||||
[tree_level] decimal(4) NOT NULL,
|
||||
[tree_names] varchar(767) NOT NULL,
|
||||
[status] char(1) DEFAULT '0' NOT NULL,
|
||||
[create_by] varchar(64) NOT NULL,
|
||||
[create_date] datetime NOT NULL,
|
||||
[update_by] varchar(64) NOT NULL,
|
||||
[update_date] datetime NOT NULL,
|
||||
[remarks] nvarchar(500),
|
||||
[corp_code] varchar(64) DEFAULT '0' NOT NULL,
|
||||
[corp_name] nvarchar(100) DEFAULT 'JeeSite' NOT NULL,
|
||||
PRIMARY KEY ([category_code])
|
||||
);
|
||||
|
||||
|
||||
-- 代码生成表
|
||||
CREATE TABLE [js_gen_table]
|
||||
(
|
||||
@@ -104,6 +79,31 @@ CREATE TABLE [js_sys_area]
|
||||
);
|
||||
|
||||
|
||||
-- 业务分类
|
||||
CREATE TABLE [js_biz_category]
|
||||
(
|
||||
[category_code] varchar(64) NOT NULL,
|
||||
[view_code] varchar(500),
|
||||
[category_name] varchar(64) NOT NULL,
|
||||
[parent_code] varchar(64) NOT NULL,
|
||||
[parent_codes] varchar(767) NOT NULL,
|
||||
[tree_sort] decimal(10) NOT NULL,
|
||||
[tree_sorts] varchar(767) NOT NULL,
|
||||
[tree_leaf] char(1) NOT NULL,
|
||||
[tree_level] decimal(4) NOT NULL,
|
||||
[tree_names] varchar(767) NOT NULL,
|
||||
[status] char(1) DEFAULT '0' NOT NULL,
|
||||
[create_by] varchar(64) NOT NULL,
|
||||
[create_date] datetime NOT NULL,
|
||||
[update_by] varchar(64) NOT NULL,
|
||||
[update_date] datetime NOT NULL,
|
||||
[remarks] nvarchar(500),
|
||||
[corp_code] varchar(64) DEFAULT '0' NOT NULL,
|
||||
[corp_name] nvarchar(100) DEFAULT 'JeeSite' NOT NULL,
|
||||
PRIMARY KEY ([category_code])
|
||||
);
|
||||
|
||||
|
||||
-- 公司表
|
||||
CREATE TABLE [js_sys_company]
|
||||
(
|
||||
@@ -492,21 +492,6 @@ CREATE TABLE [js_sys_menu]
|
||||
);
|
||||
|
||||
|
||||
-- 菜单数据权限
|
||||
CREATE TABLE [js_sys_menu_data_scope]
|
||||
(
|
||||
[id] varchar(64) NOT NULL,
|
||||
[role_code] varchar(64) NOT NULL,
|
||||
[menu_code] varchar(64) NOT NULL,
|
||||
[rule_name] varchar(100),
|
||||
[rule_type] char(1),
|
||||
[rule_config] text,
|
||||
[status] char(1),
|
||||
[remarks] nvarchar(500),
|
||||
PRIMARY KEY ([id])
|
||||
);
|
||||
|
||||
|
||||
-- 模块表
|
||||
CREATE TABLE [js_sys_module]
|
||||
(
|
||||
@@ -782,8 +767,7 @@ CREATE TABLE [js_sys_role_data_scope]
|
||||
[ctrl_type] varchar(20) NOT NULL,
|
||||
[ctrl_data] varchar(64) NOT NULL,
|
||||
[ctrl_permi] varchar(64) NOT NULL,
|
||||
[menu_code] varchar(64) DEFAULT '0' NOT NULL,
|
||||
PRIMARY KEY ([role_code], [ctrl_type], [ctrl_data], [ctrl_permi], [menu_code])
|
||||
PRIMARY KEY ([role_code], [ctrl_type], [ctrl_data], [ctrl_permi])
|
||||
);
|
||||
|
||||
|
||||
@@ -950,8 +934,6 @@ CREATE INDEX [idx_sys_menu_sc] ON [js_sys_menu] ([sys_code]);
|
||||
CREATE INDEX [idx_sys_menu_is] ON [js_sys_menu] ([is_show]);
|
||||
CREATE INDEX [idx_sys_menu_mcs] ON [js_sys_menu] ([module_codes]);
|
||||
CREATE INDEX [idx_sys_menu_wt] ON [js_sys_menu] ([weight]);
|
||||
CREATE INDEX [idx_sys_menu_ds_mc] ON [js_sys_menu_data_scope] ([menu_code]);
|
||||
CREATE INDEX [idx_sys_menu_ds_rc] ON [js_sys_menu_data_scope] ([role_code]);
|
||||
CREATE INDEX [idx_sys_module_status] ON [js_sys_module] ([status]);
|
||||
CREATE INDEX [idx_sys_msg_inner_cb] ON [js_sys_msg_inner] ([create_by]);
|
||||
CREATE INDEX [idx_sys_msg_inner_status] ON [js_sys_msg_inner] ([status]);
|
||||
|
||||
@@ -3,31 +3,6 @@ SET SESSION FOREIGN_KEY_CHECKS=0;
|
||||
|
||||
/* Create Tables */
|
||||
|
||||
-- 业务分类
|
||||
CREATE TABLE js_biz_category
|
||||
(
|
||||
category_code varchar(64) NOT NULL COMMENT '流程分类',
|
||||
view_code varchar(500) COMMENT '分类代码',
|
||||
category_name varchar(64) NOT NULL COMMENT '分类名称',
|
||||
parent_code varchar(64) NOT NULL COMMENT '父级编号',
|
||||
parent_codes varchar(767) NOT NULL COMMENT '所有父级编号',
|
||||
tree_sort decimal(10) NOT NULL COMMENT '排序号(升序)',
|
||||
tree_sorts varchar(767) NOT NULL COMMENT '所有排序号',
|
||||
tree_leaf char(1) NOT NULL COMMENT '是否最末级',
|
||||
tree_level decimal(4) NOT NULL COMMENT '层次级别',
|
||||
tree_names varchar(767) NOT NULL COMMENT '全节点名',
|
||||
status char(1) DEFAULT '0' NOT NULL COMMENT '状态(0正常 1删除 2停用)',
|
||||
create_by varchar(64) NOT NULL COMMENT '创建者',
|
||||
create_date datetime NOT NULL COMMENT '创建时间',
|
||||
update_by varchar(64) NOT NULL COMMENT '更新者',
|
||||
update_date datetime NOT NULL COMMENT '更新时间',
|
||||
remarks varchar(500) COMMENT '备注信息',
|
||||
corp_code varchar(64) DEFAULT '0' NOT NULL COMMENT '租户代码',
|
||||
corp_name varchar(100) DEFAULT 'JeeSite' NOT NULL COMMENT '租户名称',
|
||||
PRIMARY KEY (category_code)
|
||||
) COMMENT = '业务分类';
|
||||
|
||||
|
||||
-- 代码生成表
|
||||
CREATE TABLE js_gen_table
|
||||
(
|
||||
@@ -105,6 +80,31 @@ CREATE TABLE js_sys_area
|
||||
) COMMENT = '行政区划';
|
||||
|
||||
|
||||
-- 业务分类
|
||||
CREATE TABLE js_biz_category
|
||||
(
|
||||
category_code varchar(64) NOT NULL COMMENT '流程分类',
|
||||
view_code varchar(500) COMMENT '分类代码',
|
||||
category_name varchar(64) NOT NULL COMMENT '分类名称',
|
||||
parent_code varchar(64) NOT NULL COMMENT '父级编号',
|
||||
parent_codes varchar(767) NOT NULL COMMENT '所有父级编号',
|
||||
tree_sort decimal(10) NOT NULL COMMENT '排序号(升序)',
|
||||
tree_sorts varchar(767) NOT NULL COMMENT '所有排序号',
|
||||
tree_leaf char(1) NOT NULL COMMENT '是否最末级',
|
||||
tree_level decimal(4) NOT NULL COMMENT '层次级别',
|
||||
tree_names varchar(767) NOT NULL COMMENT '全节点名',
|
||||
status char(1) DEFAULT '0' NOT NULL COMMENT '状态(0正常 1删除 2停用)',
|
||||
create_by varchar(64) NOT NULL COMMENT '创建者',
|
||||
create_date datetime NOT NULL COMMENT '创建时间',
|
||||
update_by varchar(64) NOT NULL COMMENT '更新者',
|
||||
update_date datetime NOT NULL COMMENT '更新时间',
|
||||
remarks varchar(500) COMMENT '备注信息',
|
||||
corp_code varchar(64) DEFAULT '0' NOT NULL COMMENT '租户代码',
|
||||
corp_name varchar(100) DEFAULT 'JeeSite' NOT NULL COMMENT '租户名称',
|
||||
PRIMARY KEY (category_code)
|
||||
) COMMENT = '业务分类';
|
||||
|
||||
|
||||
-- 公司表
|
||||
CREATE TABLE js_sys_company
|
||||
(
|
||||
@@ -493,21 +493,6 @@ CREATE TABLE js_sys_menu
|
||||
) COMMENT = '菜单表';
|
||||
|
||||
|
||||
-- 菜单数据权限
|
||||
CREATE TABLE js_sys_menu_data_scope
|
||||
(
|
||||
id varchar(64) NOT NULL COMMENT '编号',
|
||||
role_code varchar(64) NOT NULL COMMENT '角色编码',
|
||||
menu_code varchar(64) NOT NULL COMMENT '菜单编码',
|
||||
rule_name varchar(100) COMMENT '规则名称',
|
||||
rule_type char(1) COMMENT '规则类型(1 角色数据范围 2自定义条件规则 3自定义SQL)',
|
||||
rule_config text COMMENT '规则配置(JSON)',
|
||||
status char(1) COMMENT '状态(0正常 1删除 2停用)',
|
||||
remarks varchar(500) COMMENT '备注信息',
|
||||
PRIMARY KEY (id)
|
||||
) COMMENT = '菜单数据权限';
|
||||
|
||||
|
||||
-- 模块表
|
||||
CREATE TABLE js_sys_module
|
||||
(
|
||||
@@ -740,7 +725,7 @@ CREATE TABLE js_sys_role
|
||||
is_show char(1) DEFAULT '1' COMMENT '是否显示',
|
||||
user_type varchar(16) COMMENT '用户类型(employee员工 member会员)',
|
||||
desktop_url varchar(255) COMMENT '桌面地址(仪表盘地址)',
|
||||
data_scope char(1) COMMENT '数据范围(0未设置 1全部数据 2自定义数据)',
|
||||
data_scope char(1) COMMENT '数据范围设置(0未设置 1全部数据 2自定义数据)',
|
||||
biz_scope varchar(255) COMMENT '适应业务范围(不同的功能,不同的数据权限支持)',
|
||||
sys_codes varchar(500) COMMENT '包含系统(多个用逗号隔开)',
|
||||
status char(1) DEFAULT '0' NOT NULL COMMENT '状态(0正常 1删除 2停用)',
|
||||
@@ -783,8 +768,7 @@ CREATE TABLE js_sys_role_data_scope
|
||||
ctrl_type varchar(20) NOT NULL COMMENT '控制类型',
|
||||
ctrl_data varchar(64) NOT NULL COMMENT '控制数据',
|
||||
ctrl_permi varchar(64) NOT NULL COMMENT '控制权限',
|
||||
menu_code varchar(64) DEFAULT '0' NOT NULL COMMENT '菜单编码',
|
||||
PRIMARY KEY (role_code, ctrl_type, ctrl_data, ctrl_permi, menu_code)
|
||||
PRIMARY KEY (role_code, ctrl_type, ctrl_data, ctrl_permi)
|
||||
) COMMENT = '角色数据权限表';
|
||||
|
||||
|
||||
@@ -951,8 +935,6 @@ CREATE INDEX idx_sys_menu_sc ON js_sys_menu (sys_code ASC);
|
||||
CREATE INDEX idx_sys_menu_is ON js_sys_menu (is_show ASC);
|
||||
CREATE INDEX idx_sys_menu_mcs ON js_sys_menu (module_codes ASC);
|
||||
CREATE INDEX idx_sys_menu_wt ON js_sys_menu (weight ASC);
|
||||
CREATE INDEX idx_sys_menu_ds_mc ON js_sys_menu_data_scope (menu_code ASC);
|
||||
CREATE INDEX idx_sys_menu_ds_rc ON js_sys_menu_data_scope (role_code ASC);
|
||||
CREATE INDEX idx_sys_module_status ON js_sys_module (status ASC);
|
||||
CREATE INDEX idx_sys_msg_inner_cb ON js_sys_msg_inner (create_by ASC);
|
||||
CREATE INDEX idx_sys_msg_inner_status ON js_sys_msg_inner (status ASC);
|
||||
|
||||
@@ -2,31 +2,6 @@
|
||||
|
||||
/* Create Tables */
|
||||
|
||||
-- 业务分类
|
||||
CREATE TABLE js_biz_category
|
||||
(
|
||||
category_code varchar2(64) NOT NULL,
|
||||
view_code varchar2(500),
|
||||
category_name varchar2(64) NOT NULL,
|
||||
parent_code varchar2(64) NOT NULL,
|
||||
parent_codes varchar2(767) NOT NULL,
|
||||
tree_sort number(10) NOT NULL,
|
||||
tree_sorts varchar2(767) NOT NULL,
|
||||
tree_leaf char(1) NOT NULL,
|
||||
tree_level number(4) NOT NULL,
|
||||
tree_names varchar2(767) NOT NULL,
|
||||
status char(1) DEFAULT '0' NOT NULL,
|
||||
create_by varchar2(64) NOT NULL,
|
||||
create_date timestamp NOT NULL,
|
||||
update_by varchar2(64) NOT NULL,
|
||||
update_date timestamp NOT NULL,
|
||||
remarks nvarchar2(500),
|
||||
corp_code varchar2(64) DEFAULT '0' NOT NULL,
|
||||
corp_name nvarchar2(100) DEFAULT 'JeeSite' NOT NULL,
|
||||
PRIMARY KEY (category_code)
|
||||
);
|
||||
|
||||
|
||||
-- 代码生成表
|
||||
CREATE TABLE js_gen_table
|
||||
(
|
||||
@@ -104,6 +79,31 @@ CREATE TABLE js_sys_area
|
||||
);
|
||||
|
||||
|
||||
-- 业务分类
|
||||
CREATE TABLE js_biz_category
|
||||
(
|
||||
category_code varchar2(64) NOT NULL,
|
||||
view_code varchar2(500),
|
||||
category_name varchar2(64) NOT NULL,
|
||||
parent_code varchar2(64) NOT NULL,
|
||||
parent_codes varchar2(767) NOT NULL,
|
||||
tree_sort number(10) NOT NULL,
|
||||
tree_sorts varchar2(767) NOT NULL,
|
||||
tree_leaf char(1) NOT NULL,
|
||||
tree_level number(4) NOT NULL,
|
||||
tree_names varchar2(767) NOT NULL,
|
||||
status char(1) DEFAULT '0' NOT NULL,
|
||||
create_by varchar2(64) NOT NULL,
|
||||
create_date timestamp NOT NULL,
|
||||
update_by varchar2(64) NOT NULL,
|
||||
update_date timestamp NOT NULL,
|
||||
remarks nvarchar2(500),
|
||||
corp_code varchar2(64) DEFAULT '0' NOT NULL,
|
||||
corp_name nvarchar2(100) DEFAULT 'JeeSite' NOT NULL,
|
||||
PRIMARY KEY (category_code)
|
||||
);
|
||||
|
||||
|
||||
-- 公司表
|
||||
CREATE TABLE js_sys_company
|
||||
(
|
||||
@@ -492,21 +492,6 @@ CREATE TABLE js_sys_menu
|
||||
);
|
||||
|
||||
|
||||
-- 菜单数据权限
|
||||
CREATE TABLE js_sys_menu_data_scope
|
||||
(
|
||||
id varchar2(64) NOT NULL,
|
||||
role_code varchar2(64) NOT NULL,
|
||||
menu_code varchar2(64) NOT NULL,
|
||||
rule_name varchar2(100),
|
||||
rule_type char(1),
|
||||
rule_config clob,
|
||||
status char(1),
|
||||
remarks nvarchar2(500),
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
|
||||
-- 模块表
|
||||
CREATE TABLE js_sys_module
|
||||
(
|
||||
@@ -782,8 +767,7 @@ CREATE TABLE js_sys_role_data_scope
|
||||
ctrl_type varchar2(20) NOT NULL,
|
||||
ctrl_data varchar2(64) NOT NULL,
|
||||
ctrl_permi varchar2(64) NOT NULL,
|
||||
menu_code varchar2(64) DEFAULT '0' NOT NULL,
|
||||
PRIMARY KEY (role_code, ctrl_type, ctrl_data, ctrl_permi, menu_code)
|
||||
PRIMARY KEY (role_code, ctrl_type, ctrl_data, ctrl_permi)
|
||||
);
|
||||
|
||||
|
||||
@@ -950,8 +934,6 @@ CREATE INDEX idx_sys_menu_sc ON js_sys_menu (sys_code);
|
||||
CREATE INDEX idx_sys_menu_is ON js_sys_menu (is_show);
|
||||
CREATE INDEX idx_sys_menu_mcs ON js_sys_menu (module_codes);
|
||||
CREATE INDEX idx_sys_menu_wt ON js_sys_menu (weight);
|
||||
CREATE INDEX idx_sys_menu_ds_mc ON js_sys_menu_data_scope (menu_code);
|
||||
CREATE INDEX idx_sys_menu_ds_rc ON js_sys_menu_data_scope (role_code);
|
||||
CREATE INDEX idx_sys_module_status ON js_sys_module (status);
|
||||
CREATE INDEX idx_sys_msg_inner_cb ON js_sys_msg_inner (create_by);
|
||||
CREATE INDEX idx_sys_msg_inner_status ON js_sys_msg_inner (status);
|
||||
@@ -1017,25 +999,6 @@ CREATE INDEX idx_sys_user_cc ON js_sys_user (corp_code);
|
||||
|
||||
/* Comments */
|
||||
|
||||
COMMENT ON TABLE js_biz_category IS '业务分类';
|
||||
COMMENT ON COLUMN js_biz_category.category_code IS '流程分类';
|
||||
COMMENT ON COLUMN js_biz_category.view_code IS '分类代码';
|
||||
COMMENT ON COLUMN js_biz_category.category_name IS '分类名称';
|
||||
COMMENT ON COLUMN js_biz_category.parent_code IS '父级编号';
|
||||
COMMENT ON COLUMN js_biz_category.parent_codes IS '所有父级编号';
|
||||
COMMENT ON COLUMN js_biz_category.tree_sort IS '排序号(升序)';
|
||||
COMMENT ON COLUMN js_biz_category.tree_sorts IS '所有排序号';
|
||||
COMMENT ON COLUMN js_biz_category.tree_leaf IS '是否最末级';
|
||||
COMMENT ON COLUMN js_biz_category.tree_level IS '层次级别';
|
||||
COMMENT ON COLUMN js_biz_category.tree_names IS '全节点名';
|
||||
COMMENT ON COLUMN js_biz_category.status IS '状态(0正常 1删除 2停用)';
|
||||
COMMENT ON COLUMN js_biz_category.create_by IS '创建者';
|
||||
COMMENT ON COLUMN js_biz_category.create_date IS '创建时间';
|
||||
COMMENT ON COLUMN js_biz_category.update_by IS '更新者';
|
||||
COMMENT ON COLUMN js_biz_category.update_date IS '更新时间';
|
||||
COMMENT ON COLUMN js_biz_category.remarks IS '备注信息';
|
||||
COMMENT ON COLUMN js_biz_category.corp_code IS '租户代码';
|
||||
COMMENT ON COLUMN js_biz_category.corp_name IS '租户名称';
|
||||
COMMENT ON TABLE js_gen_table IS '代码生成表';
|
||||
COMMENT ON COLUMN js_gen_table.table_name IS '表名';
|
||||
COMMENT ON COLUMN js_gen_table.class_name IS '实体类名称';
|
||||
@@ -1095,6 +1058,25 @@ COMMENT ON COLUMN js_sys_area.create_date IS '创建时间';
|
||||
COMMENT ON COLUMN js_sys_area.update_by IS '更新者';
|
||||
COMMENT ON COLUMN js_sys_area.update_date IS '更新时间';
|
||||
COMMENT ON COLUMN js_sys_area.remarks IS '备注信息';
|
||||
COMMENT ON TABLE js_biz_category IS '业务分类';
|
||||
COMMENT ON COLUMN js_biz_category.category_code IS '流程分类';
|
||||
COMMENT ON COLUMN js_biz_category.view_code IS '分类代码';
|
||||
COMMENT ON COLUMN js_biz_category.category_name IS '分类名称';
|
||||
COMMENT ON COLUMN js_biz_category.parent_code IS '父级编号';
|
||||
COMMENT ON COLUMN js_biz_category.parent_codes IS '所有父级编号';
|
||||
COMMENT ON COLUMN js_biz_category.tree_sort IS '排序号(升序)';
|
||||
COMMENT ON COLUMN js_biz_category.tree_sorts IS '所有排序号';
|
||||
COMMENT ON COLUMN js_biz_category.tree_leaf IS '是否最末级';
|
||||
COMMENT ON COLUMN js_biz_category.tree_level IS '层次级别';
|
||||
COMMENT ON COLUMN js_biz_category.tree_names IS '全节点名';
|
||||
COMMENT ON COLUMN js_biz_category.status IS '状态(0正常 1删除 2停用)';
|
||||
COMMENT ON COLUMN js_biz_category.create_by IS '创建者';
|
||||
COMMENT ON COLUMN js_biz_category.create_date IS '创建时间';
|
||||
COMMENT ON COLUMN js_biz_category.update_by IS '更新者';
|
||||
COMMENT ON COLUMN js_biz_category.update_date IS '更新时间';
|
||||
COMMENT ON COLUMN js_biz_category.remarks IS '备注信息';
|
||||
COMMENT ON COLUMN js_biz_category.corp_code IS '租户代码';
|
||||
COMMENT ON COLUMN js_biz_category.corp_name IS '租户名称';
|
||||
COMMENT ON TABLE js_sys_company IS '公司表';
|
||||
COMMENT ON COLUMN js_sys_company.company_code IS '公司编码';
|
||||
COMMENT ON COLUMN js_sys_company.view_code IS '公司代码';
|
||||
@@ -1393,15 +1375,6 @@ COMMENT ON COLUMN js_sys_menu.extend_d2 IS '扩展 Date 2';
|
||||
COMMENT ON COLUMN js_sys_menu.extend_d3 IS '扩展 Date 3';
|
||||
COMMENT ON COLUMN js_sys_menu.extend_d4 IS '扩展 Date 4';
|
||||
COMMENT ON COLUMN js_sys_menu.extend_json IS '扩展 JSON';
|
||||
COMMENT ON TABLE js_sys_menu_data_scope IS '菜单数据权限';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.id IS '编号';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.role_code IS '角色编码';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.menu_code IS '菜单编码';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.rule_name IS '规则名称';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.rule_type IS '规则类型(1 角色数据范围 2自定义条件规则 3自定义SQL)';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.rule_config IS '规则配置(JSON)';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.status IS '状态(0正常 1删除 2停用)';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.remarks IS '备注信息';
|
||||
COMMENT ON TABLE js_sys_module IS '模块表';
|
||||
COMMENT ON COLUMN js_sys_module.module_code IS '模块编码';
|
||||
COMMENT ON COLUMN js_sys_module.module_name IS '模块名称';
|
||||
@@ -1578,7 +1551,7 @@ COMMENT ON COLUMN js_sys_role.is_sys IS '系统内置(1是 0否)';
|
||||
COMMENT ON COLUMN js_sys_role.is_show IS '是否显示';
|
||||
COMMENT ON COLUMN js_sys_role.user_type IS '用户类型(employee员工 member会员)';
|
||||
COMMENT ON COLUMN js_sys_role.desktop_url IS '桌面地址(仪表盘地址)';
|
||||
COMMENT ON COLUMN js_sys_role.data_scope IS '数据范围(0未设置 1全部数据 2自定义数据)';
|
||||
COMMENT ON COLUMN js_sys_role.data_scope IS '数据范围设置(0未设置 1全部数据 2自定义数据)';
|
||||
COMMENT ON COLUMN js_sys_role.biz_scope IS '适应业务范围(不同的功能,不同的数据权限支持)';
|
||||
COMMENT ON COLUMN js_sys_role.sys_codes IS '包含系统(多个用逗号隔开)';
|
||||
COMMENT ON COLUMN js_sys_role.status IS '状态(0正常 1删除 2停用)';
|
||||
@@ -1615,7 +1588,6 @@ COMMENT ON COLUMN js_sys_role_data_scope.role_code IS '控制角色编码';
|
||||
COMMENT ON COLUMN js_sys_role_data_scope.ctrl_type IS '控制类型';
|
||||
COMMENT ON COLUMN js_sys_role_data_scope.ctrl_data IS '控制数据';
|
||||
COMMENT ON COLUMN js_sys_role_data_scope.ctrl_permi IS '控制权限';
|
||||
COMMENT ON COLUMN js_sys_role_data_scope.menu_code IS '菜单编码';
|
||||
COMMENT ON TABLE js_sys_role_menu IS '角色与菜单关联表';
|
||||
COMMENT ON COLUMN js_sys_role_menu.role_code IS '角色编码';
|
||||
COMMENT ON COLUMN js_sys_role_menu.menu_code IS '菜单编码';
|
||||
|
||||
@@ -2,31 +2,6 @@
|
||||
|
||||
/* Create Tables */
|
||||
|
||||
-- 业务分类
|
||||
CREATE TABLE js_biz_category
|
||||
(
|
||||
category_code varchar(64) NOT NULL,
|
||||
view_code varchar(500),
|
||||
category_name varchar(64) NOT NULL,
|
||||
parent_code varchar(64) NOT NULL,
|
||||
parent_codes varchar(767) NOT NULL,
|
||||
tree_sort decimal(10) NOT NULL,
|
||||
tree_sorts varchar(767) NOT NULL,
|
||||
tree_leaf char(1) NOT NULL,
|
||||
tree_level decimal(4) NOT NULL,
|
||||
tree_names varchar(767) NOT NULL,
|
||||
status char(1) DEFAULT '0' NOT NULL,
|
||||
create_by varchar(64) NOT NULL,
|
||||
create_date timestamp NOT NULL,
|
||||
update_by varchar(64) NOT NULL,
|
||||
update_date timestamp NOT NULL,
|
||||
remarks varchar(500),
|
||||
corp_code varchar(64) DEFAULT '0' NOT NULL,
|
||||
corp_name varchar(100) DEFAULT 'JeeSite' NOT NULL,
|
||||
PRIMARY KEY (category_code)
|
||||
) WITHOUT OIDS;
|
||||
|
||||
|
||||
-- 代码生成表
|
||||
CREATE TABLE js_gen_table
|
||||
(
|
||||
@@ -104,6 +79,31 @@ CREATE TABLE js_sys_area
|
||||
) WITHOUT OIDS;
|
||||
|
||||
|
||||
-- 业务分类
|
||||
CREATE TABLE js_biz_category
|
||||
(
|
||||
category_code varchar(64) NOT NULL,
|
||||
view_code varchar(500),
|
||||
category_name varchar(64) NOT NULL,
|
||||
parent_code varchar(64) NOT NULL,
|
||||
parent_codes varchar(767) NOT NULL,
|
||||
tree_sort decimal(10) NOT NULL,
|
||||
tree_sorts varchar(767) NOT NULL,
|
||||
tree_leaf char(1) NOT NULL,
|
||||
tree_level decimal(4) NOT NULL,
|
||||
tree_names varchar(767) NOT NULL,
|
||||
status char(1) DEFAULT '0' NOT NULL,
|
||||
create_by varchar(64) NOT NULL,
|
||||
create_date timestamp NOT NULL,
|
||||
update_by varchar(64) NOT NULL,
|
||||
update_date timestamp NOT NULL,
|
||||
remarks varchar(500),
|
||||
corp_code varchar(64) DEFAULT '0' NOT NULL,
|
||||
corp_name varchar(100) DEFAULT 'JeeSite' NOT NULL,
|
||||
PRIMARY KEY (category_code)
|
||||
) WITHOUT OIDS;
|
||||
|
||||
|
||||
-- 公司表
|
||||
CREATE TABLE js_sys_company
|
||||
(
|
||||
@@ -492,21 +492,6 @@ CREATE TABLE js_sys_menu
|
||||
) WITHOUT OIDS;
|
||||
|
||||
|
||||
-- 菜单数据权限
|
||||
CREATE TABLE js_sys_menu_data_scope
|
||||
(
|
||||
id varchar(64) NOT NULL,
|
||||
role_code varchar(64) NOT NULL,
|
||||
menu_code varchar(64) NOT NULL,
|
||||
rule_name varchar(100),
|
||||
rule_type char(1),
|
||||
rule_config text,
|
||||
status char(1),
|
||||
remarks varchar(500),
|
||||
PRIMARY KEY (id)
|
||||
) WITHOUT OIDS;
|
||||
|
||||
|
||||
-- 模块表
|
||||
CREATE TABLE js_sys_module
|
||||
(
|
||||
@@ -782,8 +767,7 @@ CREATE TABLE js_sys_role_data_scope
|
||||
ctrl_type varchar(20) NOT NULL,
|
||||
ctrl_data varchar(64) NOT NULL,
|
||||
ctrl_permi varchar(64) NOT NULL,
|
||||
menu_code varchar(64) DEFAULT '0' NOT NULL,
|
||||
PRIMARY KEY (role_code, ctrl_type, ctrl_data, ctrl_permi, menu_code)
|
||||
PRIMARY KEY (role_code, ctrl_type, ctrl_data, ctrl_permi)
|
||||
) WITHOUT OIDS;
|
||||
|
||||
|
||||
@@ -950,8 +934,6 @@ CREATE INDEX idx_sys_menu_sc ON js_sys_menu (sys_code);
|
||||
CREATE INDEX idx_sys_menu_is ON js_sys_menu (is_show);
|
||||
CREATE INDEX idx_sys_menu_mcs ON js_sys_menu (module_codes);
|
||||
CREATE INDEX idx_sys_menu_wt ON js_sys_menu (weight);
|
||||
CREATE INDEX idx_sys_menu_ds_mc ON js_sys_menu_data_scope (menu_code);
|
||||
CREATE INDEX idx_sys_menu_ds_rc ON js_sys_menu_data_scope (role_code);
|
||||
CREATE INDEX idx_sys_module_status ON js_sys_module (status);
|
||||
CREATE INDEX idx_sys_msg_inner_cb ON js_sys_msg_inner (create_by);
|
||||
CREATE INDEX idx_sys_msg_inner_status ON js_sys_msg_inner (status);
|
||||
@@ -1017,25 +999,6 @@ CREATE INDEX idx_sys_user_cc ON js_sys_user (corp_code);
|
||||
|
||||
/* Comments */
|
||||
|
||||
COMMENT ON TABLE js_biz_category IS '业务分类';
|
||||
COMMENT ON COLUMN js_biz_category.category_code IS '流程分类';
|
||||
COMMENT ON COLUMN js_biz_category.view_code IS '分类代码';
|
||||
COMMENT ON COLUMN js_biz_category.category_name IS '分类名称';
|
||||
COMMENT ON COLUMN js_biz_category.parent_code IS '父级编号';
|
||||
COMMENT ON COLUMN js_biz_category.parent_codes IS '所有父级编号';
|
||||
COMMENT ON COLUMN js_biz_category.tree_sort IS '排序号(升序)';
|
||||
COMMENT ON COLUMN js_biz_category.tree_sorts IS '所有排序号';
|
||||
COMMENT ON COLUMN js_biz_category.tree_leaf IS '是否最末级';
|
||||
COMMENT ON COLUMN js_biz_category.tree_level IS '层次级别';
|
||||
COMMENT ON COLUMN js_biz_category.tree_names IS '全节点名';
|
||||
COMMENT ON COLUMN js_biz_category.status IS '状态(0正常 1删除 2停用)';
|
||||
COMMENT ON COLUMN js_biz_category.create_by IS '创建者';
|
||||
COMMENT ON COLUMN js_biz_category.create_date IS '创建时间';
|
||||
COMMENT ON COLUMN js_biz_category.update_by IS '更新者';
|
||||
COMMENT ON COLUMN js_biz_category.update_date IS '更新时间';
|
||||
COMMENT ON COLUMN js_biz_category.remarks IS '备注信息';
|
||||
COMMENT ON COLUMN js_biz_category.corp_code IS '租户代码';
|
||||
COMMENT ON COLUMN js_biz_category.corp_name IS '租户名称';
|
||||
COMMENT ON TABLE js_gen_table IS '代码生成表';
|
||||
COMMENT ON COLUMN js_gen_table.table_name IS '表名';
|
||||
COMMENT ON COLUMN js_gen_table.class_name IS '实体类名称';
|
||||
@@ -1095,6 +1058,25 @@ COMMENT ON COLUMN js_sys_area.create_date IS '创建时间';
|
||||
COMMENT ON COLUMN js_sys_area.update_by IS '更新者';
|
||||
COMMENT ON COLUMN js_sys_area.update_date IS '更新时间';
|
||||
COMMENT ON COLUMN js_sys_area.remarks IS '备注信息';
|
||||
COMMENT ON TABLE js_biz_category IS '业务分类';
|
||||
COMMENT ON COLUMN js_biz_category.category_code IS '流程分类';
|
||||
COMMENT ON COLUMN js_biz_category.view_code IS '分类代码';
|
||||
COMMENT ON COLUMN js_biz_category.category_name IS '分类名称';
|
||||
COMMENT ON COLUMN js_biz_category.parent_code IS '父级编号';
|
||||
COMMENT ON COLUMN js_biz_category.parent_codes IS '所有父级编号';
|
||||
COMMENT ON COLUMN js_biz_category.tree_sort IS '排序号(升序)';
|
||||
COMMENT ON COLUMN js_biz_category.tree_sorts IS '所有排序号';
|
||||
COMMENT ON COLUMN js_biz_category.tree_leaf IS '是否最末级';
|
||||
COMMENT ON COLUMN js_biz_category.tree_level IS '层次级别';
|
||||
COMMENT ON COLUMN js_biz_category.tree_names IS '全节点名';
|
||||
COMMENT ON COLUMN js_biz_category.status IS '状态(0正常 1删除 2停用)';
|
||||
COMMENT ON COLUMN js_biz_category.create_by IS '创建者';
|
||||
COMMENT ON COLUMN js_biz_category.create_date IS '创建时间';
|
||||
COMMENT ON COLUMN js_biz_category.update_by IS '更新者';
|
||||
COMMENT ON COLUMN js_biz_category.update_date IS '更新时间';
|
||||
COMMENT ON COLUMN js_biz_category.remarks IS '备注信息';
|
||||
COMMENT ON COLUMN js_biz_category.corp_code IS '租户代码';
|
||||
COMMENT ON COLUMN js_biz_category.corp_name IS '租户名称';
|
||||
COMMENT ON TABLE js_sys_company IS '公司表';
|
||||
COMMENT ON COLUMN js_sys_company.company_code IS '公司编码';
|
||||
COMMENT ON COLUMN js_sys_company.view_code IS '公司代码';
|
||||
@@ -1393,15 +1375,6 @@ COMMENT ON COLUMN js_sys_menu.extend_d2 IS '扩展 Date 2';
|
||||
COMMENT ON COLUMN js_sys_menu.extend_d3 IS '扩展 Date 3';
|
||||
COMMENT ON COLUMN js_sys_menu.extend_d4 IS '扩展 Date 4';
|
||||
COMMENT ON COLUMN js_sys_menu.extend_json IS '扩展 JSON';
|
||||
COMMENT ON TABLE js_sys_menu_data_scope IS '菜单数据权限';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.id IS '编号';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.role_code IS '角色编码';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.menu_code IS '菜单编码';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.rule_name IS '规则名称';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.rule_type IS '规则类型(1 角色数据范围 2自定义条件规则 3自定义SQL)';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.rule_config IS '规则配置(JSON)';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.status IS '状态(0正常 1删除 2停用)';
|
||||
COMMENT ON COLUMN js_sys_menu_data_scope.remarks IS '备注信息';
|
||||
COMMENT ON TABLE js_sys_module IS '模块表';
|
||||
COMMENT ON COLUMN js_sys_module.module_code IS '模块编码';
|
||||
COMMENT ON COLUMN js_sys_module.module_name IS '模块名称';
|
||||
@@ -1578,7 +1551,7 @@ COMMENT ON COLUMN js_sys_role.is_sys IS '系统内置(1是 0否)';
|
||||
COMMENT ON COLUMN js_sys_role.is_show IS '是否显示';
|
||||
COMMENT ON COLUMN js_sys_role.user_type IS '用户类型(employee员工 member会员)';
|
||||
COMMENT ON COLUMN js_sys_role.desktop_url IS '桌面地址(仪表盘地址)';
|
||||
COMMENT ON COLUMN js_sys_role.data_scope IS '数据范围(0未设置 1全部数据 2自定义数据)';
|
||||
COMMENT ON COLUMN js_sys_role.data_scope IS '数据范围设置(0未设置 1全部数据 2自定义数据)';
|
||||
COMMENT ON COLUMN js_sys_role.biz_scope IS '适应业务范围(不同的功能,不同的数据权限支持)';
|
||||
COMMENT ON COLUMN js_sys_role.sys_codes IS '包含系统(多个用逗号隔开)';
|
||||
COMMENT ON COLUMN js_sys_role.status IS '状态(0正常 1删除 2停用)';
|
||||
@@ -1615,7 +1588,6 @@ COMMENT ON COLUMN js_sys_role_data_scope.role_code IS '控制角色编码';
|
||||
COMMENT ON COLUMN js_sys_role_data_scope.ctrl_type IS '控制类型';
|
||||
COMMENT ON COLUMN js_sys_role_data_scope.ctrl_data IS '控制数据';
|
||||
COMMENT ON COLUMN js_sys_role_data_scope.ctrl_permi IS '控制权限';
|
||||
COMMENT ON COLUMN js_sys_role_data_scope.menu_code IS '菜单编码';
|
||||
COMMENT ON TABLE js_sys_role_menu IS '角色与菜单关联表';
|
||||
COMMENT ON COLUMN js_sys_role_menu.role_code IS '角色编码';
|
||||
COMMENT ON COLUMN js_sys_role_menu.menu_code IS '菜单编码';
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.10.1.springboot3-SNAPSHOT</version>
|
||||
<version>5.8.1-SNAPSHOT</version>
|
||||
<relativePath>../../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -127,13 +127,6 @@
|
||||
<version>${project.parent.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- JTA 事务(当 spring.jta.enabled 为 true 的时候开启,不使用 jta 的时候不要引入该依赖)
|
||||
<dependency>
|
||||
<groupId>com.atomikos</groupId>
|
||||
<artifactId>transactions-spring-boot3-starter</artifactId>
|
||||
<version>${atomikos.version}</version>
|
||||
</dependency> -->
|
||||
|
||||
<!-- ELK 日志收集 -->
|
||||
<dependency>
|
||||
<groupId>net.logstash.logback</groupId>
|
||||
|
||||
@@ -17,7 +17,6 @@ import com.jeesite.common.shiro.session.SessionDAO;
|
||||
import com.jeesite.common.shiro.session.SessionManager;
|
||||
import com.jeesite.common.shiro.web.ShiroFilterFactoryBean;
|
||||
import com.jeesite.common.shiro.web.WebSecurityManager;
|
||||
import jakarta.servlet.Filter;
|
||||
import org.apache.shiro.cache.CacheManager;
|
||||
import org.apache.shiro.realm.Realm;
|
||||
import org.apache.shiro.realm.ldap.JndiLdapContextFactory;
|
||||
@@ -35,6 +34,7 @@ import org.springframework.context.annotation.DependsOn;
|
||||
import org.springframework.core.Ordered;
|
||||
import org.springframework.core.annotation.Order;
|
||||
|
||||
import javax.servlet.Filter;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
@@ -16,10 +16,10 @@ import org.apache.shiro.authc.AuthenticationToken;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
import org.apache.shiro.web.util.WebUtils;
|
||||
|
||||
import jakarta.servlet.ServletRequest;
|
||||
import jakarta.servlet.ServletResponse;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* CAS过滤器
|
||||
|
||||
@@ -8,7 +8,6 @@ import com.jeesite.common.codec.DesUtils;
|
||||
import com.jeesite.common.codec.EncodeUtils;
|
||||
import com.jeesite.common.collect.ListUtils;
|
||||
import com.jeesite.common.collect.MapUtils;
|
||||
import com.jeesite.common.collect.SetUtils;
|
||||
import com.jeesite.common.config.Global;
|
||||
import com.jeesite.common.lang.ObjectUtils;
|
||||
import com.jeesite.common.lang.StringUtils;
|
||||
@@ -18,12 +17,13 @@ import com.jeesite.common.shiro.realm.BaseAuthorizingRealm;
|
||||
import com.jeesite.common.utils.SpringUtils;
|
||||
import com.jeesite.common.web.CookieUtils;
|
||||
import com.jeesite.common.web.http.ServletUtils;
|
||||
import com.jeesite.modules.sys.entity.*;
|
||||
import com.jeesite.modules.sys.utils.*;
|
||||
import jakarta.servlet.ServletRequest;
|
||||
import jakarta.servlet.ServletResponse;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import com.jeesite.modules.sys.entity.Log;
|
||||
import com.jeesite.modules.sys.entity.Role;
|
||||
import com.jeesite.modules.sys.entity.User;
|
||||
import com.jeesite.modules.sys.utils.CorpUtils;
|
||||
import com.jeesite.modules.sys.utils.LogUtils;
|
||||
import com.jeesite.modules.sys.utils.UserUtils;
|
||||
import com.jeesite.modules.sys.utils.ValidCodeUtils;
|
||||
import org.apache.shiro.authc.AuthenticationException;
|
||||
import org.apache.shiro.authc.AuthenticationToken;
|
||||
import org.apache.shiro.authc.IncorrectCredentialsException;
|
||||
@@ -37,11 +37,14 @@ import org.apache.shiro.web.util.WebUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 表单验证(包含验证码)过滤类
|
||||
@@ -54,11 +57,8 @@ public class FormFilter extends org.apache.shiro.web.filter.authc.FormAuthentica
|
||||
public static final String MESSAGE_PARAM = "message"; // 登录返回消息
|
||||
public static final String REMEMBER_USERCODE_PARAM = "rememberUserCode"; // 记住用户名
|
||||
public static final String EXCEPTION_ATTRIBUTE_NAME = "exception"; // 异常类属性名
|
||||
public static final String LOGIN_PARAM = "__login"; // 支持GET方式登录的参数
|
||||
|
||||
public static final Boolean POST_ROLE_PERMI = Global.getConfigToBoolean("user.postRolePermi", "false");
|
||||
public static final Boolean SWITCH_OFFICE = Global.getConfigToBoolean("user.switchOffice", "false");
|
||||
|
||||
public static final String LOGIN_PARAM = "__login"; // 支持GET方式登录的参数
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(FormFilter.class);
|
||||
|
||||
private static FormFilter instance;
|
||||
@@ -424,12 +424,9 @@ public class FormFilter extends org.apache.shiro.web.filter.authc.FormAuthentica
|
||||
Global.setLang((String)paramMap.get("lang"), request, response);
|
||||
}
|
||||
data.put("demoMode", Global.isDemoMode());
|
||||
data.put("useCorpModel", Global.isUseCorpModel());
|
||||
data.put("loginCodeCorpUnique", Global.getConfigToBoolean("user.loginCodeCorpUnique", "false"));
|
||||
data.put("useCorpModel", Global.isUseCorpModel()
|
||||
&& Global.getConfigToBoolean("user.loginCodeCorpUnique", "false"));
|
||||
data.put("title", Global.getProperty("productName"));
|
||||
data.put("company", Global.getProperty("companyName"));
|
||||
data.put("version", Global.getProperty("productVersion"));
|
||||
data.put("year", Global.getProperty("copyrightYear"));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -452,15 +449,10 @@ public class FormFilter extends org.apache.shiro.web.filter.authc.FormAuthentica
|
||||
data.put("msgEnabled", Global.getPropertyToBoolean("msg.enabled", "false"));
|
||||
data.put("sysCode", session.getAttribute("sysCode"));
|
||||
data.put("roleCode", session.getAttribute("roleCode"));
|
||||
data.put("postCode", session.getAttribute("postCode"));
|
||||
data.put("title", Global.getProperty("productName"));
|
||||
data.put("company", Global.getProperty("companyName"));
|
||||
data.put("version", Global.getProperty("productVersion"));
|
||||
data.put("year", Global.getProperty("copyrightYear"));
|
||||
data.put("lang", Global.getLang());
|
||||
List<Map<String, Object>> roleList = ListUtils.newArrayList();
|
||||
String desktopUrl = null; String roleCode = (String)session.getAttribute("roleCode");
|
||||
Set<String> roleCodes = roleCode != null ? SetUtils.newHashSet(StringUtils.splitComma(roleCode)) : null;
|
||||
String desktopUrl = null;
|
||||
for (Role role : user.getRoleList()){
|
||||
Map<String, Object> roleMap = MapUtils.newHashMap();
|
||||
roleMap.put("roleCode", role.getRoleCode());
|
||||
@@ -468,38 +460,11 @@ public class FormFilter extends org.apache.shiro.web.filter.authc.FormAuthentica
|
||||
roleMap.put("isShow", role.getIsShow());
|
||||
roleMap.put("sysCodes", role.getSysCodes());
|
||||
roleList.add(roleMap);
|
||||
// 根据当前身份,选择桌面地址(先得到先受用)
|
||||
if (desktopUrl == null) {
|
||||
if (roleCodes != null){
|
||||
if (roleCodes.contains(role.getRoleCode()) && StringUtils.isNotBlank(role.getDesktopUrl())) {
|
||||
desktopUrl = role.getDesktopUrl();
|
||||
}
|
||||
}else if (StringUtils.isNotBlank(role.getDesktopUrl())) {
|
||||
desktopUrl = role.getDesktopUrl();
|
||||
}
|
||||
if (desktopUrl == null && StringUtils.isNotBlank(role.getDesktopUrl())) {
|
||||
desktopUrl = role.getDesktopUrl();
|
||||
}
|
||||
}
|
||||
data.put("roleList", roleList);
|
||||
if (POST_ROLE_PERMI && User.USER_TYPE_EMPLOYEE.equals(user.getUserType())) {
|
||||
List<Map<String, Object>> postList = ListUtils.newArrayList();
|
||||
data.put("postRolePermi", "true");
|
||||
Employee employee = user.getRefObj();
|
||||
for (EmployeePost ep : EmpUtils.getEmployeePostList(employee.getEmpCode())){
|
||||
Post post = ep.getPost();
|
||||
if (post != null) {
|
||||
Map<String, Object> postMap = MapUtils.newHashMap();
|
||||
postMap.put("postCode", post.getPostCode());
|
||||
postMap.put("postName", post.getPostName());
|
||||
postList.add(postMap);
|
||||
}
|
||||
}
|
||||
data.put("postList", postList);
|
||||
}
|
||||
if (SWITCH_OFFICE && User.USER_TYPE_EMPLOYEE.equals(user.getUserType())) {
|
||||
data.put("switchOffice", "true");
|
||||
data.put("officeCode", session.getAttribute("officeCode"));
|
||||
data.put("officeName", EmpUtils.getCurrentOfficeName());
|
||||
}
|
||||
data.put("desktopUrl", desktopUrl != null ? desktopUrl : Global.getConfig("sys.index.desktopUrl"));
|
||||
return data;
|
||||
}
|
||||
|
||||
@@ -8,9 +8,9 @@ import com.jeesite.common.config.Global;
|
||||
import com.jeesite.common.lang.StringUtils;
|
||||
import org.apache.shiro.web.filter.AccessControlFilter;
|
||||
|
||||
import jakarta.servlet.ServletRequest;
|
||||
import jakarta.servlet.ServletResponse;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
/**
|
||||
* 内部系统访问过滤器
|
||||
|
||||
@@ -6,8 +6,8 @@ package com.jeesite.common.shiro.filter;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import jakarta.servlet.ServletRequest;
|
||||
import jakarta.servlet.ServletResponse;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
|
||||
import org.apache.shiro.authc.AuthenticationToken;
|
||||
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
*/
|
||||
package com.jeesite.common.shiro.filter;
|
||||
|
||||
import jakarta.servlet.ServletRequest;
|
||||
import jakarta.servlet.ServletResponse;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.shiro.session.SessionException;
|
||||
|
||||
@@ -9,15 +9,15 @@ import com.jeesite.common.config.Global;
|
||||
import com.jeesite.common.lang.StringUtils;
|
||||
import com.jeesite.common.web.http.ServletUtils;
|
||||
import com.jeesite.common.web.http.wrapper.GetHttpServletRequestWrapper;
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.ServletRequest;
|
||||
import jakarta.servlet.ServletResponse;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.authz.UnauthorizedException;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
import org.apache.shiro.web.util.WebUtils;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,9 +4,8 @@
|
||||
*/
|
||||
package com.jeesite.common.shiro.filter;
|
||||
|
||||
import jakarta.servlet.ServletRequest;
|
||||
import jakarta.servlet.ServletResponse;
|
||||
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,10 +6,10 @@ package com.jeesite.common.shiro.filter;
|
||||
|
||||
import com.jeesite.common.config.Global;
|
||||
import com.jeesite.common.lang.StringUtils;
|
||||
import jakarta.servlet.ServletRequest;
|
||||
import jakarta.servlet.ServletResponse;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
|
||||
@@ -15,7 +15,6 @@ import com.jeesite.modules.sys.entity.User;
|
||||
import com.jeesite.modules.sys.service.UserService;
|
||||
import com.jeesite.modules.sys.utils.LogUtils;
|
||||
import com.jeesite.modules.sys.utils.UserUtils;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import org.apache.shiro.authc.AuthenticationException;
|
||||
import org.apache.shiro.authc.AuthenticationInfo;
|
||||
import org.apache.shiro.authc.AuthenticationToken;
|
||||
@@ -23,6 +22,8 @@ import org.apache.shiro.authz.AuthorizationInfo;
|
||||
import org.apache.shiro.session.Session;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
/**
|
||||
* 系统认证授权实现类
|
||||
* @author ThinkGem
|
||||
|
||||
@@ -30,8 +30,8 @@ import org.jasig.cas.client.validation.TicketValidationException;
|
||||
import org.jasig.cas.client.validation.TicketValidator;
|
||||
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.validation.ValidationException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.validation.ValidationException;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user