Compare commits

..

451 Commits

Author SHA1 Message Date
thinkgem
6f55139127 update README.md 2025-02-17 10:49:27 +08:00
thinkgem
4407d979e6 点击右上角【Star】收藏本软件 ^_^ 2025-02-17 10:48:51 +08:00
thinkgem
ddac21b170 5.10.1 2025-02-15 23:18:09 +08:00
thinkgem
94c5ad6e06 5.10.1 2025-02-15 21:17:12 +08:00
thinkgem
d429dde8c5 自定义数据权限分配树,默认展开等级设为1 2025-02-15 16:41:29 +08:00
thinkgem
9c5db77a65 登录后不指定默认当前部门编号 2025-02-15 16:40:28 +08:00
thinkgem
dddad4d113 更新 visual 类名 2025-02-14 22:04:00 +08:00
thinkgem
0ff7e3bf8f 添加 文档接口响应参数 2025-02-13 18:36:35 +08:00
thinkgem
bfc9953b32 新增 条件规则数据权限、自定义SQL数据权限,暂存 2025-02-12 18:40:12 +08:00
thinkgem
4a3604169c 优化 二级管理员参数提示信息 2025-02-12 18:17:06 +08:00
thinkgem
8630ec6e71 remove aria-hidden="true" 2025-02-12 18:16:01 +08:00
thinkgem
f063d6327b 新增 按菜单进行数据权限授权,后端通过addFilterByPermission方法调用权限。 2025-02-11 14:29:07 +08:00
thinkgem
8b97b011f8 新增 user.dataScopeJoinMode 参数,默认关闭 JOIN 模式的数据权限,如有需要可打开此参数 2025-02-11 12:50:46 +08:00
thinkgem
04cbc2a4fe 新增 列名 columnName 正则表达式的安全过滤 2025-02-11 12:46:53 +08:00
thinkgem
46fd24c819 update 2025-02-11 12:44:10 +08:00
thinkgem
46bdef5058 增加默认值 2025-02-07 20:44:22 +08:00
thinkgem
1fd1b3310f 更新配置文件 2025-02-07 17:22:55 +08:00
thinkgem
cc9add884d 代码优化 EmpUtils 增加 getCompanyCodes、getCompanyParentCodess 方法 2025-02-07 17:11:11 +08:00
thinkgem
b59d91ea4e 将 router.push 替换为 useGo 增加代码健壮性 2025-02-07 16:03:33 +08:00
thinkgem
9e728c5608 add ObjectUtilsTest.java 2025-02-05 21:10:23 +08:00
thinkgem
05185bb29a 修正String转Long丢失精度问题 2025-02-05 21:10:00 +08:00
thinkgem
35c6dabab3 update config 2025-02-05 20:54:12 +08:00
thinkgem
4de0934e7f 新增 切换部门功能、多部门岗位权限 2025-02-01 16:22:15 +08:00
thinkgem
b12c010cd3 优化 查询当前员工关联的岗位信息和附属机构信息接口 2025-01-28 11:47:05 +08:00
thinkgem
16ba930729 新增 获取当前用户岗位列表 EmpUtils.getEmployeePostList 缓存接口 2025-01-28 11:45:26 +08:00
thinkgem
f717a5230a 新增 岗位查询角色接口新增 postCode_in 查询条件 2025-01-28 11:44:18 +08:00
thinkgem
e47cc42da8 丰富 EmployeeOffice 返回结果 2025-01-28 11:43:00 +08:00
thinkgem
ca0fb1d2cb 新增 form:treeselect 组件 fieldNames 属性,自定义数据源的字段名 2025-01-28 11:41:09 +08:00
thinkgem
f027edab9a 从LoginController分离出SwitchController类 2025-01-27 23:42:56 +08:00
thinkgem
a578a70a9b 修正 sqlserver 分页时,缺少 order by 的问题 2025-01-21 15:37:29 +08:00
thinkgem
9d2d00bc89 优化 切换当前身份时,自动对应身份的桌面地址 2025-01-20 17:31:16 +08:00
thinkgem
8a9739c362 新增 RSA 非对称加密工具 2025-01-16 17:36:21 +08:00
thinkgem
ad25e79f31 update README.md 2025-01-16 17:27:00 +08:00
thinkgem
b45cabbd25 format code 2025-01-14 10:37:34 +08:00
thinkgem
e9bc20dd9b update MsgPushTest 2025-01-13 15:09:52 +08:00
thinkgem
d18028a247 update README.md 2025-01-10 14:00:47 +08:00
thinkgem
2ace98d3df upgrade h2 to 2.3.232 2025-01-08 17:03:39 +08:00
thinkgem
99f908b338 update useless code 2025-01-08 17:02:56 +08:00
thinkgem
05873ff46d update README.md 2025-01-06 11:22:07 +08:00
thinkgem
a2e7f3f640 mybatis 3.5.16、mybatis spring 3.0.4 2025-01-06 10:26:40 +08:00
thinkgem
24c7d20531 next version 2025-01-06 09:42:21 +08:00
thinkgem
812e3f2a28 自定义 InitBinder 不进行绑定 Header 中的数据 2025-01-04 09:41:19 +08:00
thinkgem
2c59192482 update area data 2025-01-01 19:44:18 +08:00
thinkgem
f31810325a 5.10.0 2024-12-31 11:27:32 +08:00
thinkgem
ac47ac128d update import icon 2024-12-31 10:30:06 +08:00
thinkgem
71ebba0b8f 2025 2024-12-30 14:57:04 +08:00
thinkgem
58e3c0f6e1 update h2db 2024-12-29 16:45:27 +08:00
thinkgem
6350b7d87c update README.md 2024-12-29 16:45:02 +08:00
thinkgem
647c17c350 update bin 2024-12-26 11:43:10 +08:00
thinkgem
79c1213391 上传文件必填时,防止表单验证提示输入历史 2024-12-25 16:20:51 +08:00
thinkgem
49967508f4 update README.md 2024-12-25 15:50:16 +08:00
thinkgem
65b3cb19be update jdbc url 2024-12-25 10:30:54 +08:00
thinkgem
fa1107737a update yml config 2024-12-24 00:15:54 +08:00
thinkgem
f4d3b2016e spring boot 3.4.0 2024-12-23 17:35:32 +08:00
thinkgem
719ad508d0 remove beetl includeJSP 2024-12-23 17:14:12 +08:00
thinkgem
a43f65f4b8 add fury serialize 2024-12-23 17:12:34 +08:00
thinkgem
542c3ff07b update README.md 2024-12-13 12:59:09 +08:00
thinkgem
1dbe3ae0ee update README.md 2024-12-13 10:19:25 +08:00
thinkgem
235966b4a8 增加参考配置,可查看哪些用户的数据,ctrlPermi 更改为 0 后显示 2024-12-11 10:32:41 +08:00
thinkgem
b6e69ea0c3 细节优化,控制业务范围重命名为业务范围 2024-12-11 10:27:57 +08:00
thinkgem
4a233121c9 移除重复参数 2024-12-11 10:23:18 +08:00
thinkgem
23b14b4517 新增BigDecimalType 2024-12-05 11:12:00 +08:00
thinkgem
27254d09b3 update 2024-12-05 11:11:51 +08:00
thinkgem
f2f75aceee update version 2024-12-04 14:30:09 +08:00
thinkgem
bd8bd10ed5 使用对象存储时,文件管理的在线预览文件中的下载地址修正 2024-12-04 14:17:35 +08:00
thinkgem
6984e97cd2 update 2024-11-26 20:10:09 +08:00
thinkgem
ea2a3193ea update README.md 2024-11-24 20:36:58 +08:00
thinkgem
290e8ec31e 5.9.2 2024-11-23 09:55:58 +08:00
thinkgem
30039a35bb update 2024-11-21 09:49:06 +08:00
thinkgem
14f57be279 更新注册提示信息 2024-11-13 17:16:45 +08:00
thinkgem
207897e7be update 2024-11-13 13:47:51 +08:00
thinkgem
df728bc3d6 切换系统时,清除当前岗位和角色状态 2024-11-12 10:55:08 +08:00
thinkgem
3333ad2e10 设备信息字段 device_info 长度调整为 4000 2024-11-11 17:11:33 +08:00
thinkgem
83752a77cb spring boot 3.3.5 2024-11-08 09:52:44 +08:00
thinkgem
14437dfb7a 登录后重定向地址验证,如果是非法地址,则指定默认的登录成功地址 2024-11-07 17:53:43 +08:00
thinkgem
ce1c06eef2 update README.md 2024-11-07 16:13:30 +08:00
thinkgem
a98f8a816a update description 2024-11-07 16:13:26 +08:00
thinkgem
5d16bb8103 update version 2024-11-07 15:28:16 +08:00
thinkgem
48dbec081d Vue登录界面useCorpModel更改为loginCodeCorpUnique 2024-11-07 15:15:48 +08:00
thinkgem
f9648bcaf8 新增 窗口右上角的头像下拉菜单,切换当前用户所属岗位,并联动切换当前菜单权限 2024-11-07 10:26:27 +08:00
thinkgem
68a7c395e0 提升登录性能;支持普通用户升级为超管用户。 2024-11-07 10:22:32 +08:00
thinkgem
0b4bb63dbe 优化 MenuDao.xml 接口 findByUserCode 替换为 findByRoleCodes 升级时注意 2024-11-07 10:19:25 +08:00
thinkgem
03c5d4a051 新增 当前用户 user.getRoleList() 支持返回 岗位关联角色数据 2024-11-07 10:19:13 +08:00
thinkgem
380ee54ae5 新增 岗位关联角色(用户->岗位->角色)权限控制,可通过 user.postRolePermi=true 参数开启 2024-11-07 10:17:24 +08:00
thinkgem
6e3b93f645 增加岗位切换接口;优化登录菜单权限查询,直接通过当前用户角色查询,减少联表,提升查询效率。 2024-11-07 10:15:59 +08:00
thinkgem
3eaa799455 优化 增加岗位保存时清理关联的用户缓存 2024-11-07 10:14:32 +08:00
thinkgem
283d27d0df 优化 超级管理员作为普通员工时的角色数据查询,允许修改超级管理员员工信息,不允许停用禁用删除超管 2024-11-07 10:12:54 +08:00
thinkgem
8c86d1534c 增加手机端单表代码生成模板 2024-11-05 11:26:05 +08:00
thinkgem
40054e4c6e quartz 2.4.0.rc3 2024-11-04 18:14:14 +08:00
thinkgem
2981699bd1 update 2024-11-04 17:52:11 +08:00
thinkgem
3484d93a42 jackson 2.18.1 2024-11-04 17:36:31 +08:00
thinkgem
9a70ddb758 优化 mvc 接受字段类型不一致信息显示,方便调试 2024-11-01 19:59:51 +08:00
thinkgem
805759db01 调整代码生成模板目录 2024-11-01 10:44:03 +08:00
thinkgem
481246f52e 优化表单内表格的行高和边距 2024-11-01 10:43:32 +08:00
thinkgem
ba077ecd41 update 2024-10-25 19:07:18 +08:00
thinkgem
00d3995bd4 5.9.1 2024-10-21 22:34:58 +08:00
thinkgem
ab801bd9cc update app name 2024-10-21 14:12:14 +08:00
thinkgem
d71ad5e140 spring boot 3.2.10 2024-10-10 21:10:45 +08:00
thinkgem
e7177d7f65 编辑表格中被隐藏的旧数据行控件忽略前端校验 2024-10-10 09:03:26 +08:00
thinkgem
8fba82935b update 2024-10-08 16:34:12 +08:00
thinkgem
7d9b643edf 代码生成模板新增vue子表独立组件的生成 2024-10-08 14:13:32 +08:00
thinkgem
2f74e04645 代码生成支持带减号的工程模块名生成工程和微服务工程 2024-10-08 14:08:23 +08:00
thinkgem
1e723aae04 驼峰命名法工具增加减号替换 2024-10-08 14:04:57 +08:00
thinkgem
330a2977eb 增加启动完成提示信息日志 2024-10-08 14:03:05 +08:00
thinkgem
8167fff4bc 生成前端路径更改为 Vue 前端路径,仅用于分离端的代码生成路径。 2024-09-27 15:09:29 +08:00
thinkgem
6c3ecdac63 代码生成模板新增classNameSimple参数,不带模块名的类名。子表List字段名不带模块名。 2024-09-27 15:08:44 +08:00
thinkgem
874a4465ea fix gen template version 2024-09-24 17:09:57 +08:00
thinkgem
c3e07cd96c 启动日志中显示 tomcat 版本号 2024-09-24 14:02:40 +08:00
thinkgem
509ab88fee 新增监控开关参数 服务器监控 state.server 缓存监控 state.cache 数据监控 state.druid 2024-09-23 13:32:45 +08:00
thinkgem
edce962f2c 文件预览列表增加文件名返回参数 2024-09-23 12:02:14 +08:00
thinkgem
01f599db82 update upbw html 2024-09-22 19:28:23 +08:00
thinkgem
518b386637 update README.md 2024-09-22 17:38:33 +08:00
thinkgem
586a6adf97 5.9.0 2024-09-18 09:45:29 +08:00
thinkgem
495da42f2b 增加 gen.simpleRequestMapping 默认参数 true 可简洁 url 地址 2024-09-18 09:08:33 +08:00
thinkgem
b353477793 fix 代码生成业务列表选择框i18n路径 2024-09-18 09:08:08 +08:00
thinkgem
4d3dd85a1c 数据源管理:新增连接等待时间、连接失败中断默认参数;新增集群支持,单机修改后自动同步到集群其它节点 2024-09-16 22:22:08 +08:00
thinkgem
d7b4c2494d update README.md 2024-09-14 13:05:54 +08:00
thinkgem
0abd8cbd5a update 2024-09-14 13:04:27 +08:00
thinkgem
9355576fad update 2024-09-14 12:54:52 +08:00
thinkgem
f979005e2f 小屏幕下的菜单按钮布局优化 2024-09-13 10:47:28 +08:00
thinkgem
f65c6e0ab5 默认显示列表搜索框 2024-09-13 10:46:36 +08:00
thinkgem
dbafe28918 默认显示列表搜索框 2024-09-13 10:46:19 +08:00
thinkgem
ec47a71e16 默认显示列表搜索框 2024-09-13 10:46:06 +08:00
thinkgem
4b566084e3 默认显示列表搜索框 2024-09-13 10:45:49 +08:00
thinkgem
a4ecd765d4 new version 2024-09-12 10:12:16 +08:00
thinkgem
f3ea863e76 子表增加表单验证提示、代码格式化 2024-09-11 10:16:42 +08:00
thinkgem
7787d7ce0a update README.md 2024-08-29 16:22:51 +08:00
thinkgem
3cfef3c57e 优化导入 2024-08-29 13:12:41 +08:00
thinkgem
8a10f1679a update 2024-08-29 10:31:14 +08:00
thinkgem
f80e1b6c3a 新增支持 Vue 地址路由参数,使用 {param1} 自动替换为 :param1,用法详见 params.vue 2024-08-28 15:09:31 +08:00
thinkgem
49393124ac 新增导出Excel数据按钮loading状态 2024-08-27 14:40:45 +08:00
thinkgem
8e9b9043aa update 2024-08-26 21:42:45 +08:00
thinkgem
a210e7f621 Merge remote-tracking branch 'origin/v5.springboot3' into v5.springboot3 2024-08-22 17:44:11 +08:00
thinkgem
9cf4cd30a2 update README.md 2024-08-22 17:40:04 +08:00
thinkgem
60d6b9c1cf 优化流程表单模板,支持从表单进入显示审批意见框 2024-08-16 18:44:26 +08:00
thinkgem
b499bb951b update 2024-08-16 17:49:20 +08:00
thinkgem
da91070c30 5.8.1 2024-08-16 16:00:36 +08:00
thinkgem
8fd7fcb489 update 2024-08-15 19:59:57 +08:00
thinkgem
cad2ff85ef 5.8.1 2024-08-12 11:17:22 +08:00
thinkgem
8bbd343af4 优化查询的更多按钮,显示一个双箭头,增加动画效果 2024-08-12 10:21:49 +08:00
thinkgem
7b4499135b 添加版本提示 2024-08-09 14:18:09 +08:00
thinkgem
da954bf68d 将账号+手机验证码登录,替换为手机号+验证码登录;当一个手机号绑定多个账号的时候,可以让用户选择登录的账号进行登录;新增userService.findListByMobile接口 2024-08-02 20:01:24 +08:00
thinkgem
6b428bcb50 Excel导入导出支持ExcelFields注解添加到类上 2024-07-28 13:24:25 +08:00
thinkgem
1d94e4511d spring boot 3.2 2024-07-28 13:22:34 +08:00
thinkgem
91b6344479 代码优化 2024-07-26 11:10:04 +08:00
thinkgem
35a32ce799 添加 webp 格式 2024-07-25 11:53:05 +08:00
thinkgem
768c162150 代码优化 2024-07-25 11:36:11 +08:00
thinkgem
f6e598d225 移除fst依赖 2024-07-25 11:35:54 +08:00
thinkgem
5084ac39cf 新增 web.isDefaultResult 参数,默认全局进行接口结果包装为 { code: 200, msg: "", data: {} | [] };新增 web.resultParamName 和 headerParamName 参数,对个别结果进行包装 2024-07-24 14:59:45 +08:00
thinkgem
ea5e164a4e update README.md 2024-07-24 14:54:52 +08:00
thinkgem
fcc53684cd 新增 SM2Utils、SM3Utils、SM4Utils 国密算法工具类及测试类 2024-07-23 19:44:28 +08:00
thinkgem
c53b52f932 新增 encrypt.defaultKey 参数,适用于 Aes、M3 加密的默认秘钥;新增 encrypt.storeBase64 参数,是否将 Hex 编码改为 Base64 编码存储;新增 encrypt.smAlgorithm 参数,是否使用国密 SM 算法(一键替换 SHA-1 替换为 SM3、AES 替换为 SM4 算法) 2024-07-23 19:43:27 +08:00
thinkgem
5f104fce87 新增 encrypt.smAlgorithm 参数,是否使用国密 SM 算法(一键替换 SHA-1 替换为 SM3、AES 替换为 SM4 算法) 2024-07-23 19:41:18 +08:00
thinkgem
a15fb508f9 新增 EncryptTypeHandler、SM4TypeHandler 加密 MyBatis Handler 2024-07-23 19:39:56 +08:00
thinkgem
89d785f04c 新增 encrypt.defaultKey 参数,适用于 Aes、M3 加密的默认秘钥;新增 encrypt.storeBase64 参数,是否将 Hex 编码改为 Base64 编码存储 2024-07-23 19:39:19 +08:00
thinkgem
09b1505120 优化 加密算法工具类,增加测试类。 2024-07-23 19:37:56 +08:00
thinkgem
6561862aae 添加 bcprov 算法类库 2024-07-23 19:37:08 +08:00
thinkgem
e4335eb840 新增 PwdService 服务类方便自定义重写密码相关实现 2024-07-21 17:40:03 +08:00
thinkgem
5e5111523d update 消除干扰 2024-07-21 17:30:17 +08:00
thinkgem
ad893798a5 new version 2024-07-19 08:55:07 +08:00
thinkgem
414f44c338 增加Excel导入导出测试类,增加模板导出。 2024-07-18 15:52:08 +08:00
thinkgem
237ee91644 update README.md. 2024-07-17 08:59:15 +08:00
thinkgem
c0b42921ec add ckplayer 2024-07-17 08:58:33 +08:00
thinkgem
3394ddcc03 修复UEditor上传视频的首图不显示的问题 2024-07-11 10:22:38 +08:00
thinkgem
bfd128f6bd update 2024-07-11 09:47:34 +08:00
thinkgem
1263b18724 update 2024-07-08 17:27:53 +08:00
thinkgem
e942c70553 format pom.xml 2024-07-07 19:10:36 +08:00
thinkgem
3d63ccba2f update sysLogin 2024-07-07 12:26:50 +08:00
thinkgem
7b20b3cc0e poi version 2024-07-07 12:21:21 +08:00
thinkgem
0caf88a0bc 将 test 独立出模块,方便代码管理 2024-07-06 22:21:58 +08:00
thinkgem
5e933119f3 使用 __url 参数统一管理成功跳转地址 2024-07-06 10:23:18 +08:00
thinkgem
b4f3e6b6a2 update 2024-07-04 19:23:19 +08:00
thinkgem
e4fc9057b3 新增附属部门切换接口,方便获取当前默认部门 2024-07-04 16:45:00 +08:00
thinkgem
dd3e52a8ca 5.8.0 2024-07-03 12:54:20 +08:00
thinkgem
e81e548f92 5.8.0 2024-07-01 18:51:42 +08:00
thinkgem
616e2f45cb 匿名类添加过滤器名称,防止被重名覆盖 2024-07-01 18:39:01 +08:00
thinkgem
de312d3ec6 update 2024-07-01 18:38:01 +08:00
thinkgem
41456b8965 RoleService增加findManageMenuList 2024-06-27 15:43:56 +08:00
thinkgem
afe32c5abe 5.8.0 2024-06-26 11:22:13 +08:00
thinkgem
31349430b6 update 2024-06-25 17:13:55 +08:00
thinkgem
11747540ad spring boot 3.2.7、mybatis 3.5.15、jsqlparser 4.7、shiro 2.0.1、tools... 2024-06-25 17:10:07 +08:00
thinkgem
a8ad781197 uploadPath参数增加变量corpCode、userCode、userType、userCache中的key 2024-06-24 11:32:43 +08:00
thinkgem
a8353b654b update sso api success url 2024-06-22 09:05:53 +08:00
thinkgem
66b4932d9d 当没有传递参数类型并有方法重载时,需优先获取无参数的方法名 2024-06-20 17:56:25 +08:00
thinkgem
b50e6005da abc验证的修改会影响租户管理的保存,还原并增加abc123验证 2024-06-13 11:29:12 +08:00
thinkgem
5567e96d65 更新CMS全文搜索模块安装提示 2024-06-03 10:58:21 +08:00
thinkgem
865986da28 消息查看增加空值校验 2024-06-03 10:56:46 +08:00
thinkgem
13d8b8390a next 2024-05-28 15:03:13 +08:00
thinkgem
cc0794c3fc 增加ctxPath参数,当映射根路径不同的时候使用 2024-05-28 14:38:49 +08:00
thinkgem
0a29bed4ad update 2024-05-27 15:30:14 +08:00
thinkgem
5a4c03332a add dbm module 2024-05-27 15:28:32 +08:00
thinkgem
fa6b887ed2 file.uploadPath 增加 {bizType} 变量 2024-05-27 08:34:20 +08:00
thinkgem
d3da625f72 update 2024-05-23 08:51:43 +08:00
thinkgem
c70889eedd get cookie add xss 2024-05-20 10:29:49 +08:00
thinkgem
6c62d191c5 大文件下载 2024-05-17 12:31:05 +08:00
thinkgem
2900fb0ce2 gen template type fix 2024-05-14 22:26:30 +08:00
thinkgem
7597dcd572 update README.md 2024-05-14 19:22:05 +08:00
thinkgem
3430d160bf update README.md 2024-05-14 18:47:33 +08:00
thinkgem
ae63df2d55 update README.md 2024-05-14 15:15:06 +08:00
thinkgem
668042ca1a 5.7.1 2024-05-13 14:51:43 +08:00
thinkgem
3eef280ade 代码优化 2024-05-12 16:00:10 +08:00
thinkgem
f83e3f5e7f skinName add xssFilter 2024-05-11 15:28:12 +08:00
thinkgem
92870be96e biz_category 2024-05-11 14:23:59 +08:00
thinkgem
a3a7bd0230 MsgInnerService抽离接口 2024-05-11 14:23:14 +08:00
thinkgem
d0eba614bd 调整配置文件目录 2024-05-11 13:44:05 +08:00
thinkgem
7f42e99070 update README.md 2024-05-10 22:52:33 +08:00
thinkgem
867ba3933c update 2024-05-10 17:41:32 +08:00
thinkgem
149ca55246 update 2024-05-08 16:47:49 +08:00
thinkgem
15c180440f h2数据表增加备注信息 2024-05-08 15:15:58 +08:00
thinkgem
8053457e17 添加达梦和金仓数据库的驱动注释 2024-05-07 13:58:33 +08:00
thinkgem
9f952f1b5b 字典值dict_value字段存储加长 2024-05-07 13:42:35 +08:00
thinkgem
66740854f6 update 2024-05-07 13:41:20 +08:00
thinkgem
ecb31bf21a bootstrap css 3.4.1 2024-05-07 13:41:01 +08:00
thinkgem
2e8cc49dfa update 2024-05-02 21:17:36 +08:00
thinkgem
97ef1fdec1 update yml help 2024-04-30 17:58:21 +08:00
thinkgem
9decf2ed58 重命名一些CMS模块字段名,避免有些数据库关键字问题 2024-04-29 14:58:38 +08:00
thinkgem
54b9d85b0d 新增业务分类功能维护,作为通用业务分类,替换流程分类 2024-04-27 18:08:31 +08:00
thinkgem
1d1eda1f0a add dbm 2024-04-27 11:27:36 +08:00
thinkgem
65ed0fa550 update 2024-04-27 10:27:05 +08:00
thinkgem
15c440be0a update 2024-04-26 16:14:39 +08:00
thinkgem
dbc4eb9bed 美化表单的子标题缩进一些及其它细节 2024-04-26 08:28:50 +08:00
thinkgem
beb3285a51 添加 IdGen.randomShortString() 方法 2024-04-25 23:31:26 +08:00
thinkgem
1b74cbe4ba update 2024-04-25 23:30:20 +08:00
thinkgem
3fde0742aa 修改前后差异数据表格展示表格美化 2024-04-23 15:39:06 +08:00
thinkgem
71ea34ec0e update 2024-04-23 15:37:32 +08:00
thinkgem
41f1675c2b bpm:comment 组件增加 showCommWords 参数 2024-04-22 20:53:50 +08:00
thinkgem
57deb501ba update 2024-04-21 19:54:19 +08:00
thinkgem
e806f67b9f 后端验证提示信息优化 2024-04-21 19:53:22 +08:00
thinkgem
dc80b74c79 前后差异日志分析,排除@id的属性展示,展示界面美化 2024-04-21 19:52:50 +08:00
thinkgem
a3b4a1fc7d 提高日志标题生成的准确率 2024-04-21 19:49:28 +08:00
thinkgem
660c045965 样式细节优化 2024-04-19 19:04:13 +08:00
thinkgem
5c54c1aae4 后面显示编号的,去掉括号前的空格 2024-04-19 19:03:55 +08:00
thinkgem
132ff7a58d update 排除 char 2024-04-19 19:03:00 +08:00
thinkgem
d26d86805a 新增一些便捷方法,如果有设定属性值再使用 2024-04-18 21:56:23 +08:00
thinkgem
de601181df 新增能接受异常的 Function 2024-04-18 21:54:18 +08:00
thinkgem
cdd95e1ad5 增加 连接池 查询超时时间、事务超时时间 参数 2024-04-18 21:44:59 +08:00
thinkgem
da33d8781b 标题子标题优化 2024-04-18 21:22:44 +08:00
thinkgem
6529177a6b validation abc 验证增加字母验证要求 2024-04-18 21:20:47 +08:00
thinkgem
391e20d6f8 liquibase 4.20.0 2024-04-17 12:18:41 +08:00
thinkgem
4042b8cace 代码优化 2024-04-17 10:27:07 +08:00
thinkgem
cde338b7c2 update format 2024-04-17 09:06:04 +08:00
thinkgem
03f5b373f6 fix crud_cloud_select_vue 2024-04-15 11:16:06 +08:00
thinkgem
586ee75d4a 更新菜单链接地址帮助提示信息 2024-04-13 17:04:33 +08:00
thinkgem
9ef6140be0 如果填写组件路径,则组件名称根据组件路径自动生成,而不是链接地址 2024-04-12 21:25:53 +08:00
thinkgem
56fbc4d52a 样式美化 2024-04-12 18:02:19 +08:00
thinkgem
2f315cd39a dataGrid编辑表格下拉框增加itemTitle属性 2024-04-12 18:00:21 +08:00
thinkgem
66e5bff947 公司部门岗位增加代码模糊查询 2024-04-11 15:55:34 +08:00
thinkgem
21c8fe15b7 json 提交表单,增加 exclude 参数,排除不被序列化的参数 2024-04-11 15:55:06 +08:00
thinkgem
49506fc10e update 2024-04-10 14:17:07 +08:00
thinkgem
57d767226a 更新apiMode提示 2024-04-09 14:47:40 +08:00
thinkgem
0a9007793a data-params to data-url-params 2024-04-09 08:52:38 +08:00
thinkgem
c82b83492d 更新提示 2024-04-08 21:58:31 +08:00
thinkgem
6e3a1476ca update 2024-04-08 14:12:20 +08:00
thinkgem
7abd08f04e 单选框和下拉框控件只显示字典类型的根节点数据 2024-04-08 10:35:37 +08:00
thinkgem
11168f4356 自动排序号优化 2024-04-08 10:24:27 +08:00
thinkgem
6d0d134ea2 update 2024-04-08 10:08:50 +08:00
thinkgem
ac17706fc7 字典数据管理去掉停用启用校验下级的限制,并支持级联更新 2024-04-08 10:00:30 +08:00
thinkgem
0e82478fad new version 2024-04-07 09:24:25 +08:00
thinkgem
f7344d4736 add testResource config 2024-04-05 16:54:07 +08:00
thinkgem
137080b3c0 仅侧边栏时加 first-open 2024-04-05 16:53:17 +08:00
thinkgem
2bf621c0cf update README.md 2024-04-01 12:03:11 +08:00
thinkgem
59e0a80b37 web-fast 默认使用 vue 前端展示 2024-04-01 12:02:24 +08:00
thinkgem
77d4247449 update PageNotFound log level 2024-04-01 12:01:59 +08:00
thinkgem
04028745ad 404 page javax to jakarta 2024-04-01 11:53:14 +08:00
thinkgem
9b9e7a85a6 增加msgview初始菜单地址 2024-04-01 11:52:15 +08:00
thinkgem
a0db2ed70a 代码优化 2024-04-01 11:51:33 +08:00
thinkgem
5dd59473a3 5.7.0 2024-03-28 14:15:58 +08:00
thinkgem
6bd9f8179a update README.md 2024-03-28 14:15:52 +08:00
thinkgem
59e3745580 更新建表语句 2024-03-28 14:14:43 +08:00
thinkgem
9164fe2dc6 vue icon add prefix i- 2024-03-27 11:12:08 +08:00
thinkgem
70f26006da update import 2024-03-27 11:11:42 +08:00
thinkgem
9332517f39 新增IP地址黑白名单过滤器及参数配置 2024-03-25 13:57:26 +08:00
thinkgem
b53789818d 更新注释提示 2024-03-25 13:53:10 +08:00
thinkgem
cc0f5fedb8 update fonts 2024-03-22 21:45:22 +08:00
thinkgem
7696692ad9 访问登录页不生成会话,但要在生成验证码前获取会话,方便验证。 2024-03-22 17:29:53 +08:00
thinkgem
ddaaca6be8 增加根据用户编码查询岗位列表接口 2024-03-22 14:42:57 +08:00
thinkgem
96bd62a375 侧边栏增加是否展开第一个菜单开关 2024-03-22 14:42:16 +08:00
thinkgem
b9f6b93bbe move file 2024-03-22 14:41:32 +08:00
thinkgem
4df4f822bc format code 2024-03-22 14:40:49 +08:00
thinkgem
45b8595122 EmployeePostDao 增加根据用户编码查询岗位 sqlMap().loadJoinTableAlias("p,u") 的时候有效 2024-03-22 14:40:28 +08:00
thinkgem
03a031360c 模块管理增加生成模块的基础路径和模板存储字段,生成模块代码时给于确认提示;微服务下isLoader为true; 2024-03-22 09:16:43 +08:00
thinkgem
c222ab29ff 修正代码生成模板logback-spring-elk和prod.xml文件名 2024-03-22 09:15:42 +08:00
thinkgem
ff58e4f05c update tip 2024-03-21 17:26:34 +08:00
thinkgem
0e95a41edc add getPageList(List<T> list, int pageNo, int pageSize) 2024-03-21 15:46:04 +08:00
thinkgem
680a3f2a8c 分离端调用login和index接口时,同时返回cookie。特殊情况下的iframe的页面会话同步 2024-03-20 14:05:32 +08:00
thinkgem
aa904c5763 update productVersion 2024-03-20 09:39:23 +08:00
thinkgem
293821d0ab fix import 2024-03-15 20:53:12 +08:00
thinkgem
bcedc006e1 返回响应头增加x-token,通过记住我登录系统时使用。 2024-03-13 13:34:24 +08:00
thinkgem
be9326d671 演示模式不允许清理会话和缓存 2024-03-13 13:29:10 +08:00
thinkgem
debc349810 返回响应头增加x-token,通过记住我登录系统时使用。 2024-03-13 13:18:44 +08:00
thinkgem
40cab1f49e 代码生成器config.xml的attrType字典增加attrName,用于选择控件编码和名称获取 2024-03-13 11:35:31 +08:00
thinkgem
14365a6e76 登录超时后不再统计在线人数 2024-03-12 13:20:33 +08:00
thinkgem
6cf4bebebf 缩短Logback日志TRACE_ID的长度 2024-03-12 12:24:19 +08:00
thinkgem
7914b18e20 完善内部消息保存后的提示消息 2024-03-12 12:23:29 +08:00
thinkgem
d0fd74fa51 代码生成模板添加公司选择组件v2 2024-03-11 21:24:26 +08:00
thinkgem
000fadeb95 新增 AesTypeHandler 处理字段数据加密解密或脱敏;新增 JsonTypeHandler 处理字段数据进行 JSON 字符串与 Java 对象 自动互转 2024-03-11 17:02:58 +08:00
thinkgem
d7c9138a31 代码优化 2024-03-11 17:00:36 +08:00
thinkgem
5e4608d486 代码生成模板添加公司选择组件 2024-03-10 10:44:16 +08:00
thinkgem
9415356b20 根据当前用户有的子系统,切换到默认系统下 2024-03-08 13:30:09 +08:00
thinkgem
73a93b2721 update nacos config 2024-03-04 11:50:22 +08:00
thinkgem
d93b0c4814 shardingsphere 5.4.1、shiro 2.0.0 RELEASE 2024-03-04 09:56:03 +08:00
thinkgem
81154d7cfb spring boot 3.1.9 2024-03-01 12:34:44 +08:00
thinkgem
21215850e4 更新Docker多CPU平台架构 2024-02-28 10:34:46 +08:00
thinkgem
1b4a7523f8 fix h2db job sql 2024-02-28 10:07:25 +08:00
thinkgem
68291c61da TimeUtils millisecond to ms 2024-02-27 11:30:48 +08:00
thinkgem
be19b92e82 分页栏居右、布局调整、样式美化 2024-02-23 14:16:34 +08:00
thinkgem
0b6f5e285a next version 2024-02-23 14:01:52 +08:00
thinkgem
2f83793638 5.6.1 2024-02-18 16:01:00 +08:00
thinkgem
11cc857de7 修改默认值,oracle 下默认不启用 maxPoolPreparedStatementPerConnectionSize 可根据需要开启 2024-02-02 16:59:24 +08:00
thinkgem
fe076d7caf update 2024-02-01 09:20:47 +08:00
thinkgem
5db33072ac ueditor黑暗模式下的文字 2024-01-31 12:04:40 +08:00
thinkgem
5813875d6e spring boot 3.2.2 2024-01-31 12:02:22 +08:00
thinkgem
1c4ce3842a 更新路由表单组件 2024-01-30 16:53:32 +08:00
thinkgem
4f722ea1d7 form:fileupload组件默认加dataMap属性 2024-01-30 11:40:39 +08:00
thinkgem
05bdaad7aa 新增 js.ajaxSubmitForm支持application/json提交表单;新增 js.ajaxSubmitJson 方法 2024-01-30 11:38:24 +08:00
thinkgem
af06033521 代码优化 2024-01-26 14:42:47 +08:00
thinkgem
a54344950b ts type check 2024-01-23 17:52:55 +08:00
thinkgem
392dc80617 code format 2024-01-17 16:17:05 +08:00
thinkgem
a32f6b67f5 代码优化,方便自定义内嵌的Web服务 2024-01-15 13:45:51 +08:00
thinkgem
e343bd7ba7 报表增加请求参数的例子 2024-01-10 13:08:10 +08:00
thinkgem
0deacd54bb update 2024-01-10 13:04:28 +08:00
thinkgem
33df1fa37c 增加vue无框架页面的组件类型 2024-01-09 16:43:22 +08:00
thinkgem
faba69ca6d 存储Key增加了默认,个性化时再指定 2024-01-08 15:25:22 +08:00
thinkgem
0b7eb4138e 菜单管理增加无图标的默认图标显示 2024-01-08 15:24:18 +08:00
thinkgem
bdfba55a82 update version 2024-01-08 10:40:08 +08:00
thinkgem
aea8eb2241 5.6.0 2024-01-04 12:06:07 +08:00
thinkgem
f8cf61e02f 5.6.0 2024-01-03 16:58:43 +08:00
thinkgem
8a765082cf 配置类 ShiroConfig 改为 ShiroAutoConfiguration 方便覆写 2024-01-03 08:54:09 +08:00
thinkgem
abb86ed422 分号修正 2024-01-03 08:24:58 +08:00
thinkgem
de4dc8542b update 2024 2024-01-02 10:24:31 +08:00
thinkgem
e3c1f4f860 add ConditionalOnMissingBean 2024-01-02 10:23:31 +08:00
thinkgem
f91b714349 update 2024-01-02 10:22:45 +08:00
thinkgem
31da0c637e select2 i18n fix 2023-12-29 10:55:33 +08:00
thinkgem
93181c921d 代码优化提示 2023-12-28 09:33:26 +08:00
thinkgem
231b8308c6 优化在线用户列表数值类型的排序 2023-12-27 10:47:52 +08:00
thinkgem
1e0c073bb4 组件名称非必填 2023-12-27 10:46:44 +08:00
thinkgem
e250b23084 代码生成模板:新增Vue路由表单、新增Vue弹窗表单、新增仅后端模板 2023-12-24 21:36:17 +08:00
thinkgem
2d78175001 不设置adminPath的时候需要增加oauth2的地址认证排除 2023-12-23 23:01:31 +08:00
thinkgem
4f4bbac861 用户管理增加解冻用户功能提示 2023-12-23 23:00:43 +08:00
thinkgem
758c66e5a5 细节优化 2023-12-23 22:59:24 +08:00
thinkgem
025007203c spring boot 3.2.0、jackson 2.16.0、mybatis 3.5.14、shiro 2.0.0-a4、swagger3 2.2.19 2023-12-13 21:09:23 +08:00
thinkgem
ac32d2f061 升级 elasticsearch 8.11.1 2023-12-13 21:07:34 +08:00
thinkgem
d1973adfba 增加一些vue下用的路由 2023-12-12 09:42:50 +08:00
thinkgem
ae0745954d update 2023-12-12 09:41:55 +08:00
thinkgem
fbf952247d 全栈版本菜单增加组件名称和参数 2023-12-11 10:23:37 +08:00
thinkgem
a07cb38dab BpmButton.vue将提交审批信息移动到提交对话框中 2023-12-07 17:20:48 +08:00
thinkgem
d00f4b6d25 update 2023-12-05 16:30:44 +08:00
thinkgem
cecec315d4 update 2023-12-05 16:13:35 +08:00
thinkgem
95f7987d22 datagrid拖拽行调色 2023-12-03 16:08:20 +08:00
thinkgem
8d87b4142c 代码优化 2023-12-03 15:55:41 +08:00
thinkgem
e32c87d009 vue兼容优化 2023-12-01 10:41:35 +08:00
thinkgem
d931e0f03a 优化vue生成模板 2023-11-28 16:15:21 +08:00
thinkgem
2f80eadd26 优化vue生成模板 2023-11-28 15:46:10 +08:00
thinkgem
601205144f BasicTable子表加TextArea组件 2023-11-27 12:23:12 +08:00
thinkgem
fe5d61e4a6 树表的局部刷新改进,删除、停用、启用、修改父节点的情况下完美体验 2023-11-27 10:12:38 +08:00
thinkgem
934821e8d4 next 2023-11-27 09:11:19 +08:00
thinkgem
20d2cd7408 Layer弹窗后首先关闭获取焦点,防止回车弹出多个 2023-11-22 11:13:54 +08:00
thinkgem
dc6f361891 5.5.2 2023-11-21 21:47:23 +08:00
thinkgem
de03b43367 更新h2的库名 2023-11-20 16:01:15 +08:00
thinkgem
5f208ab60f 添加自动切换到脚本所在目录 2023-11-20 15:45:00 +08:00
thinkgem
9888d2f901 更新docker运行脚本帮助 2023-11-20 15:16:32 +08:00
thinkgem
137c523267 add db docs xlsx png 2023-11-17 11:18:11 +08:00
thinkgem
d4936ac085 增加quartz表ER图和注释 2023-11-16 11:57:14 +08:00
thinkgem
bcbdb18e15 微小Web 支持只连接业务库,不使用自带sys表 2023-11-16 10:22:45 +08:00
thinkgem
d828879568 update 2023-11-15 17:46:58 +08:00
thinkgem
bfd767f65b 增加vue的ListSelect选择框代码生成模板 2023-11-09 11:31:47 +08:00
thinkgem
25a41bd105 Byte格式化默认显示两位小数 2023-11-08 11:47:00 +08:00
thinkgem
1e6779a473 update 2023-11-06 15:38:59 +08:00
thinkgem
fcb42bfda9 修复包名取不到jakarta异常类问题 2023-11-06 15:38:47 +08:00
thinkgem
128690bd2a 小分辨率下菜单排序列不显示省略号,操作列显示水平滚动条 2023-11-01 15:40:00 +08:00
thinkgem
51542c11ed 文件上传支持自定义存储表;将文件管理独立file_upload表,与sys分离。 2023-10-30 08:47:01 +08:00
thinkgem
98876b588e 添加jdbc.connectTimeou和jdbc.socketTimeout连接池参数 2023-10-30 08:46:00 +08:00
thinkgem
00487c463d update version 2023-10-26 11:34:51 +08:00
thinkgem
66b4f61f18 模块名称增加国际化显示参数 2023-10-26 11:32:28 +08:00
thinkgem
8dbbf13520 新增一个日志清理接口,可根据需要创建job调用 2023-10-26 11:28:31 +08:00
thinkgem
80dcbc7bce 新增富文本和头像的对象存储 2023-10-23 10:57:48 +08:00
thinkgem
cdebf586d5 查询和重置增加图标、搜索框布局优化 2023-10-23 10:36:30 +08:00
thinkgem
396464feda 5.5.1 2023-10-16 21:42:47 +08:00
thinkgem
3e3176fc63 update README.md 2023-10-16 20:06:15 +08:00
thinkgem
810ad853e3 update README.md 2023-10-16 09:06:50 +08:00
thinkgem
270afadccc docker update 2023-10-12 21:26:27 +08:00
thinkgem
4beb86c2ea spring boot 3.1.4、shiro 2.0.0-a-3 2023-10-08 17:26:11 +08:00
thinkgem
7c22be7a54 update README.md 2023-10-08 17:22:02 +08:00
thinkgem
37dd13061c 修改erm默认字体大小,适应多操作系统 2023-10-01 16:55:39 +08:00
thinkgem
0b4cadf163 格式化代码 2023-09-28 16:49:01 +08:00
thinkgem
7934e40586 移动到static项目 2023-09-28 16:47:39 +08:00
thinkgem
4e1b7bf17a 开源全部基础功能的前端视图和控制器文件 2023-09-28 16:42:03 +08:00
thinkgem
739a07f0da 开源Beetl全部的表单组件源码 2023-09-28 16:38:38 +08:00
thinkgem
5b619ce6dc 新增Static静态工程,减轻Core,并开源前端组件 2023-09-28 16:36:56 +08:00
thinkgem
6f49a9b5eb opensource layout, strength... 2023-09-28 16:32:53 +08:00
thinkgem
4208223617 优化JsonMapper,增加XSS过滤通用方法 2023-09-27 13:19:43 +08:00
thinkgem
dff27dc659 新增一个极小的内核web服务,1秒启动项目。 2023-09-21 15:30:19 +08:00
thinkgem
81cb9dcbba update README.md 2023-09-21 13:58:34 +08:00
thinkgem
7fa294c450 update version 2023-09-20 11:48:03 +08:00
thinkgem
5db4986d91 update README.md 2023-09-19 14:27:22 +08:00
thinkgem
d91feb0659 update 2023-09-18 10:59:38 +08:00
thinkgem
440bb920b7 linux下如果有前缀就不增加了 2023-09-18 10:59:04 +08:00
thinkgem
95fb0a5764 update script 2023-09-12 10:24:58 +08:00
thinkgem
cc5a1f3a0e add startup info 2023-08-30 15:33:03 +08:00
thinkgem
e51e1c1cd7 snakeyaml 1.33 2023-08-22 17:10:22 +08:00
thinkgem
9c8cfa3f53 5.5.0 2023-08-21 17:09:48 +08:00
thinkgem
7750fb14b9 maven ssl 2023-08-21 13:10:47 +08:00
thinkgem
2ffd3bb7bb update area data 2023-08-21 11:07:18 +08:00
thinkgem
3a1b6314a1 update 2023-08-21 10:37:46 +08:00
thinkgem
924e035074 update 5.5 2023-08-17 14:25:40 +08:00
thinkgem
b2654d3044 角色增加包含系统参数,切换系统时只需展示当前用户包含的子系统 2023-08-16 16:30:42 +08:00
thinkgem
2cfe47fcd0 new version 2023-08-16 10:42:02 +08:00
thinkgem
520dd4694b 隐藏表单右上角按钮 2023-08-14 12:40:35 +08:00
thinkgem
48eb91d65b spring boot 3.1.2 2023-08-14 12:37:26 +08:00
thinkgem
23941a4fb9 升级jquery migrate版本,解决ie9下的一些问题修复 2023-08-09 19:38:10 +08:00
thinkgem
42065195ec downloadByUrl支持post带参数下载文件 2023-08-09 16:45:41 +08:00
thinkgem
9ca999a90a 下载文件增加clearParams参数,清理掉不需要添加的请求参数,如:pageNo 2023-08-09 16:42:15 +08:00
thinkgem
a445e43fbb html和js语法编写不同的占位符,减少IDE标红提示 2023-08-03 17:23:24 +08:00
thinkgem
c47398295b remove web.xml 2023-08-03 11:17:17 +08:00
thinkgem
539ec80a3b 增加缩略图生成设置,前端组件可使用 imageThumbName 使用缩略图 2023-08-02 10:41:50 +08:00
thinkgem
f0814f45d9 ImageUtils 生成缩略图,增加目标文件参数,可以不是原文件 2023-08-02 10:39:31 +08:00
thinkgem
9032d2f98d 修改弹窗表头高度小一点 2023-08-01 11:28:04 +08:00
thinkgem
e6ce5206a4 用户列表选择样式优化 2023-08-01 11:26:55 +08:00
thinkgem
f63a2757b6 online 代码优化 2023-08-01 11:24:38 +08:00
thinkgem
90ccacbb38 update build time 2023-07-30 20:10:42 +08:00
thinkgem
47a4bd31a7 update 2023-07-27 21:44:13 +08:00
thinkgem
84df35df1b update i18n 2023-07-26 16:21:03 +08:00
thinkgem
4ee9342f2d 国际化完善 2023-07-18 11:55:40 +08:00
thinkgem
f6d1d18781 基础圆角调整 antdv4.0 2023-07-17 12:54:58 +08:00
thinkgem
df3af9d059 多语言译文优化 2023-07-17 11:33:43 +08:00
thinkgem
4b2bbff887 将语言名称传递给vue,登录时检测 2023-07-17 10:54:35 +08:00
thinkgem
59bd70328a update readme 2023-07-11 10:49:37 +08:00
thinkgem
2070c33c34 update 2023-07-11 10:15:57 +08:00
thinkgem
99625753ec api update 2023-07-10 17:08:15 +08:00
thinkgem
5ce8523702 update script 2023-07-07 20:52:06 +08:00
thinkgem
a76371e508 update 2023-07-07 19:37:20 +08:00
thinkgem
7659fa0e7d update script 2023-07-07 17:32:31 +08:00
thinkgem
d9ea710e9b update redis config 2023-07-07 17:32:01 +08:00
thinkgem
3271bb3afc springdoc、openapi、swagger v3 2023-07-05 22:38:36 +08:00
thinkgem
b371d685d4 update 2023-07-01 10:30:29 +08:00
thinkgem
f18682a3a9 jta通过 2023-06-29 12:17:05 +08:00
thinkgem
cce67cf0ad update version 2023-06-28 19:50:45 +08:00
thinkgem
b919e68dad spring boot 3.1.1、fst 3.0.4、atomikos 6.0、shiro 2.0.0、jdk17 2023-06-28 19:11:14 +08:00
thinkgem
ca0adaeeed druid jakarta 2023-06-28 19:08:52 +08:00
thinkgem
9b228d7808 update 2023-06-28 19:07:22 +08:00
thinkgem
171194cb6b 增加参数 web.xssFilterExcludeUri 2023-06-28 19:07:01 +08:00
thinkgem
07e2fe4955 update 2023-06-28 17:23:50 +08:00
thinkgem
64d694f025 shiro 2.0 2023-06-28 08:56:06 +08:00
thinkgem
f558bf356d shiro 2.0 2023-06-28 08:55:32 +08:00
thinkgem
aff67ed8fb httpclient add version 2023-06-28 08:54:29 +08:00
thinkgem
b3b5d53763 open module cas 2023-06-28 08:53:48 +08:00
thinkgem
74f72fb2b8 import javax.validation. 替换为 import jakarta.validation. 2023-06-24 14:39:14 +08:00
thinkgem
8e81648bdd import javax.validation. 替换为 import jakarta.validation. 2023-06-24 14:38:38 +08:00
thinkgem
bc0a9f7f80 javax.servlet-api to jakarta.servlet 2023-06-23 18:31:16 +08:00
thinkgem
023743bbe9 import javax.servlet. 替换为 import jakarta.servlet. 2023-06-23 18:30:23 +08:00
thinkgem
4638656f5d prepare springboot3 2023-06-23 18:15:39 +08:00
222 changed files with 1128 additions and 1144 deletions

View File

@@ -2,7 +2,7 @@
<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</h3>
<h3 align="center" style="margin:30px 0 30px;font-weight:bold;font-size:30px;">快速开发平台 - Spring Boot 3</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>
@@ -37,7 +37,7 @@
* 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">  
<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>
@@ -95,17 +95,17 @@
## 技术选型
* 主框架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
* 主框架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
* 前端组件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 6.6、符合 BPMN 规范、在线流程设计器、中国式流程、退回、撤回、自由流
* 工作流引擎Flowable 7.1、符合 BPMN 规范、在线流程设计器、中国式流程、退回、撤回、自由流
* Bootstrap 版 支持 IE10 及以上版本及其他所有现代浏览器,如:谷歌、火狐、国产浏览器 等
* Vue3 版 支持现代浏览器,如:谷歌 Chrome 86+、火狐、国产浏览器 等
* 技术选型(详细):<http://jeesite.com/docs/technology/>
* JeeSite Vue 版本:<https://gitee.com/thinkgem/jeesite-vue>
* Spring Boot 3.x 版本:<https://gitee.com/thinkgem/jeesite5/tree/v5.springboot3>
* Spring Boot 2.x 版本:<https://gitee.com/thinkgem/jeesite5/tree/v5.9>
## 更多介绍
@@ -138,8 +138,8 @@
### 本地运行
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.9.zip> 并解压
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> 并解压
3. 打开文件:`/web/src/main/resources/config/application.yml` 配置JDBC连接
4. 执行脚本:`/web/bin/init-data.bat` 初始化数据库
5. 执行脚本:`/web/bin/run-tomcat.bat` 启动服务即可
@@ -149,8 +149,8 @@
### 快速运行
1. 环境准备:`JDK 1.8 or 11、17``Maven 3.6+`、无需准备数据库(使用内嵌 H2 DB、Vue资源包
2. 下载源码:<https://gitee.com/thinkgem/jeesite5/repository/archive/v5.9.zip> 并解压
1. 环境准备:`JDK 17+``Maven 3.8+`、无需准备数据库(使用内嵌 H2 DB、Vue资源包
2. 下载源码:<https://gitee.com/thinkgem/jeesite5/repository/archive/v5.springboot3.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>

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>5.11.0-SNAPSHOT</version>
<version>5.10.1.springboot3-SNAPSHOT</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
@@ -21,8 +21,8 @@
<!-- Servlet Api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
@@ -45,12 +45,12 @@
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<!-- Java serialization -->
<!-- Fury serialize -->
<dependency>
<groupId>de.ruedigermoeller</groupId>
<artifactId>fst</artifactId>
<version>${fst.version}</version>
<groupId>org.apache.fury</groupId>
<artifactId>fury-core</artifactId>
<version>${fury.version}</version>
</dependency>
<!-- Jackson json -->

View File

@@ -15,7 +15,7 @@ import org.apache.commons.text.StringEscapeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;

View File

@@ -7,6 +7,9 @@ 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;
@@ -15,9 +18,6 @@ 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;

View File

@@ -36,9 +36,7 @@ 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();
@@ -174,7 +172,7 @@ public class PropertiesUtils {
private static final Pattern p1 = Pattern.compile("\\$\\{.*?\\}");
/**
* 获取属性值取不到从System.getProperty和System.getenv获取都取不到返回null
* 获取属性值取不到从System.getProperty()获取都取不到返回null
*/
public String getProperty(String key) {
if (environment != null){
@@ -196,10 +194,9 @@ public class PropertiesUtils {
String systemProperty = System.getProperty(key);
if (systemProperty != null) {
return systemProperty;
}else{
return System.getenv(key);
}
}
return null;
}
/**

View File

@@ -4,8 +4,8 @@
*/
package com.jeesite.common.lang;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.http.HttpServletRequest;
import java.io.PrintWriter;
import java.io.StringWriter;

View File

@@ -4,12 +4,14 @@
*/
package com.jeesite.common.lang;
import com.jeesite.common.io.PropertiesUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.nustaq.serialization.FSTConfiguration;
import org.apache.fury.Fury;
import org.apache.fury.ThreadSafeFury;
import org.apache.fury.config.Language;
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;
@@ -25,13 +27,24 @@ 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 boolean isJavaSerialize;
static {
String[] ver = StringUtils.split(System.getProperty("java.version"), StringUtils.DOT);
isJavaSerialize = ver.length > 0 && Integer.parseInt(ver[0]) > 1;
/**
* 当前类的实例持有者(静态内部类,延迟加载,懒汉式,线程安全的单例模式)
*/
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();
}
}
/**
* 转换为 Double 类型
*/
@@ -186,10 +199,10 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
*/
public static byte[] serialize(Object object) {
try {
if (isJavaSerialize) {
if (Static.isJavaSerialize) {
return ObjectUtils.serializeJava(object);
}else {
return ObjectUtils.serializeFst(object);
} else {
return ObjectUtils.serializeFury(object);
}
} catch (Exception e) {
logger.error("serialize: {}", e.getMessage());
@@ -204,10 +217,10 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
*/
public static Object unserialize(byte[] bytes) {
try {
if (isJavaSerialize) {
if (Static.isJavaSerialize) {
return ObjectUtils.unserializeJava(bytes);
}else {
return ObjectUtils.unserializeFst(bytes);
} else {
return ObjectUtils.unserializeFury(bytes);
}
} catch (Exception e) {
logger.error("unserialize: {}", e.getMessage());
@@ -265,51 +278,88 @@ 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[] serializeFst(Object object) {
public static byte[] serializeFury(Object object) {
if (object == null){
return null;
}
long beginTime = System.currentTimeMillis();
byte[] bytes = fstConfiguration.get().asByteArray(object);
byte[] bytes = Static.fury.serialize(object);
long totalTime = System.currentTimeMillis() - beginTime;
if (totalTime > 30000){
logger.warn(object.getClass() + " fst serialize time: " + TimeUtils.formatTime(totalTime));
logger.warn(object.getClass() + " serialize time: " + TimeUtils.formatTime(totalTime));
}
return bytes;
}
/**
* FST 反序列化对象
* 反序列化对象
* @param bytes
* @return
*/
public static Object unserializeFst(byte[] bytes) {
public static Object unserializeFury(byte[] bytes) {
if (bytes == null){
return null;
}
long beginTime = System.currentTimeMillis();
Object object = fstConfiguration.get().asObject(bytes);
Object object = Static.fury.deserialize(bytes);
long totalTime = System.currentTimeMillis() - beginTime;
if (totalTime > 30000 && object != null){
logger.warn(object.getClass() + " fst unserialize time: " + TimeUtils.formatTime(totalTime));
logger.warn(object.getClass() + " 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();

View File

@@ -182,8 +182,8 @@ public class JsonMapper extends ObjectMapper {
* 反序列化POJO或简单Collection如List<String>.
* 如果JSON字符串为Null或"null"字符串, 返回Null.
* 如果JSON字符串为"[]", 返回空集合.
* 如需反序列化复杂Collection如List<MyBean>, 请使用fromJson(String, Class)
* @see #fromJson(String, Class)
* 如需反序列化复杂Collection如List<MyBean>, 请使用fromJson(String,JavaType)
* @see #fromJson(String, JavaType)
*/
public <T> T fromJsonString(String jsonString, Class<T> clazz) {
if (StringUtils.isEmpty(jsonString) || "<CLOB>".equals(jsonString)) {

View File

@@ -4,7 +4,7 @@ import com.jeesite.common.codec.EncodeUtils;
import com.jeesite.common.io.PropertiesUtils;
import com.jeesite.common.lang.StringUtils;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
public class IpUtils {

View File

@@ -23,7 +23,7 @@ import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletResponse;
import java.io.*;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;

View File

@@ -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 javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
/**
* Cookie工具类

View File

@@ -5,8 +5,8 @@
package com.jeesite.common.web.http;
import com.jeesite.common.io.PropertiesUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
/**
* 统一包装结果输出类:{ code: 200, msg: "", data: {} | [] }

View File

@@ -12,15 +12,15 @@ 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;

View File

@@ -4,7 +4,7 @@
*/
package com.jeesite.common.web.http;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import eu.bitwalker.useragentutils.Browser;
import eu.bitwalker.useragentutils.DeviceType;

View File

@@ -0,0 +1,170 @@
=ZTree v3.x (JQuery Tree插件) 更新日志=
<font color="red">为了更好的优化及扩展zTree, 因此决定升级为v3.x并且对之前的v2.x不兼容会有很多结构上的修改对此深感无奈与抱歉请大家谅解。</font>
<font color="red">
具体修改内容可参考:
* [http://www.ztree.me/v3/api.php zTree v3.0 API 文档]
* [http://www.ztree.me/v3/demo.php#_101 zTree v3.0 Demo 演示]
* [http://www.ztree.me/v3/faq.php#_101 zTree v3.0 常见问题]
</font>
<font color=#041594>
*2013.03.11* v3.5.12
* 【修改】由于 jquery 1.9 中移除 event.srcElement 导致的 js 报错的bug。
* 【修改】在异步加载模式下,使用 moveNode 方法,且 moveType != "inner" 时,也会导致 targetNode 自动加载子节点的 bug
* 【修改】对已经显示的节点(nochecked=true)使用 showNodes 或 showNode 方法后导致勾选框出现的bug。
* 【修改】对已经隐藏的节点(nochecked=false)使用 hideNodes 或 hideNode 方法后导致勾选框消失的bug。
* 【修改】getNodesByParamFuzzy 支持 大小写模糊。
* 【修改】className 结构,提取 _consts.className.BUTTON / LEVEL / ICO_LOADING / SWITCH便于快速修改 css 冲突。
例如:与 WordPress 产生冲突后,直接修改 core 中的 "button" 和 "level" 即可。 Issue: https://github.com/zTree/zTree_v3/issues/2
*2013.01.28* v3.5.02
* 【增加】setting.check.chkDisabledInherit 属性,用于设置 chkDisabled 在初始化时子节点是否可以继承父节点的 chkDisabled 属性
* 【删除】内部 noSel 方法,使用 selectstart事件 和 "-moz-user-select"样式 处理禁止 节点文字被选择的功能
* 【修改】不兼容 jQuery 1.9 的bug
* 【修改】onDrop 的触发规则,保证异步加载模式下,可以在延迟加载结束后触发,避免 onDrop 中被拖拽的节点是已经更新后的数据。
* 【修改】setChkDisabled 方法,增加 inheritParent, inheritChildren 参数设置是否让父子节点继承 disabled
* 【修改】异步加载时 拼接参数的方法,由 string 修改为 json 对象
* 【修正】1-2-3 3级节点时如果 2级节点 全部设置为 nocheck 或 chkDisabled后勾选3级节点时1级节点的半勾选状态错误的 bug
* 【修改】Demo: checkbox_nocheck.html & checkbox_chkDisabled.html;
* 【修改】Demo: edit_super.html增加 showRenameBtn & showRemoveBtn 的演示
* 【修改】Demo: asyncForAll, 将 post 修改为 get为了避免由于 IE10 的 bug 造成的客户端 以及 服务端崩溃
IE10 ajax Post 无法提交参数的bug (http://bugs.jquery.com/ticket/12790)
*2012.12.21* v3.5.01
* 【优化】clone 方法
* 【修正】对于初始化无 children 属性的父节点进行 reAsyncChildNodes 操作时出错的 bug
* 【修正】beforeRename 回调中使用 cancelEditName 方法后,再 return false 导致无法重新进行编辑的 bug
* 【修正】exedit 扩展包让 setting.data.key.url 失效的 bug
* 【修正】setting.check.autoCheckTrigger 设置为 true 时onCheck 回调缺少 event 参数的 bug
* 【修正】singlepath.html Demo 中的 bug
*2012.11.20* v3.5
* 【优化】原先的 clone 方法 (特别感谢:愚人码头)
* 【修改】隐藏父节点后,使用 expandAll 方法导致 父节点展开的 bug
* 【修改】使用 jQuery v1.7 以上时,设置 zTree 容器 ul 隐藏visibility: hidden;)后, 调用 selectNode 导致 IE 浏览器报错 Can't move focus 的 bug
* 【修改】正在异步加载时,执行 destory 或 init 方法后,异步加载的节点影响新树的 bug
* 【修改】方法 reAsyncChildNodes 在 refresh 的时候未清空内部 cache 导致内存泄露 的 bug
* 【修改】批量节点拖拽到其他父节点内inner导致顺序反转 的 bug
* 【修改】对于 使用 html格式的 节点无法触发 双击事件 的 bug
* 【修改】onCheck 回调中的 event ,保证与触发事件中的 event 一致
* 【修改】异步加载时,在 onNodeCreated 中执行 selectNode 后,导致节点折叠的 bug
* 【修改】API 中 dataFilter 的参数名称 childNodes -> responseData
* 【修改】API 中 iconSkin 的 举例内容
* 【修改】API 中 chkDisabled 的说明
* 【修改】Demo 中 index.html 内的 loadReady 重复绑定问题
*2012.09.03* v3.4
* 【增加】 Demo —— OutLook 样式的左侧菜单
* 【增加】清空 zTree 的方法 $.fn.zTree.destory(treeId) & zTree.destory()
* 【修改】core核心文件内 _eventProxy 方法中获取 tId 的方法,提高 DOM 的灵活性
* 【修改】初始化时 多层父节点的 checkbox 半选状态计算错误的 bug
* 【修改】同时选中父、子节点后,利用 getSelectedNodes 获取选中节点并利用 removeNode 删除时报错的 bug
* 【修改】treeNode.chkDisabled / nocheck 属性,支持字符串格式的 "false"/"true"
* 【修改】异步加载模式下无法利用 server 返回 xml 并且 在 dataFilter 中继续处理的 bug
* 【修改】title 只允许设置为 string 类型值的问题。 修正后允许设置为 number 类型的值
* 【修改】zId 计数规则 & Cache 保存,减少 IE9 的 bug 造成的内存泄漏
* 【修改】API 页面搜索功能导致 IE 崩溃的 bug
*2012.07.16* v3.3
* 【增加】扩展库 exhide -- 节点隐藏功能
* 【修改】getNodesByFilter 方法,添加 invokeParam 自定义参数
* 【修改】拖拽中测试代码未删除,导致出现黄颜色的 iframe 遮罩层的 bug
* 【修改】延迟加载方法 对于使用 expandAll 进行全部展开时,导致 onNodeCreated 回调 和 addDiyDom 方法触发过早的 bug
* 【修改】使用 moveNode 移动尚未生成 DOM 的节点时,视图会出现异常的 bug
* 【修改】删除节点后,相关节点的 isFirstNode 属性未重置的 bug
* 【修改】getPreNode(),getNextNode() 方法在对于特殊情况时计算错误的 bug
* 【修改】设置 title 之后,如果重新将 title 内容设置为空后,会导致无法更新 title 的 bug
* 【修改】针对 setting.check.chkStyle=="radio" && setting.check.radioType=="all" 的情况时getTreeCheckedNodes方法优化找到一个结果就 break
* 【修改】zTreeObj.getCheckedNodes(false) 在 radioType = "all" 时计算错误的 bug
* 【修改】完善 API 中 beforeDrop / onDrop 的关于 treeId 的说明
*2012.05.13* v3.2
* 【增加】setting.data.key.url 允许修改 treeNode.url 属性
* 【增加】getNodesByFilter(filter, isSingle) 方法
* 【增加】"与其他 DOM 拖拽互动" 的 Demo (http://www.ztree.me/v3/demo.php#_511)
* 【增加】"异步加载模式下全部展开" 的 Demo (http://www.ztree.me/v3/demo.php#_512)
* 【修改】代码结构,将 addNodes、removeNode、removeChildNodes 方法 和 beforeRemove、onRemove 回调 转移到 core 内
* 【修改】IE7的环境下无子节点的父节点反复展开出现多余空行的 bug
* 【修改】异步加载时,如果出现网络异常等,会导致 图标显示错误的 bug
* 【修改】dataFilter中 return null 导致异常 的 bug
* 【修改】removeChildNodes 方法清空子节点后,无法正常添加节点的 bug
* 【修改】moveNode 后节点中的自定义元素的事件丢失的 bug
* 【修改】moveNode 方法中设置 isSilent = true 时,如果移动到已展开的 父节点后,出现异常的 bug
* 【修改】onClick/onDrag/onDrop 回调中 event 不是原始 event 的 bug
* 【修改】onDrop 回调中 当拖拽无效时,无法获得 treeNodes 的 bug
* 【修改】onDrop 无法判断拖拽是 移动还是复制的问题
* 【修改】未开启异步加载模式时,拖拽节点到子节点为空的父节点内时 出现异常 的 bug
* 【修改】拖拽过程中,反复在 父节点图标上划动时,会出现停顿的 bug
(需要css 结构—— button -> span.button)
* 【修改】拖拽操作时箭头 与 targetNode 背景之间的细节现实问题,便于用户拖拽时更容易区分 prev、next 和 inner 操作
* 【修改】拖拽操作时IE6/7 下 在 节点<a> 右侧 10px 内会导致 targetNode = root 的 bug
* 【修改】编辑模式下 默认的编辑按钮、删除按钮点击后,如果相应的 before 回调 return false 时会触发 onClick 回调的 bug
*2012.02.14* v3.1
* 【增加】ajax 的参数 setting.async.contentType ,让提交参数适用于 json 数据提交 (主要适用于 .Net 的开发)。
* 【增加】setting.edit.editNameSelectAll, 用于设定编辑节点名称时初次显示 input 后 text 内容为全选
* 【修改】异步加载 规则,不再仅仅依靠父节点的子节点数来判定,增加内部属性 zAsync保证默认状态下父节点及时无子节点也只能异步加载一次除非使用 reAsyncChildNodes 方法强行控制异步加载。
* 【修改】放大浏览器后导致 界面出现多余连接线的bug 需要更新icon 图标和 css
* 【修改】在编辑状态如果节点名超过编辑框宽度左右键在框内不起作用的bugIE 6 7 8 出现)
CSS 中 filter:alpha(opacity=80) 造成的,应该是 ie 的 bug需要更新 css 文件
* 【修改】title 设置后,如果属性不存在,则默认为 title 为空,便于数据容错和用户灵活使用
* 【修改】editName 方法如果针对尚未展开的 父节点,会导致该父节点自动展开的 bug
* 【修改】title 中存在标签时导致 title 显示异常的bug例如蓝色字22%"'`<input/>`
*2012.01.10* v3.0
* 【增加】setting.check.autoCheckTrigger 默认值 false可以设置联动选中时是否触发事件回调函数
* 【增加】setting.callback.beforeEditName 回调函数,以保证用户可以捕获点击编辑按钮的事件
* 【增加】treeNode.chkDisabled 属性,显示 checkbox 但是用户无法修改 checkbox 状态,并且该 checkbox 会影响父节点的 checkbox 的半选状态
* 【增加】setting.check.nocheckInherit 属性,用户设置子节点继承 nocheck 属性,用于批量初始化节点,不适用于已经显示的节点
* 【增加】setting.edit.drag.autoExpandTrigger 默认值 false可以设置自动展开、折叠操作时是否触发事件回调函数
* 【增加】setting.view.nameIsHTML 默认值 false允许用户对 name 设置 DOM 对象
* 【增加】treeNode.click 属性的说明文档
* 【增加】treeObj.setChkDisabled 方法用于设置 checkbox / radio disabled 状态
* 【增加】treeNode.halfCheck 属性,用于强制设定节点的半选状态
* 【修改】异步加载 & 编辑功能 共存时,拖拽节点 或 增加节点 导致 ie 上报错的 bug apply 方法引起)
* 【修改】zTreeStyle 样式冲突
* 【修改】setting.data.key.title 默认值设置为 "",初始化时自动赋值为 setting.data.key.name 这样可避免希望 title 与 name 一致的用户反复设置参数
* 【修改】点击叶子节点的连接线会触发 expand 事件的 bug
* 【修改】IE 下 点击叶子节点连线会出现虚线框的 bug
* 【修改】updateNode 导致 checkbox 半选状态错误的 bug
* 【修改】checkNode 方法实现 toggle 操作, 取消 expandAll 方法的 toggle 操作
* 【修改】zTree 内鼠标移动会抢页面上 input 内的焦点的 bug
* 【修改】beforeRename / onRename 的触发方式——即使名称内容未改变也会触发,便于用户配合 beforeEditName 捕获编辑状态的结束,赋予用户更多调整规则的权利
* 【修改】与 easyUI 共存时无法拖拽的bug
* 【修改】beforeRename 在 Firefox 下如果利用 alert会触发两次的 bug
* 【修改】checkNode/expandNode/removeNode 方法,默认不触发回调函数,恢复 v2.6 的默认状态,同时增加 callbackFlag 参数,设置为 true 时,可以触发回调函数
* 【修改】IE9下“根据参数查找节点”的Demo 报错行14 重新声明常量属性(Demo 自身的问题定义了history变量)
* 【修改】初始化 zTree 时 onNodeCreated 事件回调函数中无法 用 getZTreeObj 获取 zTree 对象的 bug
* 【修改】setting.edit.drag.prev / next / inner 参数,增加被拖拽的节点集合
* 【修改】异步加载模式下otherParam 使用Array数组会出错的 bug。例如 ["id", "1", "name", "test"]
* 【修改】FireFox 下多棵树拖拽异常的 bug
* 【修改】exedit 中调用 excheck库的方法时没有进行容错处理导致如果只加入 exedit 而没有 excheck的时候会出现 js 错误
* 【修改】显示 checkbox 的 zTree 在编辑模式下,移动节点不会更新父节点半选状态的 bug
* 【修改】treeNode.childs --> children; treeObject.removeChilds --> removeChildNodes; setting.data.key.childs --> children英文不好惹的祸抱歉了
* 【修改】onRemove 回调中得到的 treeNode 还可以查找 preNode、nextNode 的bug。 修正后getPreNode 和 getNextNode 都返回 null 为了便于查找父节点getParentNode 仍保留
* 【修改】简单数据模式下,如果 id 与 pId 的值相同会导致该节点无法正常加载的 bug
* 【修改】移动或删除中间节点会导致最后一个节点连接线图标变小的 bug
*2011.09.05* v3.0 beta
* 【修改】zTree 的 js 代码架构全面修改,并且拆分
* 【修改】zTree 的 css 样式全面修改对浏览器可以更好地兼容同时解决了以前1个像素差的问题
* 【优化】采用延迟加载技术,一次性加载大数据量的节点性能飞速提升
* 【增加】支持多节点同时选中、拖拽
* 【增加】checkNode、checkAllNodes 等多种方法
* 【增加】IE6 自动取消动画展开、折叠的功能
* 【修正】异步加载 & 编辑模式 能够更完美的共存
* 【修正】setting 配置更加合理,并且增加了若干项配置参数
* 【修正】treeNode 节点数据的属性更加合理,并且增加了一些方法
* 【修正】拖拽操作更加灵活方便,更容易制定自己的规则
* 【修正】其他若干修改,详细对比请参考 url[http://www.ztree.me/v3/faq.php#_101 zTree v3.0 常见问题]

View File

@@ -0,0 +1,21 @@
/**
* 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);
}
}

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>5.11.0-SNAPSHOT</version>
<version>5.10.1.springboot3-SNAPSHOT</version>
<relativePath>../../parent/pom.xml</relativePath>
</parent>

View File

@@ -9,9 +9,9 @@ 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 javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.util.Date;
/**
@@ -24,14 +24,13 @@ import java.util.Date;
@Column(name="category", attrName="category", label="问题分类"),
@Column(name="content", attrName="content", label="问题和意见"),
@Column(name="contact", attrName="contact", label="联系方式"),
@Column(includeEntity=DataEntity.class),
@Column(name="create_by_name", attrName="createByName", label="提问人员姓名", queryType=QueryType.LIKE),
@Column(name="device_info", attrName="deviceInfo", label="设备信息"),
@Column(name="reply_date", attrName="replyDate", label="回复时间"),
@Column(name="reply_content", attrName="replyContent", label="回复意见"),
@Column(name="reply_user_code", attrName="replyUserCode", label="回复人员"),
@Column(name="reply_user_name", attrName="replyUserName", label="回复人员姓名", queryType=QueryType.LIKE),
@Column(name="status", attrName="status", label="状态", isUpdate=true), // save时允许更新status字段
@Column(includeEntity=DataEntity.class),
}, orderBy="a.create_date DESC"
)
public class AppComment extends DataEntity<AppComment> {

View File

@@ -6,7 +6,7 @@ package com.jeesite.modules.app.entity;
import java.util.Date;
import javax.validation.constraints.Size;
import jakarta.validation.constraints.Size;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jeesite.common.entity.DataEntity;

View File

@@ -4,11 +4,11 @@
*/
package com.jeesite.modules.app.web;
import com.jeesite.common.config.Global;
import com.jeesite.common.entity.Page;
import com.jeesite.common.web.BaseController;
import com.jeesite.modules.app.entity.AppComment;
import com.jeesite.modules.app.service.AppCommentService;
import java.util.Date;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
@@ -20,9 +20,11 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import com.jeesite.common.config.Global;
import com.jeesite.common.entity.Page;
import com.jeesite.common.web.BaseController;
import com.jeesite.modules.app.entity.AppComment;
import com.jeesite.modules.app.service.AppCommentService;
/**
* APP意见反馈Controller
@@ -95,6 +97,7 @@ public class AppCommentController extends BaseController {
}
}
appCommentService.save(appComment);
appCommentService.updateStatus(appComment);
return renderResult(Global.TRUE, text("保存意见成功!"));
}

View File

@@ -4,8 +4,8 @@
*/
package com.jeesite.modules.app.web;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -24,5 +24,4 @@
5.9.1
5.9.2
5.10.0
5.10.1
5.11.0
5.10.1

View File

@@ -160,7 +160,7 @@
</div>
<% } %>
<script>
$("#inputForm").validate({
$('#inputForm').validate({
submitHandler: function(form){
js.ajaxSubmitForm($(form), function(data){
js.showMessage(data.message);

View File

@@ -132,7 +132,7 @@
</div>
<% } %>
<script>
$("#inputForm").validate({
$('#inputForm').validate({
submitHandler: function(form){
js.ajaxSubmitForm($(form), function(data){
js.showMessage(data.message);

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>5.11.0-SNAPSHOT</version>
<version>5.10.1.springboot3-SNAPSHOT</version>
<relativePath>../../parent/pom.xml</relativePath>
</parent>
@@ -24,12 +24,6 @@
<artifactId>jeesite-module-core</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>

View File

@@ -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 javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.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.weight DESC, a.update_date DESC"
}, extWhereKeys = "dsfCategory", orderBy = "a.update_date DESC"
)
public class Article extends DataEntity<Article> {

View File

@@ -4,7 +4,7 @@
*/
package com.jeesite.modules.cms.entity;
import javax.validation.constraints.Size;
import jakarta.validation.constraints.Size;
import com.jeesite.common.entity.DataEntity;
import com.jeesite.common.entity.Extend;

View File

@@ -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 javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import java.util.List;
/**

View File

@@ -6,10 +6,10 @@ package com.jeesite.modules.cms.entity;
import java.util.Date;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import jakarta.validation.constraints.Size;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jeesite.common.entity.BaseEntity;

View File

@@ -4,7 +4,7 @@
*/
package com.jeesite.modules.cms.entity;
import javax.validation.constraints.Size;
import jakarta.validation.constraints.Size;
import com.jeesite.common.entity.DataEntity;
import com.jeesite.common.mybatis.annotation.Column;

View File

@@ -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 javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import java.util.List;
/**

View File

@@ -4,7 +4,7 @@
*/
package com.jeesite.modules.cms.entity;
import javax.validation.constraints.NotNull;
import jakarta.validation.constraints.NotNull;
import com.jeesite.common.entity.DataEntity;
import com.jeesite.common.mybatis.annotation.Column;

View File

@@ -6,7 +6,7 @@ package com.jeesite.modules.cms.entity;
import java.util.Date;
import javax.validation.constraints.Size;
import jakarta.validation.constraints.Size;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jeesite.common.entity.BaseEntity;

View File

@@ -1,81 +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.modules.cms.properties.properties;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* CmsProperties
* @author ThinkGem
* @version 2022-4-10
*/
@ConfigurationProperties(prefix = "cms")
public class CmsProperties {
private PageCache pageCache = new PageCache();
public static class PageCache {
/**
* 是否开启页面静态化缓存
*/
private Boolean enabled = false;
/**
* 缓存名称标识
*/
private String cacheName = "cmsPageCache";
/**
* 拦截的网页地址
*/
private String urlPatterns = "${frontPath}/*";
/**
* 只静态化 .html 后缀的网页
*/
private String urlSuffixes = ".html";
public Boolean getEnabled() {
return enabled;
}
public void setEnabled(Boolean enabled) {
this.enabled = enabled;
}
public String getCacheName() {
return cacheName;
}
public void setCacheName(String cacheName) {
this.cacheName = cacheName;
}
public String getUrlPatterns() {
return urlPatterns;
}
public void setUrlPatterns(String urlPatterns) {
this.urlPatterns = urlPatterns;
}
public String getUrlSuffixes() {
return urlSuffixes;
}
public void setUrlSuffixes(String urlSuffixes) {
this.urlSuffixes = urlSuffixes;
}
}
public PageCache getPageCache() {
return pageCache;
}
public void setPageCache(PageCache pageCache) {
this.pageCache = pageCache;
}
}

View File

@@ -20,7 +20,7 @@ import com.jeesite.modules.cms.service.CategoryService;
import com.jeesite.modules.cms.service.SiteService;
import org.springframework.ui.Model;
import javax.servlet.ServletContext;
import jakarta.servlet.ServletContext;
import java.util.Collections;
import java.util.List;
import java.util.Map;

View File

@@ -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 javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

View File

@@ -4,8 +4,8 @@
*/
package com.jeesite.modules.cms.web;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -4,8 +4,8 @@
*/
package com.jeesite.modules.cms.web;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -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 javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
/**

View File

@@ -21,8 +21,8 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.List;

View File

@@ -6,8 +6,8 @@ package com.jeesite.modules.cmsfront.web;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

View File

@@ -1,12 +0,0 @@
## 重要提示Tip
## 请勿在该配置文件中添加其它任何配置(添加也不会生效)。
## 该文件,仅仅是为了让 jeesite-cms.yml 文件,
## 在 IDEA 中有一个自动完成及帮助提示,并无其它用意。
## 参数配置请在 jeesite-cms.yml 文件中添加。
spring:
config:
import:
- classpath:config/jeesite-cms.yml

View File

@@ -3,7 +3,7 @@
cms:
pageCache:
# 是否开启页面静态化缓存
enabled: false
#enabled: true
# 缓存名称标识
cacheName: cmsPageCache
# 拦截的网页地址

View File

@@ -32,5 +32,4 @@
5.9.1
5.9.2
5.10.0
5.10.1
5.11.0
5.10.1

View File

@@ -4,10 +4,6 @@ body>.navbar{-webkit-transition:background-color .3s ease-in;transition:backgrou
body>.navbar-transparent{background-color:transparent}
body>.navbar-transparent .navbar-nav>.open>a{background-color:transparent!important}
}
h1,.h1{font-size:26px}
h2,.h2{font-size:24px}
h3,.h3{font-size:22px}
p{margin:5px 0 10px;line-height:1.75;}
#home{padding-top:0}
#home .navbar-brand{padding:13.5px 15px 12.5px}
#home .navbar-brand>img{display:inline;margin:0 10px;height:100%}
@@ -84,7 +80,7 @@ footer p{clear:left;margin-bottom:0}
.article-title {color:#333;font-size:30px;text-align:center;border-bottom:1px solid #ddd;padding:15px 20px 20px 20px;margin-bottom:30px;}
.article-info {border-top:1px solid #ddd;padding:10px;margin:30px 0 0;}
.article-desc {padding:8px 10px 8px;margin:10px 20px 20px 35px;font-size:14px;}
.article-content {padding-top:10px;}
.article-content {padding-top:20px;}
.pagination {margin:8px 0;display:block;/* text-align:center; */font-size:13px;} /* .pagination .controls a{border:0;} */
.pagination>li>a, .pagination>li>span {min-width:37px;text-align:center;padding:6px;border:1px solid #ddd;background:transparent;/* border-radius:3px; */}

View File

@@ -173,7 +173,7 @@
</div>
<% } %>
<script>
$("#inputForm").validate({
$('#inputForm').validate({
submitHandler: function(form){
js.ajaxSubmitForm($(form), function(data){
js.showMessage(data.message);

View File

@@ -107,7 +107,7 @@
</div>
<% } %>
<script>
$("#inputForm").validate({
$('#inputForm').validate({
submitHandler: function(form){
js.ajaxSubmitForm($(form), function(data){
js.showMessage(data.message);

View File

@@ -351,7 +351,7 @@
</div>
<% } %>
<script>
$("#inputForm").validate({
$('#inputForm').validate({
submitHandler: function(form){
js.ajaxSubmitForm($(form), function(data){
js.showMessage(data.message);

View File

@@ -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){

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>5.11.0-SNAPSHOT</version>
<version>5.10.1.springboot3-SNAPSHOT</version>
<relativePath>../../parent/pom.xml</relativePath>
</parent>
@@ -127,6 +127,13 @@
<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>

View File

@@ -17,6 +17,7 @@ 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;
@@ -34,7 +35,6 @@ 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;

View File

@@ -16,10 +16,10 @@ import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.web.util.WebUtils;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
/**
* CAS过滤器

View File

@@ -20,6 +20,10 @@ 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 org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.IncorrectCredentialsException;
@@ -33,10 +37,6 @@ 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;

View File

@@ -8,9 +8,9 @@ import com.jeesite.common.config.Global;
import com.jeesite.common.lang.StringUtils;
import org.apache.shiro.web.filter.AccessControlFilter;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletRequest;
/**
* 内部系统访问过滤器

View File

@@ -6,8 +6,8 @@ package com.jeesite.common.shiro.filter;
import java.util.Map;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import org.apache.shiro.authc.AuthenticationToken;

View File

@@ -4,10 +4,10 @@
*/
package com.jeesite.common.shiro.filter;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.session.SessionException;

View File

@@ -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;
/**

View File

@@ -4,8 +4,9 @@
*/
package com.jeesite.common.shiro.filter;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import java.io.IOException;
/**

View File

@@ -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;
/**

View File

@@ -15,6 +15,7 @@ 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;
@@ -22,8 +23,6 @@ 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

View File

@@ -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 javax.servlet.http.HttpServletRequest;
import javax.validation.ValidationException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.ValidationException;
import java.util.Map;
/**

View File

@@ -4,11 +4,17 @@
*/
package com.jeesite.common.shiro.realm;
import javax.naming.AuthenticationNotSupportedException;
import javax.naming.NamingException;
import javax.naming.ldap.LdapContext;
import javax.servlet.http.HttpServletRequest;
import com.jeesite.common.shiro.authc.FormToken;
import com.jeesite.common.shiro.authc.LdapToken;
import com.jeesite.common.utils.SpringUtils;
import com.jeesite.common.web.http.ServletUtils;
import com.jeesite.modules.sys.entity.Log;
import com.jeesite.modules.sys.entity.User;
import com.jeesite.modules.sys.service.EmpUserService;
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;
@@ -21,20 +27,13 @@ import org.apache.shiro.realm.ldap.LdapContextFactory;
import org.apache.shiro.realm.ldap.LdapUtils;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import com.jeesite.common.shiro.authc.FormToken;
import com.jeesite.common.shiro.authc.LdapToken;
import com.jeesite.common.utils.SpringUtils;
import com.jeesite.common.web.http.ServletUtils;
import com.jeesite.modules.sys.entity.Log;
import com.jeesite.modules.sys.entity.User;
import com.jeesite.modules.sys.service.EmpUserService;
import com.jeesite.modules.sys.service.UserService;
import com.jeesite.modules.sys.utils.LogUtils;
import com.jeesite.modules.sys.utils.UserUtils;
import javax.naming.AuthenticationNotSupportedException;
import javax.naming.NamingException;
import javax.naming.ldap.LdapContext;
/**
* 系统认证授权实现类

View File

@@ -8,7 +8,7 @@ import com.jeesite.common.ueditor.define.State;
import com.jeesite.common.ueditor.hunter.FileManager;
import com.jeesite.common.ueditor.hunter.ImageHunter;
import com.jeesite.common.ueditor.upload.Uploader;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import java.util.Map;

View File

@@ -5,7 +5,7 @@ import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;

View File

@@ -6,9 +6,9 @@ import com.jeesite.common.ueditor.define.AppInfo;
import com.jeesite.common.ueditor.define.BaseState;
import com.jeesite.common.ueditor.define.MultiState;
import com.jeesite.common.ueditor.define.State;
import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.io.FileUtils;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.Arrays;
import java.util.Collection;

View File

@@ -1,12 +1,5 @@
package com.jeesite.common.ueditor.hunter;
import com.jeesite.common.config.Global;
import com.jeesite.common.ueditor.PathFormat;
import com.jeesite.common.ueditor.define.*;
import com.jeesite.common.ueditor.upload.StorageManager;
import org.apache.commons.io.IOUtils;
import javax.servlet.http.HttpServletRequest;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.URL;
@@ -15,6 +8,19 @@ import java.util.Arrays;
import java.util.List;
import java.util.Map;
import com.jeesite.common.config.Global;
import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.io.IOUtils;
import com.jeesite.common.ueditor.PathFormat;
import com.jeesite.common.ueditor.define.AppInfo;
import com.jeesite.common.ueditor.define.BaseState;
import com.jeesite.common.ueditor.define.MIMEType;
import com.jeesite.common.ueditor.define.MultiState;
import com.jeesite.common.ueditor.define.State;
import com.jeesite.common.ueditor.upload.StorageManager;
/**
* 图片抓取器
*

View File

@@ -6,9 +6,9 @@ import com.jeesite.common.ueditor.define.AppInfo;
import com.jeesite.common.ueditor.define.BaseState;
import com.jeesite.common.ueditor.define.FileType;
import com.jeesite.common.ueditor.define.State;
import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.codec.binary.Base64;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
public final class Base64Uploader {

View File

@@ -6,10 +6,10 @@ import com.jeesite.common.io.FileUtils;
import com.jeesite.common.media.VideoUtils;
import com.jeesite.common.ueditor.PathFormat;
import com.jeesite.common.ueditor.define.*;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;

View File

@@ -2,7 +2,7 @@ package com.jeesite.common.ueditor.upload;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import com.jeesite.common.ueditor.define.State;

View File

@@ -10,9 +10,9 @@ import com.jeesite.common.entity.TreeEntity;
import com.jeesite.common.mybatis.annotation.Column;
import com.jeesite.common.mybatis.annotation.Table;
import com.jeesite.common.mybatis.mapper.query.QueryType;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
/**
* 业务分类Entity

View File

@@ -12,7 +12,7 @@ import com.jeesite.common.lang.StringUtils;
import com.jeesite.common.web.BaseController;
import com.jeesite.modules.biz.entity.BizCategory;
import com.jeesite.modules.biz.service.BizCategoryService;
import io.swagger.annotations.Api;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@@ -32,7 +32,7 @@ import java.util.Map;
* @version 2019-08-12
*/
@Controller
@Api(tags = "BizCategory - 业务分类")
@Tag(name = "BizCategory - 业务分类")
@RequestMapping(value = "${adminPath}/biz/bizCategory")
public class BizCategoryController extends BaseController {

View File

@@ -4,16 +4,14 @@
*/
package com.jeesite.modules.config.interceptor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.jeesite.common.config.Global;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.modules.sys.interceptor.LogInterceptor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* 后台管理日志记录拦截器
@@ -22,7 +20,6 @@ import com.jeesite.modules.sys.interceptor.LogInterceptor;
*/
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(name="web.interceptor.log.enabled", havingValue="true", matchIfMissing=true)
@EnableWebMvc
public class LogInterceptorConfig implements WebMvcConfigurer {
@Override

View File

@@ -4,16 +4,14 @@
*/
package com.jeesite.modules.config.interceptor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.jeesite.common.config.Global;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.modules.sys.interceptor.MobileInterceptor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* 前台自动切换到手机视图拦截器
@@ -22,7 +20,6 @@ import com.jeesite.modules.sys.interceptor.MobileInterceptor;
*/
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(name="web.interceptor.mobile.enabled", havingValue="true", matchIfMissing=false)
@EnableWebMvc
public class MobileViewInterceptorConfig implements WebMvcConfigurer {
@Override

View File

@@ -4,9 +4,9 @@
*/
package com.jeesite.modules.config.server;
import javax.servlet.Filter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import jakarta.servlet.Filter;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequestWrapper;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
@@ -26,6 +26,7 @@ public class SchemeHttpsConfig {
public FilterRegistrationBean<Filter> schemeHttpsFilter() {
FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>();
bean.setName("schemeHttpsFilter");
bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
bean.setFilter((request, response, chain) -> {
chain.doFilter(new HttpServletRequestWrapper((HttpServletRequest) request) {
@Override

View File

@@ -4,19 +4,19 @@
*/
package com.jeesite.modules.config.web;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import com.alibaba.druid.support.jakarta.StatViewServlet;
import com.alibaba.druid.support.jakarta.WebStatFilter;
import com.alibaba.druid.util.Utils;
import com.jeesite.common.web.http.ServletUtils;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**

View File

@@ -7,16 +7,15 @@ package com.jeesite.modules.config.web;
import com.jeesite.common.config.Global;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.common.web.http.ServletUtils;
import jakarta.servlet.Filter;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import javax.servlet.Filter;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
/**
* IP地址黑白名单过滤器配置
*/

View File

@@ -10,6 +10,9 @@ import com.jeesite.common.web.BaseController;
import com.jeesite.modules.file.entity.FileUpload;
import com.jeesite.modules.file.entity.FileUploadParams;
import com.jeesite.modules.file.service.FileUploadService;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Controller;
@@ -17,9 +20,6 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;

View File

@@ -4,8 +4,8 @@
*/
package com.jeesite.modules.file.web;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Controller;

View File

@@ -9,16 +9,16 @@ import com.jeesite.common.config.Global;
import com.jeesite.common.io.FileUtils;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.common.web.BaseController;
import io.swagger.v3.oas.annotations.Hidden;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
@@ -29,7 +29,7 @@ import java.io.IOException;
*/
@Controller
@ConditionalOnProperty(name="file.isFileStreamDown", havingValue="true", matchIfMissing=true)
@ApiIgnore
@Hidden
public class UserfilesController extends BaseController {
@RequestMapping(value="/userfiles/**")

View File

@@ -6,9 +6,9 @@ package com.jeesite.modules.msg.entity;
import java.util.Date;
import javax.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import jakarta.validation.constraints.Size;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jeesite.common.entity.DataEntity;

View File

@@ -6,9 +6,9 @@ package com.jeesite.modules.msg.entity;
import java.util.Date;
import javax.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import jakarta.validation.constraints.Size;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jeesite.common.entity.DataEntity;

View File

@@ -4,14 +4,9 @@
*/
package com.jeesite.modules.msg.web;
import com.jeesite.common.config.Global;
import com.jeesite.common.entity.Page;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.common.web.BaseController;
import com.jeesite.modules.msg.entity.MsgInner;
import com.jeesite.modules.msg.entity.MsgInnerRecord;
import com.jeesite.modules.msg.entity.MsgPush;
import com.jeesite.modules.msg.service.MsgInnerService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -23,8 +18,14 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jeesite.common.config.Global;
import com.jeesite.common.entity.Page;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.common.web.BaseController;
import com.jeesite.modules.msg.entity.MsgInner;
import com.jeesite.modules.msg.entity.MsgInnerRecord;
import com.jeesite.modules.msg.entity.MsgPush;
import com.jeesite.modules.msg.service.MsgInnerService;
/**
* 内部消息Controller

View File

@@ -37,11 +37,6 @@ public interface EmpUserDao extends CrudDao<EmpUser> {
* 根据部门编码查询用户,仅返回基本信息
*/
List<EmpUser> findUserListByOfficeCodes(EmpUser empUser);
/**
* 根据公司编码查询用户,仅返回基本信息
*/
List<EmpUser> findUserListByCompanyCodes(EmpUser empUser);
/**
* 根据角色编码查询用户,仅返回基本信息

View File

@@ -338,7 +338,6 @@ public class InitCoreData extends BaseInitDataTests {
job.setConcurrent(Global.NO);
job.setMisfireInstruction(CronTrigger.MISFIRE_INSTRUCTION_DO_NOTHING);
job.setStatus(JobEntity.STATUS_PAUSED);
job.setRemarks("实时推送和设定计划推送时间的定时推送消息。");
jobDao.insert(job);
job = new JobEntity(MsgLocalMergePushTask.class.getSimpleName(), "SYSTEM");
job.setDescription("消息推送服务 (合并推送)");
@@ -347,19 +346,6 @@ public class InitCoreData extends BaseInitDataTests {
job.setConcurrent(Global.NO);
job.setMisfireInstruction(CronTrigger.MISFIRE_INSTRUCTION_DO_NOTHING);
job.setStatus(JobEntity.STATUS_PAUSED);
job.setRemarks("不重要的通知进行汇总30分钟或更长执行一次将多条消息合并为一条消息延迟推送给用户。");
jobDao.insert(job);
job = new JobEntity("DeleteLogBefore", "SYSTEM");
job.setDescription("清理访问日志 (3个月前)");
job.setInvokeTarget("logService.deleteLogBefore(0, 3, 0)");
job.setCronExpression("0 0 0 1 1/1 ? *");
job.setConcurrent(Global.NO);
job.setMisfireInstruction(CronTrigger.MISFIRE_INSTRUCTION_DO_NOTHING);
job.setStatus(JobEntity.STATUS_PAUSED);
job.setRemarks("1、清理1年前的所有日志logService.deleteLogBefore(1, 0, 0)\n" +
"2、清理6个月前的所有日志logService.deleteLogBefore(0, 6, 0)\n" +
"3、清理7天前的所有日志logService.deleteLogBefore(0, 0, 7)\n" +
"4、清理1年6个月前的所有日志logService.deleteLogBefore(1, 6, 0)");
jobDao.insert(job);
}

View File

@@ -4,15 +4,15 @@
*/
package com.jeesite.modules.sys.entity;
import jakarta.validation.constraints.Size;
import jakarta.validation.constraints.NotBlank;
import com.jeesite.common.entity.DataEntity;
import com.jeesite.common.entity.TreeEntity;
import com.jeesite.common.mybatis.annotation.Column;
import com.jeesite.common.mybatis.annotation.Table;
import com.jeesite.common.mybatis.mapper.query.QueryType;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* 行政区划Entity
* @author ThinkGem

View File

@@ -16,9 +16,9 @@ import com.jeesite.common.mybatis.annotation.JoinTable.Type;
import com.jeesite.common.mybatis.annotation.Table;
import com.jeesite.common.mybatis.mapper.query.QueryType;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import java.util.List;
/**

View File

@@ -17,9 +17,8 @@ import com.jeesite.common.utils.excel.annotation.ExcelField.Align;
import com.jeesite.common.utils.excel.annotation.ExcelFields;
import com.jeesite.common.utils.excel.fieldtype.CompanyType;
import com.jeesite.common.utils.excel.fieldtype.OfficeType;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.Valid;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.Valid;
/**
* 员工用户管理Entity
@@ -129,7 +128,7 @@ public class EmpUser extends User {
super.setRefObj(employee);
}
@ApiModelProperty("根据各种编码查询")
@Schema(description = "根据各种编码查询")
public String[] getCodes() {
return codes;
}

View File

@@ -13,10 +13,10 @@ import com.jeesite.common.mybatis.annotation.JoinTable;
import com.jeesite.common.mybatis.annotation.JoinTable.Type;
import com.jeesite.common.mybatis.annotation.Table;
import com.jeesite.common.mybatis.mapper.query.QueryType;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import java.util.List;
import java.util.stream.Collectors;
@@ -130,7 +130,7 @@ public class Employee extends DataEntity<Employee> {
this.company = company;
}
@ApiModelProperty("根据岗位编码查询")
@Schema(description = "根据岗位编码查询")
public String getPostCode() {
return postCode;
}
@@ -147,7 +147,7 @@ public class Employee extends DataEntity<Employee> {
this.employeePostList = employeePostList;
}
@ApiModelProperty("员工岗位关系")
@Schema(description = "员工岗位关系")
public String getEmployeePosts() {
// List<String> list = ListUtils.extractToList(employeePostList, "postCode");
// return StringUtils.join(list, ",");

View File

@@ -10,7 +10,7 @@ import com.jeesite.common.mybatis.annotation.JoinTable;
import com.jeesite.common.mybatis.annotation.JoinTable.Type;
import com.jeesite.common.mybatis.annotation.Table;
import com.jeesite.common.mybatis.mapper.query.QueryType;
import javax.validation.constraints.Size;
import jakarta.validation.constraints.Size;
/**
* 附属机构Entity

View File

@@ -14,10 +14,10 @@ import com.jeesite.common.lang.TimeUtils;
import com.jeesite.common.mybatis.annotation.Column;
import com.jeesite.common.mybatis.annotation.Table;
import com.jeesite.common.mybatis.mapper.query.QueryType;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import java.util.Date;
import java.util.Map;
@@ -230,7 +230,7 @@ public class Log extends DataEntity<Log> {
this.executeTime = executeTime;
}
@ApiModelProperty("格式化后的执行时间")
@Schema(description = "格式化后的执行时间")
public String getExecuteTimeFormat(){
if (executeTime == null) {
executeTime = 0L;
@@ -252,7 +252,7 @@ public class Log extends DataEntity<Log> {
}
StringBuilder params = new StringBuilder();
for (Map.Entry<String, String[]> param : ((Map<String, String[]>)paramsMap).entrySet()){
if (params.length() != 0) {
if (!params.isEmpty()) {
params.append("&");
}
params.append(param.getKey() + "=");

View File

@@ -16,11 +16,11 @@ import com.jeesite.common.utils.excel.annotation.ExcelField;
import com.jeesite.common.utils.excel.annotation.ExcelField.Align;
import com.jeesite.common.utils.excel.annotation.ExcelFields;
import com.jeesite.modules.sys.utils.EmpUtils;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
/**
* 组织机构Entity
@@ -44,6 +44,7 @@ import javax.validation.constraints.Size;
@Column(includeEntity=Extend.class, attrName="extend"),
}, extWhereKeys="dsf", orderBy="a.tree_sorts, a.office_code"
)
@Schema
public class Office extends TreeEntity<Office> {
private static final long serialVersionUID = 1L;
@@ -57,6 +58,9 @@ public class Office extends TreeEntity<Office> {
private String address; // 联系地址
private String zipCode; // 邮政编码
private String email; // 邮箱
@Hidden
@Schema(hidden = true)
private Extend extend; // 扩展字段
private String companyCode; // 根据公司查询机构,组织机构所属公司
@@ -82,6 +86,8 @@ public class Office extends TreeEntity<Office> {
}
@Override
@Hidden
@Schema(hidden = true)
public Office getParent() {
return parent;
}
@@ -147,7 +153,7 @@ public class Office extends TreeEntity<Office> {
this.officeType = officeType;
}
@ApiModelProperty("包含某机构类型")
@Schema(description = "包含某机构类型")
public String[] getOfficeType_in(){
return sqlMap.getWhere().getValue("office_type", QueryType.IN);
}
@@ -200,7 +206,9 @@ public class Office extends TreeEntity<Office> {
public void setEmail(String email) {
this.email = email;
}
@Hidden
@Schema(hidden = true)
public Extend getExtend() {
return extend;
}
@@ -209,7 +217,7 @@ public class Office extends TreeEntity<Office> {
this.extend = extend;
}
@ApiModelProperty("公司编码")
@Schema(description = "公司编码")
public String getCompanyCode() {
return companyCode;
}

View File

@@ -9,11 +9,11 @@ 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 io.swagger.annotations.ApiModelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
@Table(name="${_prefix}sys_post", alias="a", label="岗位信息", columns={
@Column(includeEntity=BaseEntity.class),
@@ -84,7 +84,7 @@ public class Post extends DataEntity<Post> {
this.postName = postName;
}
@ApiModelProperty("模糊查询岗位名称")
@Schema(description = "模糊查询岗位名称")
public String getPostName_like() {
return sqlMap().getWhere().getValue("post_name", QueryType.LIKE);
}
@@ -110,7 +110,7 @@ public class Post extends DataEntity<Post> {
this.postSort = postSort;
}
@ApiModelProperty("根据员工编码查询")
@Schema(description = "根据员工编码查询")
public String getEmpCode() {
return empCode;
}
@@ -119,7 +119,7 @@ public class Post extends DataEntity<Post> {
this.empCode = empCode;
}
@ApiModelProperty("根据用户编码查询")
@Schema(description = "根据用户编码查询")
public String getUserCode() {
return userCode;
}
@@ -128,7 +128,7 @@ public class Post extends DataEntity<Post> {
this.userCode = userCode;
}
@ApiModelProperty("岗位绑定角色编码")
@Schema(description = "岗位绑定角色编码")
public String getRoleCodes() {
return roleCodes;
}
@@ -137,6 +137,7 @@ public class Post extends DataEntity<Post> {
this.roleCodes = roleCodes;
}
@Schema(description = "岗位绑定角色名称")
public String getRoleNames() {
return roleNames;
}

View File

@@ -4,6 +4,14 @@
*/
package com.jeesite.modules.sys.interceptor;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.slf4j.MDC;
import org.springframework.core.NamedThreadLocal;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.jeesite.common.idgen.IdGen;
import com.jeesite.common.lang.ByteUtils;
import com.jeesite.common.lang.StringUtils;
@@ -12,13 +20,6 @@ import com.jeesite.common.network.IpUtils;
import com.jeesite.common.service.BaseService;
import com.jeesite.modules.sys.utils.LogUtils;
import com.jeesite.modules.sys.utils.UserUtils;
import org.slf4j.MDC;
import org.springframework.core.NamedThreadLocal;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 日志拦截器

View File

@@ -4,15 +4,16 @@
*/
package com.jeesite.modules.sys.interceptor;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.common.service.BaseService;
import com.jeesite.common.web.BaseController;
import com.jeesite.common.web.http.UserAgentUtils;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.common.service.BaseService;
import com.jeesite.common.web.http.UserAgentUtils;
/**
* 手机端视图拦截器

View File

@@ -47,11 +47,6 @@ public interface EmpUserService extends CrudServiceApi<EmpUser> {
* 根据部门编码查询用户,仅返回基本信息
*/
List<EmpUser> findUserListByOfficeCodes(EmpUser empUser);
/**
* 根据公司编码查询用户,仅返回基本信息
*/
List<EmpUser> findUserListByCompanyCodes(EmpUser empUser);
/**
* 根据角色编码查询用户,仅返回基本信息

View File

@@ -5,19 +5,15 @@
package com.jeesite.modules.sys.service.support;
import com.jeesite.common.collect.ListUtils;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.common.service.TreeService;
import com.jeesite.common.utils.PageUtils;
import com.jeesite.modules.sys.dao.CompanyDao;
import com.jeesite.modules.sys.dao.CompanyOfficeDao;
import com.jeesite.modules.sys.entity.Company;
import com.jeesite.modules.sys.entity.CompanyOffice;
import com.jeesite.modules.sys.entity.EmpUser;
import com.jeesite.modules.sys.service.CompanyService;
import com.jeesite.modules.sys.service.DataScopeService;
import com.jeesite.modules.sys.service.EmpUserService;
import com.jeesite.modules.sys.utils.EmpUtils;
import com.jeesite.modules.sys.utils.UserUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
@@ -33,10 +29,9 @@ public class CompanyServiceSupport extends TreeService<CompanyDao, Company>
@Autowired
private CompanyOfficeDao companyOfficeDao;
@Autowired
private DataScopeService dataScopeService;
@Autowired
private EmpUserService empUserService;
/**
* 获取单条数据
@@ -91,7 +86,7 @@ public class CompanyServiceSupport extends TreeService<CompanyDao, Company>
companyOfficeDao.insertBatch(list, null);
}
// 清理公司相关缓存
clearCompanyCache(company);
clearCompanyCache();
}
/**
@@ -100,10 +95,9 @@ public class CompanyServiceSupport extends TreeService<CompanyDao, Company>
@Override
@Transactional
public void delete(Company company) {
company.sqlMap().markIdDelete();
super.delete(company);
// 清理公司相关缓存
clearCompanyCache(company);
clearCompanyCache();
}
/**
@@ -114,37 +108,15 @@ public class CompanyServiceSupport extends TreeService<CompanyDao, Company>
public void updateStatus(Company company) {
dao.updateStatus(company);
// 清理公司相关缓存
clearCompanyCache(company);
clearCompanyCache();
}
/**
* 清理公司相关缓存
*/
private void clearCompanyCache(Company company){
private void clearCompanyCache(){
// EmpUtils.removeCache(EmpUtils.CACHE_COMPANY_LIST);
EmpUtils.removeCache(EmpUtils.CACHE_COMPANY_ALL_LIST);
// 清理公司下的用户缓存,包含子公司
if (company == null || StringUtils.isBlank(company.getCompanyCode())){
return;
}
if (StringUtils.isBlank(company.getParentCode())){
company = get(company);
if (company == null){
return;
}
}
Company where = new Company();
where.setStatus(Company.STATUS_NORMAL);
where.setParentCodes(company.getParentCodes() + company.getCompanyCode() + ",%");
EmpUser empUserWhere = new EmpUser();
empUserWhere.setCodes(this.findByParentCodesLike(where).stream().map(Company::getCompanyCode).toArray(String[]::new));
if (empUserWhere.getCodes().length == 0) {
return;
}
PageUtils.findList(empUserWhere, null, e -> {
List<EmpUser> empUserList = empUserService.findUserListByCompanyCodes((EmpUser)e);
empUserList.forEach(UserUtils::clearCache);
return !empUserList.isEmpty();
});
}
}

View File

@@ -23,13 +23,13 @@ import com.jeesite.modules.sys.service.EmployeeService;
import com.jeesite.modules.sys.service.UserService;
import com.jeesite.modules.sys.utils.EmpUtils;
import com.jeesite.modules.sys.utils.UserUtils;
import jakarta.annotation.PostConstruct;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.PostConstruct;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import java.util.List;
/**
@@ -115,13 +115,6 @@ public class EmpUserServiceSupport extends CrudService<EmpUserDao, EmpUser>
public List<EmpUser> findUserListByOfficeCodes(EmpUser empUser){
return dao.findUserListByOfficeCodes(empUser);
}
/**
* 根据公司编码查询用户,仅返回基本信息
*/
@Override
public List<EmpUser> findUserListByCompanyCodes(EmpUser empUser){
return dao.findUserListByCompanyCodes(empUser);
}
/**
* 根据角色编码查询用户,仅返回基本信息

View File

@@ -5,26 +5,21 @@
package com.jeesite.modules.sys.service.support;
import com.jeesite.common.config.Global;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.common.service.ServiceException;
import com.jeesite.common.service.TreeService;
import com.jeesite.common.utils.PageUtils;
import com.jeesite.common.utils.excel.ExcelImport;
import com.jeesite.common.validator.ValidatorUtils;
import com.jeesite.modules.sys.dao.OfficeDao;
import com.jeesite.modules.sys.entity.EmpUser;
import com.jeesite.modules.sys.entity.Office;
import com.jeesite.modules.sys.service.DataScopeService;
import com.jeesite.modules.sys.service.EmpUserService;
import com.jeesite.modules.sys.service.OfficeService;
import com.jeesite.modules.sys.utils.EmpUtils;
import com.jeesite.modules.sys.utils.UserUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException;
import java.util.List;
/**
@@ -37,8 +32,6 @@ public class OfficeServiceSupport extends TreeService<OfficeDao, Office>
@Autowired
private DataScopeService dataScopeService;
@Autowired
private EmpUserService empUserService;
/**
* 获取单条数据
@@ -81,7 +74,7 @@ public class OfficeServiceSupport extends TreeService<OfficeDao, Office>
}
super.save(office);
// 清理部门相关缓存
clearOfficeCache(office);
clearOfficeCache();
}
/**
@@ -156,7 +149,7 @@ public class OfficeServiceSupport extends TreeService<OfficeDao, Office>
public void updateStatus(Office office) {
super.updateStatus(office);
// 清理部门相关缓存
clearOfficeCache(office);
clearOfficeCache();
}
/**
@@ -168,37 +161,15 @@ public class OfficeServiceSupport extends TreeService<OfficeDao, Office>
office.sqlMap().markIdDelete();
super.delete(office);
// 清理部门相关缓存
clearOfficeCache(office);
clearOfficeCache();
}
/**
* 清理部门相关缓存
*/
private void clearOfficeCache(Office office){
private void clearOfficeCache(){
// EmpUtils.removeCache(EmpUtils.CACHE_OFFICE_LIST);
EmpUtils.removeCache(EmpUtils.CACHE_OFFICE_ALL_LIST);
// 清理组织下的用户缓存,包含子机构
if (office == null || StringUtils.isBlank(office.getOfficeCode())){
return;
}
if (StringUtils.isBlank(office.getParentCode())){
office = get(office);
if (office == null){
return;
}
}
Office where = new Office();
where.setStatus(Office.STATUS_NORMAL);
where.setParentCodes(office.getParentCodes() + office.getOfficeCode() + ",%");
EmpUser empUserWhere = new EmpUser();
empUserWhere.setCodes(this.findByParentCodesLike(where).stream().map(Office::getOfficeCode).toArray(String[]::new));
if (empUserWhere.getCodes().length == 0) {
return;
}
PageUtils.findList(empUserWhere, null, e -> {
List<EmpUser> empUserList = empUserService.findUserListByOfficeCodes((EmpUser)e);
empUserList.forEach(UserUtils::clearCache);
return !empUserList.isEmpty();
});
}
}

View File

@@ -15,10 +15,10 @@ import com.jeesite.modules.sys.entity.*;
import com.jeesite.modules.sys.service.CompanyService;
import com.jeesite.modules.sys.service.EmployeeService;
import com.jeesite.modules.sys.service.OfficeService;
import jakarta.servlet.http.HttpServletRequest;
import org.apache.shiro.session.Session;
import org.springframework.core.NamedThreadLocal;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Set;

Some files were not shown because too many files have changed in this diff Show More