Compare commits

..

164 Commits

Author SHA1 Message Date
thinkgem
4ff93c1553 update README.md 2022-08-24 17:27:56 +08:00
thinkgem
e00dda642a 修复因黑暗主题导致的新建后显示角色编码问题 2022-08-18 11:23:40 +08:00
thinkgem
60971ac312 日志记录创建时间增加秒 2022-08-11 00:02:45 +08:00
thinkgem
6bcd2a28c4 细节微调 2022-08-09 16:43:59 +08:00
thinkgem
4a6c15d56a update README.md 2022-08-09 11:03:40 +08:00
thinkgem
35ad27a702 清理无用注释 2022-08-08 21:09:02 +08:00
thinkgem
97351bc3df 支持OSS对象存储的文件预览 2022-08-08 12:31:14 +08:00
thinkgem
4015073943 update 2022-08-06 11:27:06 +08:00
thinkgem
bdcabc1281 replace ad 2022-08-05 16:30:39 +08:00
thinkgem
e0a653a1df 重命名ur是sql关键词,导致jsqlparser不能解析 2022-08-02 10:30:27 +08:00
thinkgem
ea851e4c72 代码优化 2022-08-01 09:03:31 +08:00
thinkgem
ee8ec1dd3d spring boot 2.6.10 2022-07-22 14:49:15 +08:00
thinkgem
34e326aff6 新增左树右表和导入导出代码生成模板 2022-07-12 16:38:42 +08:00
thinkgem
e9864f0270 update 2022-07-12 15:47:18 +08:00
thinkgem
69a6c77cf0 spring boot 2.6.9 mybatis-spring 2.0.7 shiro 1.9.1 2022-07-04 22:40:32 +08:00
thinkgem
da1b45b9f2 update 2022-06-30 17:58:10 +08:00
thinkgem
8062f0273d laydate lang 2022-06-30 17:56:33 +08:00
thinkgem
a656de1601 机构类型条件按需添加 2022-06-27 08:47:22 +08:00
thinkgem
9ccde22b15 增加微服务模块代码生成的启动脚本 2022-06-24 09:52:07 +08:00
thinkgem
8951a3f07f update 2022-06-21 09:27:05 +08:00
thinkgem
a4f9c5332c update 2022-06-21 09:26:44 +08:00
thinkgem
91319555f6 新增DAO批量更新语句,动态ExecutorType指定 2022-06-09 14:22:51 +08:00
thinkgem
51cbd7b945 本地分页代码优化,如果总共就1页,则直接返回。 2022-06-06 11:39:23 +08:00
thinkgem
8c6cc33a09 update 2022-06-06 11:36:40 +08:00
thinkgem
c11de8fc8e format 2022-06-06 10:20:14 +08:00
thinkgem
b4bddb3246 去掉类上的事务注解 2022-06-02 22:42:09 +08:00
thinkgem
b925cd71a1 黑暗主题优化 2022-05-31 17:17:15 +08:00
thinkgem
a38894ab63 登录页增加黑暗主题切换 2022-05-31 16:17:26 +08:00
thinkgem
718510a795 升级 shardingsphere 5.1.1 2022-05-31 15:40:12 +08:00
thinkgem
c248f1ec04 保持shardingsphere属性key 2022-05-31 12:04:22 +08:00
thinkgem
9c640a6433 增加smtpPort 2022-05-31 11:24:06 +08:00
thinkgem
a65abc3457 新增黑暗主题 2022-05-27 17:00:44 +08:00
thinkgem
559733bb61 新增黑暗主题 2022-05-27 15:34:41 +08:00
thinkgem
9b702b0297 update 2022-05-27 15:05:26 +08:00
thinkgem
5f3f2009a2 druid 1.2.10 2022-05-26 10:25:20 +08:00
thinkgem
b4ddab035a 优化mime获取,优化因第三方包里包含mine.types导致加载不正确 2022-05-26 10:24:38 +08:00
thinkgem
986ff8befe update 2022-05-26 10:23:13 +08:00
thinkgem
071aa747c8 4.5.0 升级到 spring boot 2.6.8 2022-05-24 21:04:57 +08:00
thinkgem
03592947d4 update script 2022-05-18 09:06:53 +08:00
thinkgem
6443d6b409 新增顶部菜单自动折叠到更多下拉菜单 2022-05-17 12:02:00 +08:00
thinkgem
13a38aea97 4.4.2 start 2022-05-13 23:42:31 +08:00
thinkgem
6861ba125e 代码优化 2022-05-08 16:19:09 +08:00
thinkgem
07905c1e82 细节优化 2022-05-06 14:12:42 +08:00
thinkgem
f454f252dc update README.md 2022-05-06 09:07:19 +08:00
thinkgem
3f429e96f6 Merge remote-tracking branch 'origin-github/v4.4_dev' into v4.4_dev 2022-05-05 20:18:41 +08:00
thinkgem
0fb1e9dab9 update 2022-05-05 20:00:15 +08:00
thinkgem
24007dd6b1 root pom 2022-05-05 17:13:53 +08:00
thinkgem
5c4a6257f3 移除空白元素 2022-05-05 13:52:46 +08:00
thinkgem
c5f1feafae spring boot 2.5.13 shiro 1.9.0 等等 2022-05-05 12:06:33 +08:00
thinkgem
2633d6b06d remove commons-fileupload 2022-05-05 11:19:48 +08:00
thinkgem
79a002684e 4.4.1 2022-05-05 11:15:48 +08:00
thinkgem
8ad30622a9 点击右上角【Star】收藏本软件 ^_^ 2022-05-03 23:58:58 +08:00
thinkgem
21bf3bc06c maven plugin update 2022-04-30 11:16:47 +08:00
thinkgem
554e9cea74 系统管理员 to 租户管理员 2022-04-28 22:17:04 +08:00
thinkgem
2e3de8a7dd ie下缓存问题 2022-04-26 15:07:11 +08:00
thinkgem
17b4d2ad90 配置参数和脚本优化 2022-04-24 23:41:36 +08:00
thinkgem
c98de5cea9 update README.md 2022-04-24 11:25:37 +08:00
thinkgem
d4d0dbc408 日志信息优化 2022-04-24 11:08:51 +08:00
thinkgem
b9c3d3d0c6 补充Cloud的Docker代码生成脚本 2022-04-24 11:08:03 +08:00
thinkgem
ed91d35624 日志输出信息优化 2022-04-22 22:05:52 +08:00
thinkgem
76e77fcdb2 update 2022-04-21 18:52:14 +08:00
thinkgem
a4f2a370e3 优化参数配置 2022-04-19 18:27:51 +08:00
thinkgem
b98af679d1 update 2022-04-19 18:21:25 +08:00
thinkgem
1e29444854 update README.md 2022-04-19 11:20:03 +08:00
thinkgem
a892da8369 新增是否启用默认 Servlet 映射(启用后可访问 webapp 下的静态资源访问) 2022-04-18 11:10:42 +08:00
thinkgem
8ed7e4c4e7 remove map file 2022-04-15 17:33:09 +08:00
thinkgem
f5fe75ea69 支持springboot带减号的key写法,自动转换为驼峰格式。 2022-04-14 12:03:31 +08:00
thinkgem
50b5334214 4.4.1 2022-04-13 17:16:13 +08:00
thinkgem
998943ddc3 spring boot 2.5.12 2022-04-01 11:33:39 +08:00
thinkgem
d2f3597a3b update 2022-03-31 11:56:59 +08:00
thinkgem
f4019907b5 update 2022-03-21 10:39:24 +08:00
thinkgem
dd41a04b10 增加一些线程池个性化参数 2022-03-20 14:41:27 +08:00
thinkgem
87e8352418 多线程优化为线程池 2022-03-20 14:11:35 +08:00
thinkgem
41da9ef5cb 4.4.0 2022-03-16 22:30:11 +08:00
thinkgem
09fe0921a6 4.4.0 2022-03-16 21:51:37 +08:00
thinkgem
aaf969187d update readme 2022-03-16 17:55:29 +08:00
thinkgem
a37f235089 shiro.sso.encryptKeyDateFormat 2022-03-16 15:18:19 +08:00
thinkgem
62df9b5a9e update 2022-03-16 14:27:48 +08:00
thinkgem
36192ad56c 4.4.0 2022-03-15 21:44:18 +08:00
thinkgem
5186bc45c0 script update 2022-03-15 21:39:32 +08:00
thinkgem
35c710c748 4.4.0 2022-03-15 21:37:33 +08:00
thinkgem
433077e453 update 2022-03-14 11:37:20 +08:00
thinkgem
1dec607c8a 新增属性获取 getPropertyToLong 方法。 2022-03-13 19:55:06 +08:00
thinkgem
18cca069c1 登录和未登录的session超时时间分开;deviceType 设备类型,默认 pc
;新增孤立会话集群模式Quartz清理;微服务情况下可关闭孤立会话清理任务,只需开启core服务即可;在线用户游客列表,删除还未来得及清理的已超时会话;在线人数统计,增加缓存3分钟的数据,节省服务器资源
2022-03-12 09:23:07 +08:00
thinkgem
ab1481f6c7 update 2022-03-12 09:13:36 +08:00
thinkgem
581b40437e update 2022-03-10 18:59:03 +08:00
thinkgem
3c16183130 spring boot 2.5.10 2022-03-09 21:28:47 +08:00
thinkgem
682f0c87ff 管理界面默认关联查询附属部门 2022-03-09 17:32:12 +08:00
thinkgem
544a9953f6 增加子表生成模板的后端验证注解 2022-03-08 21:06:39 +08:00
thinkgem
55dd0773d3 取消webuploader上传超时参数 #I4WP8B 2022-03-08 17:01:43 +08:00
thinkgem
4bf24feb6e update 2022-02-28 15:48:30 +08:00
thinkgem
6e40602563 Merge remote-tracking branch 'remotes/origin/master' into v4.next 2022-02-22 22:40:36 +08:00
卓源软件
338c756714 update README.md. 2022-02-22 14:39:29 +00:00
thinkgem
89c6bc3a43 start 4.3.4 2022-02-22 20:55:42 +08:00
thinkgem
10a3a04dfa 优化树结构图标间距字体等 2022-02-22 14:22:32 +08:00
thinkgem
70e5a407fd 反序列化遇到异常时忽略 2022-02-21 10:56:16 +08:00
thinkgem
7414d655ae shadeClose default 2022-02-20 22:01:05 +08:00
thinkgem
7c16b21232 排序过滤优化,只允许特定字符。 2022-02-17 23:15:54 +08:00
thinkgem
7a46c63a43 点击右上角【Star】收藏本软件 ^_^ 2022-02-17 22:02:43 +08:00
thinkgem
325117dc89 主题优化改进 2022-02-17 15:11:57 +08:00
thinkgem
ac0b809003 主题优化改进 2022-02-16 15:33:30 +08:00
thinkgem
b931a96ec2 update readme 2022-02-16 10:34:49 +08:00
thinkgem
834f245a7b update readme 2022-02-16 10:31:59 +08:00
thinkgem
0ada1f3b2b 增加过滤关键字 2022-02-16 10:05:29 +08:00
卓源软件
e14f535016 !23 修正中文拼音首字母空数组判断
Merge pull request !23 from zhouinfo/master
2022-02-15 07:14:11 +00:00
zhouinfo
2e26ccf33b 修正中文拼音首字母空数组判断
字符串不是中文字符,会返回空数组,需要判断
2022-02-15 06:53:57 +00:00
thinkgem
233a00ad89 新增2套主题风格 2022-02-14 19:57:52 +08:00
thinkgem
52c1dec7a8 update readme 2022-02-14 16:29:59 +08:00
thinkgem
288f9d56c5 4.3.3 2022-02-14 11:06:46 +08:00
thinkgem
a610528ba6 update readme 2022-02-14 10:54:11 +08:00
thinkgem
3e9268e27e update demo 2022-02-09 11:35:26 +08:00
thinkgem
2dd963c049 tomcat 9.0.58 2022-02-09 00:01:24 +08:00
thinkgem
df530be41b update 2022-01-27 10:27:31 +08:00
thinkgem
9b42881648 新增yml环境配置实例 2022-01-25 09:55:32 +08:00
thinkgem
a60605d412 spring boot 2.5.9 2022-01-25 09:52:32 +08:00
thinkgem
4b6f7f1ae6 升级 layer 3.5,升级注意:查找替换 /3.1/layer.js 为 /3.5/layer.js 2022-01-24 12:11:17 +08:00
thinkgem
660087f613 升级 laydate 5.3 升级注意:查找替换 /5.0/laydate.js 为 /5.3/laydate.js 2022-01-17 12:03:13 +08:00
thinkgem
9d79ae73ec jdk17 2022-01-13 20:07:47 +08:00
wy
870976f6cf 优化组织机构带用户加载树算法 2022-01-13 20:04:08 +08:00
thinkgem
bd71d5126b update cms script 2022-01-11 19:05:08 +08:00
jeesite
3c698cf6ad 新增系统管理员管理默认角色不能取消提示 2022-01-11 12:39:56 +08:00
thinkgem
19b9cd8205 start 4.3.3 2022-01-06 12:04:26 +08:00
thinkgem
f9c0f5a72f mybatis 3.5.9、jsqlparser 4.3 2022-01-05 00:31:34 +08:00
thinkgem
5f8e8ba3f9 update 2021-12-30 23:21:31 +08:00
thinkgem
2dde6aa8e7 layer.msg 加空值判断 2021-12-30 23:20:34 +08:00
thinkgem
04b310b0f8 remove filter css 2021-12-29 15:55:58 +08:00
thinkgem
7fa7cdb224 细节处理 2021-12-29 14:22:57 +08:00
thinkgem
87f6703e6e 支持jdk17 2021-12-28 22:11:26 +08:00
thinkgem
9152e3df0b 点击右上角【Star】收藏本软件 ^_^ 2021-12-28 13:52:54 +08:00
jeesite
bf565dc80c Redis超时时间长一点 2021-12-27 17:12:46 +08:00
thinkgem
1f5f14ca1b v4.3.2 2021-12-27 12:08:28 +08:00
thinkgem
5da4bfbd1c 激活菜单圆润风格。主题整体美化,标准14字号,色调细节。 2021-12-27 10:21:41 +08:00
thinkgem
ce599fe934 激活菜单圆润风格。主题整体美化,标准14字号,色调细节。 2021-12-27 10:21:36 +08:00
thinkgem
8f580d56f5 点击右上角【Star】收藏本软件 ^_^ 2021-12-27 10:14:28 +08:00
thinkgem
0de5e3acba 开源协议回归 Apache 2.0 2021-12-27 09:01:07 +08:00
jeesite
2a6bdd3da1 字体小一点方便分辨 2021-12-24 12:09:18 +08:00
thinkgem
4ba3a5f4e9 点击右上角【Star】收藏本软件 ^_^ 2021-12-24 10:47:32 +08:00
thinkgem
aec511dbf8 docker-build 2021-12-21 10:10:14 +08:00
thinkgem
ea6acbda9f mysql 8.0.27 2021-12-20 19:07:40 +08:00
jeesite
1de7ef75ef 非字符串类型默认增加isUpdateForce 2021-12-20 09:46:39 +08:00
thinkgem
75a55ad8dd log4j-api 2.17.0 2021-12-18 22:17:21 +08:00
jeesite
125d94a06c 修正左树右表没有刷新树表 2021-12-18 16:01:15 +08:00
jeesite
8ab378dff1 layer优化msg弹窗,超时时间比较长的加关闭创建按钮,全屏消息的增宽显示更多内容。 2021-12-14 16:44:16 +08:00
jeesite
54f4ef7e15 update 2021-12-14 15:44:36 +08:00
yesone
4a145f4ea3 当超过设置最大选择长度时,自动关闭下拉框 2021-12-10 13:19:09 +08:00
thinkgem
bb4e568483 添加建表脚本,增加一些帮助提示 2021-12-06 12:17:15 +08:00
thinkgem
f9a287c869 代码生成测试示例完善 2021-12-03 13:52:27 +08:00
thinkgem
d747aa994d 4.3.2 2021-11-30 22:15:38 +08:00
thinkgem
d4ecc7d0b5 代码优化 2021-11-30 17:15:43 +08:00
thinkgem
a13fbf45e8 防登录信息过长攻击 2021-11-29 11:51:16 +08:00
thinkgem
793a5dd014 Tab页签增加关闭全部功能;Tab增加图标 2021-11-23 19:56:57 +08:00
thinkgem
c6e9d782d6 代码优化 2021-11-23 13:48:20 +08:00
thinkgem
a3f3a87d7d 代码生成模板优化 2021-11-22 20:04:21 +08:00
thinkgem
25cd1ada17 微服务环境下日志存不上的问题 2021-11-22 20:02:27 +08:00
thinkgem
42a572fca9 点击右上角【Star】收藏本软件 ^_^ 2021-11-18 10:46:44 +08:00
thinkgem
2529d983c7 4.3.1 2021-11-18 10:11:42 +08:00
thinkgem
7d9e8b1a7d 升级一些依赖 2021-11-16 13:21:35 +08:00
thinkgem
b1c36a6bb8 代码生成多选字段验证时的问题 2021-11-16 11:18:46 +08:00
thinkgem
a552bb2d5b 点击右上角【Star】收藏本软件 ^_^ 2021-11-16 11:17:31 +08:00
thinkgem
566a2e3dea 点击右上角【Star】收藏本软件 ^_^ 2021-11-16 10:04:02 +08:00
thinkgem
852194ead9 访问日志类型增加选项卡快捷操作 2021-11-15 16:15:59 +08:00
thinkgem
4601ef6138 公司和部门树返回viewCode数据 2021-11-15 15:51:04 +08:00
thinkgem
010fac9d20 mybatis 3.5.7、druid 1.2.8 2021-11-10 12:22:58 +08:00
thinkgem
65adf59de8 update companyIndex.html 2021-11-09 12:43:21 +08:00
375 changed files with 26574 additions and 25432 deletions

View File

@@ -4,8 +4,8 @@
</p>
<h3 align="center" style="margin:30px 0 30px;font-weight:bold;font-size:30px;">快速开发平台 - Spring Boot</h3>
<p align="center">
<a href="https://jeesite.com/docs/upgrade/" target="__blank"><img alt="JeeSite-V5.0" src="https://img.shields.io/badge/JeeSite-V5.0-success.svg"></a>
<a href="https://spring.io/projects/spring-boot#learn" target="__blank"><img alt="SpringBoot-2.5" src="https://img.shields.io/badge/SpringBoot-2.5-blue.svg"></a>
<a href="https://jeesite.com/docs/upgrade/" target="__blank"><img alt="JeeSite-V4.5" src="https://img.shields.io/badge/JeeSite-V4.5-success.svg"></a>
<a href="https://spring.io/projects/spring-boot#learn" target="__blank"><img alt="SpringBoot-2.6" src="https://img.shields.io/badge/SpringBoot-2.6-blue.svg"></a>
<a href="https://gitee.com/thinkgem/jeesite4/stargazers" target="__blank"><img alt="star" src="https://gitee.com/thinkgem/jeesite4/badge/star.svg?theme=dark"></a>
<a href="https://gitee.com/thinkgem/jeesite4/members" target="__blank"><img alt="fork" src="https://gitee.com/thinkgem/jeesite4/badge/fork.svg?theme=dark"></a>
</p>
@@ -41,7 +41,7 @@ JeeSite 功能全,知识点非常多,也非常少。因为她使用的都是
JeeSite 是一个低代码开发平台具有较高的封装度、扩展性封装不是限制你去做一些事情而是在便捷的同时也具有较好的扩展性在不具备一些功能的情况下JeeSite 提供了扩展接口,提供了原生调用方法。
大家都在用 Spring也在学习 Spring 的优点Spring 提供了较好的扩展性,可又有多少人去修改它的源代码呢,退一步说,大家去修改了 Spring 的源码反而会对未来升级造成很大困扰您说不是呢这样的例子很多所以不要纠结我们非常注重这一点JeeSite 也一样具备强大的扩展性。
大家都在用 Spring也在学习 Spring 的优点Spring 提供了较好的扩展性,可又有多少人去修改它的源代码呢,退一步说,大家去修改了 Spring 的源码反而会对未来升级造成很大困扰您说不是呢这样的例子很多所以不要纠结我们非常注重这一点JeeSite 也一样具备强大的扩展性。
* 至今 JeeSite 平台架构已经非常稳定。
* JeeSite 精益求精,用心打磨每一个细节。
@@ -51,12 +51,14 @@ JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,
## 技术选型
* 主框架Spring Boot 2.5、Spring Framework 5.3、Apache Shiro 1.9、J2Cache
* 主框架Spring Boot 2.6、Spring Framework 5.3、Apache Shiro 1.9、J2Cache
* 持久层Apache MyBatis 3.5、Hibernate Validator 6.2、Alibaba Druid 1.2
* 视图层Spring MVC 5.3、Beetl 3.3替换JSP、Bootstrap 3.3、AdminLTE 2.4
* 前端组件jQuery 3.5、jqGrid 4.7、layer 3.5、zTree 3.5、jQuery Validation
* 支持 IE9 及以上版本及其他所有现代浏览器,如:谷歌浏览器、火狐浏览器、国产浏览器 等
* 分离前端版Node.js、TypeScript、Vue3、Vite、Ant Design Vue、Vue Vben Admin
* 工作流引擎Flowable 6.6、符合 BPMN 规范、在线流程设计器、中国式流程、退回、撤回、自由流
* Bootstrap 版 支持 IE9 及以上版本及其他所有现代浏览器,如:谷歌、火狐、国产浏览器 等
* Vue3 版 支持现代浏览器,如:谷歌 Chrome 86+、火狐、国产浏览器 等
* 技术选型(详细):<http://jeesite.com/docs/technology/>
* JeeSite Vue<https://gitee.com/thinkgem/jeesite-vue>
@@ -86,21 +88,13 @@ JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,
### 本地运行
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/jeesite4/repository/archive/v5.0_dev.zip> 并解压
2. 下载源码:<https://gitee.com/thinkgem/jeesite4/repository/archive/v4.5.zip> 并解压
3. 打开文件:`/web/src/main/resources/config/application.yml` 配置JDBC连接
4. 执行脚本:`/web/bin/init-data.bat` 初始化数据库
5. 执行脚本:`/web/bin/run-tomcat.bat` 启动服务即可
6. 浏览器访问:<http://127.0.0.1:8980/js/> 账号 system 密码 admin
7. 部署常见问题:<https://jeesite.com/docs/faq/>
### 快速运行
1. 环境准备:`JDK 1.8 or 11、17``Maven 3.6+`、无需准备数据库(使用内嵌 H2 DB
2. 下载源码:<https://gitee.com/thinkgem/jeesite4/repository/archive/v5.0_dev.zip> 并解压
3. 执行脚本:`/web-fast/bin/run-tomcat.bat` 启动服务即可(自动初始化库)
4. 浏览器访问:<http://127.0.0.1:8980/js/> 账号 system 密码 admin
5. 部署常见问题:<https://jeesite.com/docs/faq/>
### 容器运行
- 拉取 Docker 镜像:
@@ -124,34 +118,52 @@ thinkgem/jeesite-web && docker logs -f jeesite-web
* 菜单和按钮权限:<https://jeesite.com/docs/permi-shiro/>
* 强大的数据权限:<https://jeesite.com/docs/service-datascope/#数据权限>
* 表结构数据字典:<https://jeesite.com/docs/code-gen/#表结构数据字典>
* 表单组件封装:<https://jeesite.com/docs/views-beetl/>
* 持久层设计:<https://jeesite.com/docs/dao-mybatis/>
* JS脚本工具<https://jeesite.com/docs/jeesite-js/>
* 后端工具:<https://jeesite.com/docs/sys-utils/>
* 表单组件:<https://jeesite.com/docs/views-beetl/>
* 表格组件:<https://jeesite.com/docs/datagrid/>
* js工具<https://jeesite.com/docs/jeesite-js/>
## 专题文章
* 自定义主题:<https://jeesite.com/docs/custom-views/>
* 国际化多语言:<https://jeesite.com/docs/i18n-locale/>
* 接口文档:<https://jeesite.com/docs/mobile-rest-api/>
* BPM工作流引擎<https://jeesite.com/docs/bpm/>
* 用户类型:<https://jeesite.com/docs/user-type/>
* 树表结构设计:<https://jeesite.com/docs/tree-table-use/>
* 单点登录:<https://jeesite.com/docs/sso-cas/>
* 国际化:<https://jeesite.com/docs/i18n-locale/>
* 对象存储:<https://jeesite.com/docs/oss-client/>
* 文件在线预览:<https://jeesite.com/docs/filepreview/>
* 报表设计器:<https://jeesite.com/docs/ureport/>
* 大屏设计器:<https://jeesite.com/docs/visual/>
* 三员管理员:<https://jeesite.com/docs/manager3/>
* 在线作业调度:<https://jeesite.com/docs/job/>
* 消息推送:<https://jeesite.com/docs/msg-push-use/>
* 单点登录:<https://jeesite.com/docs/sso-cas/>
* 在线任务调度:<https://jeesite.com/docs/job/>
* 对象存储:<https://jeesite.com/docs/oss-client/>
* 大屏设计器:<https://jeesite.com/docs/visual/>
* 报表设计器:<https://jeesite.com/docs/ureport/>
* 文件在线预览:<https://jeesite.com/docs/filepreview/>
* 三员管理员:<https://jeesite.com/docs/manager3/>
* 手机端框架:<https://jeesite.com/docs/uniapp/>
* 统一认证服务:<https://jeesite.com/docs/oauth2-server/>
* 树表结构设计:<https://jeesite.com/docs/tree-table-use/>
## 云服务架构
* 多租户、SaaS服务<https://jeesite.com/docs/saas-corp-use/>
* 集群、负载均衡、高可用:<https://jeesite.com/docs/cluster/>
* Spring Cloud<https://jeesite.com/docs/springcloud/>
* Spring Cloud 微服务<https://jeesite.com/docs/springcloud/>
* 分布式事务 Seata<https://jeesite.com/docs/springcloud-seata/>
* 读写分离、分库分表:<https://jeesite.com/docs/sharding/>
## 前后分离版
* Vue 版介绍:<https://jeesite.com/docs/jeesite-vue/>
* Vue 安装部署:<https://jeesite.com/docs/vue-install-deploy/>
* Vue 参数配置:<https://jeesite.com/docs/vue-settings/>
* Vue 前端权限:<https://jeesite.com/docs/vue-auth/>
* Vue 源码解析:<https://jeesite.com/docs/vue-crud-view/>
* Vue 表单组件:<https://jeesite.com/docs/vue-basic-form/>
* Vue 表格组件:<https://jeesite.com/docs/vue-basic-table/>
* Vue 常用组件:<https://jeesite.com/docs/vue-comp/>
* Vue 图标组件:<https://jeesite.com/docs/vue-icon/>
* Vue 国际化多语言:<https://jeesite.com/docs/vue-i18n/>
* Vue 样式库:<https://jeesite.com/docs/vue-style/>
## 授权协议声明
@@ -169,7 +181,7 @@ thinkgem/jeesite-web && docker logs -f jeesite-web
## 技术服务与支持
* 没有资金的支撑就很难得到发展,特别是一个好的产品,如果 JeeSite 帮助了您,请为我们点赞。支持我们,您可以得到一些回报,有了这些我们会把公益事业做的更好,回报社区和社会请给我们一些动力吧,在此非常感谢已支持我们的朋友!
* 没有资金的支撑就很难得到发展,特别是一个好的产品,如果 JeeSite 帮助了您,请为我们点赞。支持我们,您可以获得更多回馈,我们会把公益事业做的更好,开放更多资源,回报社区和社会请给我们一些动力吧,在此非常感谢已支持我们的朋友!
* **联系我们**:请访问技术支持服务页面:<https://jeesite.com/docs/support/>
## 今后如何升级?

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>5.0.2-SNAPSHOT</version>
<version>4.5.0-SNAPSHOT</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
@@ -34,7 +34,7 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>${commons-text.version}</version>
<version>${commons-text.version}</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
@@ -48,7 +48,7 @@
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>${commons-beanutils.version}</version>
<version>${commons-beanutils.version}</version>
</dependency>
<!-- Java serialization -->
@@ -243,7 +243,6 @@
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework</groupId>

View File

@@ -6,8 +6,6 @@ package com.jeesite.common.idgen;
import java.util.Random;
import org.apache.commons.lang3.StringUtils;
/**
* 来自于twitter项目snowflake的id产生方案全局唯一时间有序。
* 64位ID (42(毫秒)+5(机器ID)+5(业务编码)+12(重复累加))
@@ -44,39 +42,23 @@ public class IdWorker {
private final long datacenterId;
public IdWorker(long workerId, long datacenterId) {
String wid = System.getProperty("workerId");
if (StringUtils.isNotBlank(wid)) {
try {
workerId = Integer.parseInt(wid);
} catch (Exception e) {
throw new IllegalArgumentException(
"jvm param -DworkerId can't be greater than %d or less than 0");
}
}
String dcid = System.getProperty("datacenterId");
if (StringUtils.isNotBlank(dcid)) {
try {
workerId = Integer.parseInt(dcid);
} catch (Exception e) {
throw new IllegalArgumentException(
"jvm param -DdatacenterId can't be greater than %d or less than 0");
}
}
if (workerId == -1){
workerId = new Random().nextInt((int)maxWorkerId);
}
if (datacenterId == -1){
datacenterId = new Random().nextInt((int)maxDatacenterId);
}
if (workerId > maxWorkerId || workerId < 0) {
throw new IllegalArgumentException(
"worker Id can't be greater than %d or less than 0");
if (workerId == -1){
this.workerId = new Random().nextInt((int)maxWorkerId);
}else{
throw new IllegalArgumentException(
"worker Id can't be greater than %d or less than 0");
}
}else{
this.workerId = workerId;
}
if (datacenterId > maxDatacenterId || datacenterId < 0) {
throw new IllegalArgumentException(
"datacenter Id can't be greater than %d or less than 0");
if (datacenterId == -1){
this.datacenterId = new Random().nextInt((int)maxDatacenterId);
}else{
throw new IllegalArgumentException(
"datacenter Id can't be greater than %d or less than 0");
}
}else{
this.datacenterId = datacenterId;
}

View File

@@ -171,7 +171,7 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
return ObjectUtils.serializeFst(object);
}
} catch (Exception e) {
logger.error("serialize: {}", e.getMessage());
logger.error("serialize: {}", e.getMessage(), e);
}
return null;
}
@@ -214,7 +214,7 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
}
long totalTime = System.currentTimeMillis() - beginTime;
if (totalTime > 30000){
logger.warn(object.getClass() + " serialize time: " + TimeUtils.formatTime(totalTime));
logger.warn(object.getClass() + " serialize time: " + TimeUtils.formatDateAgo(totalTime));
}
return bytes;
}
@@ -240,7 +240,7 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
}
long totalTime = System.currentTimeMillis() - beginTime;
if (totalTime > 30000 && object != null){
logger.warn(object.getClass() + " unserialize time: " + TimeUtils.formatTime(totalTime));
logger.warn(object.getClass() + " unserialize time: " + TimeUtils.formatDateAgo(totalTime));
}
return object;
}
@@ -248,7 +248,7 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
private static ThreadLocal<FSTConfiguration> fstConfiguration =
new NamedThreadLocal<FSTConfiguration>("FSTConfiguration") {
@Override
public FSTConfiguration initialValue() {
public FSTConfiguration initialValue() {
return FSTConfiguration.createDefaultConfiguration();
}
};
@@ -266,7 +266,7 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
byte[] bytes = fstConfiguration.get().asByteArray(object);
long totalTime = System.currentTimeMillis() - beginTime;
if (totalTime > 30000){
logger.warn(object.getClass() + " fst serialize time: " + TimeUtils.formatTime(totalTime));
logger.warn(object.getClass() + " fst serialize time: " + TimeUtils.formatDateAgo(totalTime));
}
return bytes;
}
@@ -284,7 +284,7 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
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));
logger.warn(object.getClass() + " fst unserialize time: " + TimeUtils.formatDateAgo(totalTime));
}
return object;
}

View File

@@ -13,31 +13,10 @@ import java.util.Date;
*/
public class TimeUtils {
public static final String[] CN = new String[] {"毫秒", "", "", "", ""};
public static final String[] EN = new String[] {" millisecond ", " second", " minute", " hour", " day"};
public static final String[] AGO_CN = new String[] {"刚刚", "秒前", "分钟前", "小时前", "天前"};
public static final String[] AGO_EN = new String[] {"just now", " seconds ago", " minutes ago", " hours ago", " days ago"};
/**
* 将毫秒数转换为xx天xx时xx分xx秒v5.1 替换为 formatTime
* 将毫秒数转换为xx天xx时xx分xx秒
*/
@Deprecated
public static String formatDateAgo(long millisecond) {
return formatTime(millisecond, CN);
}
/**
* 将毫秒数转换为xx天xx时xx分xx秒
*/
public static String formatTime(long millisecond) {
return formatTime(millisecond, CN);
}
/**
* 将毫秒数转换为xx天xx时xx分xx秒
*/
public static String formatTime(long millisecond, String[] lang) {
long ms = millisecond;
int ss = 1000;
int mi = ss * 60;
@@ -49,19 +28,19 @@ public class TimeUtils {
long second = (ms - day * dd - hour * hh - minute * mi) / ss;
StringBuilder sb = new StringBuilder();
if (ms >= 0 && ms < 1000) {
sb.append(ms).append(lang[0]);
sb.append(ms).append("毫秒");
} else {
if (day > 0) {
sb.append(day).append(lang[4]);
sb.append(day).append("");
}
if (hour > 0) {
sb.append(hour).append(lang[3]);
sb.append(hour).append("");
}
if (minute > 0) {
sb.append(minute).append(lang[2]);
sb.append(minute).append("");
}
if (second > 0) {
sb.append(second).append(lang[1]);
sb.append(second).append("");
}
}
return sb.toString();
@@ -78,39 +57,32 @@ public class TimeUtils {
* 将过去的时间转为为刚刚xx秒xx分钟xx小时前、xx天前大于3天的显示日期
*/
public static String formatTimeAgo(Date dateTime) {
return formatTimeAgo(dateTime, AGO_CN);
}
/**
* 将过去的时间转为为刚刚xx秒xx分钟xx小时前、xx天前大于3天的显示日期
*/
public static String formatTimeAgo(Date dateTime, String[] lang) {
String interval = null;
// 得出的时间间隔是毫秒
long time = System.currentTimeMillis() - dateTime.getTime();
// 如果时间间隔小于10秒则显示“刚刚”time/10得出的时间间隔的单位是秒
if (time / 1000 < 10 && time / 1000 >= 0) {
interval = lang[0];
interval = "刚刚";
}
// 如果时间间隔大于24小时则显示多少天前
else if (time / 3600000 < 24 * 4 && time / 3600000 >= 24) {
int d = (int) (time / (3600000 * 24));// 得出的时间间隔的单位是天
interval = d + lang[4];
interval = d + "天前";
}
// 如果时间间隔小于24小时则显示多少小时前
else if (time / 3600000 < 24 && time / 3600000 >= 1) {
int h = (int) (time / 3600000);// 得出的时间间隔的单位是小时
interval = h + lang[3];
interval = h + "小时前";
}
// 如果时间间隔小于60分钟则显示多少分钟前
else if (time / 60000 < 60 && time / 60000 >= 1) {
int m = (int) ((time % 3600000) / 60000);// 得出的时间间隔的单位是分钟
interval = m + lang[2];
interval = m + "分钟前";
}
// 如果时间间隔小于60秒则显示多少秒前
else if (time / 1000 < 60 && time / 1000 >= 10) {
int se = (int) ((time % 60000) / 1000);
interval = se + lang[1];
interval = se + "秒前";
}
// 大于3天的则显示正常的时间但是不显示秒
else {

View File

@@ -32,6 +32,7 @@ import com.fasterxml.jackson.databind.introspect.Annotated;
import com.fasterxml.jackson.databind.introspect.AnnotatedMethod;
import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector;
import com.fasterxml.jackson.databind.util.JSONPObject;
//import com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule;
import com.jeesite.common.collect.ListUtils;
import com.jeesite.common.io.PropertiesUtils;
import com.jeesite.common.lang.DateUtils;

View File

@@ -116,7 +116,7 @@ public class VideoUtils {
log.error("视频剪切图片失败", e);
}
}
log.debug("视频剪切图片" + (statusTemp ? "成功" : "失败") + ",用时:" + TimeUtils.formatTime(System.currentTimeMillis() - startTime));
log.debug("视频剪切图片" + (statusTemp ? "成功" : "失败") + ",用时:" + TimeUtils.formatDateAgo(System.currentTimeMillis() - startTime));
return statusTemp;
}
@@ -142,7 +142,7 @@ public class VideoUtils {
}
log.debug("删除临时文件");
FileUtils.deleteFile(tempFile);
log.debug("视频转换" + (statusTemp ? "成功" : "失败") + ",用时:" + TimeUtils.formatTime(System.currentTimeMillis() - startTime));
log.debug("视频转换" + (statusTemp ? "成功" : "失败") + ",用时:" + TimeUtils.formatDateAgo(System.currentTimeMillis() - startTime));
return statusTemp;
}

View File

@@ -15,7 +15,7 @@ import com.jeesite.common.io.PropertiesUtils;
* 发送电子邮件
*/
public class EmailUtils {
private final static Logger logger = LoggerFactory.getLogger(EmailUtils.class);
/**
@@ -42,10 +42,10 @@ public class EmailUtils {
*/
@Deprecated
public static boolean send(String fromAddress, String fromPassword, String fromHostName,
String sslOnConnect, String sslSmtpPort, String toAddress, String subject, String content) {
String sslOnConnect, String sslSmtpPort, String toAddress, String subject, String content) {
return send(fromAddress, fromPassword, fromHostName, 25, sslOnConnect, sslSmtpPort, toAddress, subject, content);
}
/**
* 发送邮件
* @param toAddress 接收地址
@@ -54,7 +54,7 @@ public class EmailUtils {
* @return
*/
public static boolean send(String fromAddress, String fromPassword, String fromHostName, Integer smtpPort,
String sslOnConnect, String sslSmtpPort, String toAddress, String subject, String content) {
String sslOnConnect, String sslSmtpPort, String toAddress, String subject, String content) {
try {
HtmlEmail htmlEmail = new HtmlEmail();
// 发送地址
@@ -82,7 +82,7 @@ public class EmailUtils {
// 其他信息
htmlEmail.setCharset(EncodeUtils.UTF_8);
// 发送
htmlEmail.send();
return true;
@@ -91,10 +91,10 @@ public class EmailUtils {
}
return false;
}
// public static void main(String[] args) {
// EmailUtils.send("jeesite_demo@163.com", "jeesitedemo1234", "smtp.163.com",
// "false", "465", "jeesite_demo@163.com", "测试邮件", "测试<b>邮件</b>的内容");
// }
}

View File

@@ -288,10 +288,7 @@ abstract class VFS {
// Try each implementation class until a valid one is found
VFS vfs = null;
for (int i = 0; true; i++) {
if (!(vfs == null || !vfs.isValid())) {
break;
}
for (int i = 0; vfs == null || !vfs.isValid(); i++) {
Class<? extends VFS> impl = impls.get(i);
try {
vfs = impl.getDeclaredConstructor().newInstance();
@@ -305,7 +302,7 @@ abstract class VFS {
}
}
log.debug("Using VFS adapter " + vfs == null ? null : vfs.getClass().getName());
log.debug("Using VFS adapter " + vfs.getClass().getName());
return VFS.instance = vfs;
}

View File

@@ -143,7 +143,7 @@ public class PinyinUtils {
if (input == null){
return null;
}
char c[] = input.toCharArray();
char[] c = input.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] == '\u3000') {
c[i] = ' ';
@@ -156,7 +156,6 @@ public class PinyinUtils {
// public static void main(String[] args) {
// String str = "你好123🅻🅾🆅🅴、世界abc,~!#$_Sdf-";
// String str = "你好123世界abc,~!#$_Sdf-";
// System.out.println(getFirstSpell(str));
// System.out.println(getFirstSpell(str, false));
// System.out.println(getFullSpell(str));

View File

@@ -26,8 +26,8 @@ import com.jeesite.common.ueditor.define.State;
public class BinaryUploader {
public static final State save(HttpServletRequest request,
Map<String, Object> conf) {
Map<String, Object> conf) {
String contentType = request.getContentType();
if (!("POST".equals(request.getMethod()) && contentType != null
&& contentType.startsWith("multipart/"))) {
@@ -83,22 +83,22 @@ public class BinaryUploader {
if (storageState != null && storageState.isSuccess()) {
int actionCode = ((Integer) conf.get("actionCode")).intValue();
String ctx = request.getContextPath(); // ThinkGem 修正上传图片后返回无contextpath问题
// 上传图片后,进行图片压缩
if (actionCode == ActionMap.UPLOAD_IMAGE){
// 如果开启了压缩图片
if ((Boolean)conf.get("imageCompressEnable")){
Integer maxWidth = (Integer)conf.get("imageCompressBorder");
ImageUtils.thumbnails(new File(physicalPath), maxWidth, -1, null);
}
}
// 上传成功后 转换格式 按照新的视频格式 返回前台 ThinkGem
else if(actionCode == ActionMap.UPLOAD_VIDEO){
final VideoUtils v = new VideoUtils(physicalPath);
// 先截图
// 先截图
if (v.cutPic()){
// 开启进程,在转换视频文件
Thread thread = new Thread("video-convert") {
@@ -113,21 +113,21 @@ public class BinaryUploader {
}
};
thread.setDaemon(true);
thread.start();
thread.start();
storageState.putInfo("url", ctx + PathFormat.format(savePath) + "." + v.getOutputFileExtension());
storageState.putInfo("type", "." + v.getOutputFileExtension());
storageState.putInfo("original", originFileName +"."+ v.getInputFileExtension());
// Ueditor编辑器上传文件完成后调用事件
StorageManager.uploadFileSuccess(physicalPath, storageState);
return storageState;
}
}
storageState.putInfo("url", ctx + PathFormat.format(savePath));
storageState.putInfo("type", suffix);
storageState.putInfo("original", originFileName + suffix);
// UEditor上传文件成功后调用事件
StorageManager.uploadFileSuccess(physicalPath, storageState);
}
@@ -143,5 +143,5 @@ public class BinaryUploader {
return list.contains(type);
}
}

View File

@@ -30,11 +30,11 @@ public class IdcardUtils extends StringUtils {
"62", "63", "64", "65", "71", "81", "82", "91" };
/** 每位加权因子 */
public static final int power[] = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9,
public static final int[] power = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9,
10, 5, 8, 4, 2 };
/** 第18位校检码 */
public static final String verifyCode[] = { "1", "0", "X", "9", "8", "7",
public static final String[] verifyCode = { "1", "0", "X", "9", "8", "7",
"6", "5", "4", "3", "2" };
/** 最低年限 */
public static final int MIN = 1930;
@@ -272,7 +272,7 @@ public class IdcardUtils extends StringUtils {
if (card.length() != 8 && card.length() != 9 && idCard.length() != 10) {
return null;
}
if (idCard.matches("^[a-zA-Z][0-9]{9}$")) {
if (idCard.matches("^[a-zA-Z][0-9]{9}$")) { // 台湾
info[0] = "台湾";
System.out.println("11111");
String char2 = idCard.substring(1, 2);
@@ -289,10 +289,10 @@ public class IdcardUtils extends StringUtils {
return info;
}
info[2] = validateTWCard(idCard) ? "true" : "false";
} else if (idCard.matches("^[1|5|7][0-9]{6}\\(?[0-9A-Z]\\)?$")) {
} else if (idCard.matches("^[1|5|7][0-9]{6}\\(?[0-9A-Z]\\)?$")) { // 澳门
info[0] = "澳门";
info[1] = "N";
} else if (idCard.matches("^[A-Z]{1,2}[0-9]{6}\\(?[0-9A]\\)?$")) {
} else if (idCard.matches("^[A-Z]{1,2}[0-9]{6}\\(?[0-9A]\\)?$")) { // 香港
info[0] = "香港";
info[1] = "N";
info[2] = validateHKCard(idCard) ? "true" : "false";

View File

@@ -97,6 +97,7 @@ public class ExcelExport implements Closeable{
* 构造函数
* @param title 表格标题,传“空值”,表示无标题
* @param cls 实体对象通过annotation.ExportField获取标题
* @param type 导出类型1:导出数据)
*/
public ExcelExport(String title, Class<?> cls){
this(title, cls, Type.EXPORT);

View File

@@ -24,7 +24,7 @@ public class MoneyType implements FieldType {
* 获取对象值(导入)
*/
@Override
public Object getValue(String val) {
public Object getValue(String val) {
return val == null ? StringUtils.EMPTY : StringUtils.replace(val, ",", StringUtils.EMPTY);
}
@@ -32,7 +32,7 @@ public class MoneyType implements FieldType {
* 获取对象值(导出)
*/
@Override
public String setValue(Object val) {
public String setValue(Object val) {
return val == null ? StringUtils.EMPTY : nf.format(val);
}
@@ -40,7 +40,7 @@ public class MoneyType implements FieldType {
* 获取对象值格式(导出)
*/
@Override
public String getDataFormat() {
public String getDataFormat() {
return "0.00";
}

View File

@@ -164,7 +164,7 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
.sidebar-menu {padding:0 8px 0 7px;}
.sidebar-menu li>a>.pull-right-container {left:0;}
.sidebar-menu .treeview-item.active>a {color:#1890ff;background-color:#e7f4ff;border-right:0;border-radius:6px;}
.sidebar-menu .treeview-item.active > a {color:#1890ff;background-color:#e7f4ff;border-right:0;border-radius:6px;}
.content-wrapper, .right-side, body {background-color:#f0f2f5;}
@@ -189,7 +189,7 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
.select2-container--default .select2-results__option--highlighted[aria-selected],
.wup_container .placeholder .webuploader-pick {background-color:#1890ff!important;border-color:#1890ff;}
.form-unit, th[aria-selected=true] .ui-jqgrid-sortable {color:#1890ff;}
.form-unit {border-bottom:1px solid #eee;}
.form-unit {border-bottom: 1px solid #eee;}
.box-main>.box-header {border-bottom-color:#eeeeee;}
.box-main>.box-header .box-title .fa {color:#1890ff;}

View File

@@ -228,6 +228,3 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
.ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {background:#f5f5f5;}
.ui-jqgrid tr.ui-state-highlight.ui-row-ltr td {background-color:#ecf9ff;}
/* .ui-jqgrid tr.ui-row-ltr td {border-right:0!important;} 解开注释,可去除表格单元格的竖边框线 */
.ui-jqgrid .ui-jqgrid-frozen .ui-jqgrid-htable th div {height:46px!important;}
.ui-jqgrid .ui-jqgrid-htable th div {padding:15px 0 15px 2px;}
.ui-jqgrid tr.jqgrow td {height: 49px;}

View File

@@ -164,7 +164,7 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
.sidebar-menu {padding:0 8px 0 7px;}
.sidebar-menu li>a>.pull-right-container {left:0;}
.sidebar-menu .treeview-item.active>a {color:#2a50ec;background-color:#edf2fc;border-right:0;border-radius:6px;}
.sidebar-menu .treeview-item.active > a {color:#2a50ec;background-color:#edf2fc;border-right:0;border-radius:6px;}
.content-wrapper, .right-side, body {background-color:#f0f2f5;}
@@ -189,7 +189,7 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
.select2-container--default .select2-results__option--highlighted[aria-selected],
.wup_container .placeholder .webuploader-pick {background-color:#1e5edb!important;border-color:#1e5edb!important;}
.form-unit, th[aria-selected=true] .ui-jqgrid-sortable {color:#1e5edb;}
.form-unit {border-bottom:1px solid #eee;}
.form-unit {border-bottom: 1px solid #eee;}
.box-main>.box-header {border-bottom-color:#eeeeee;}
.box-main>.box-header .box-title .fa {color:#1e5edb;}

View File

@@ -228,6 +228,3 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
.ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {background:#f5f5f5;}
.ui-jqgrid tr.ui-state-highlight.ui-row-ltr td {background-color:#f0f5ff;}
/* .ui-jqgrid tr.ui-row-ltr td {border-right:0!important;} 解开注释,可去除表格单元格的竖边框线 */
.ui-jqgrid .ui-jqgrid-frozen .ui-jqgrid-htable th div {height:46px!important;}
.ui-jqgrid .ui-jqgrid-htable th div {padding:15px 0 15px 2px;}
.ui-jqgrid tr.jqgrow td {height: 49px;}

View File

@@ -289,9 +289,6 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
.ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {background:#222;}
.ui-jqgrid tr.ui-state-highlight.ui-row-ltr td {background-color:#1f1f1f;}
/* .ui-jqgrid tr.ui-row-ltr td {border-right:0!important;} 解开注释,可去除表格单元格的竖边框线 */
.ui-jqgrid .ui-jqgrid-frozen .ui-jqgrid-htable th div {height:46px!important;}
.ui-jqgrid .ui-jqgrid-htable th div {padding:15px 0 15px 2px;}
.ui-jqgrid tr.jqgrow td {height: 49px;}
.ui-jqgrid .frozen-left th.ui-th-ltr, .ui-jqgrid .frozen-left tr.ui-row-ltr td {border-right-color:#333}
.ui-jqgrid .frozen-right th.ui-th-ltr, .ui-jqgrid .frozen-right tr.ui-row-ltr td {border-left-color:#333}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,752 @@
/*!
* jQuery Migrate - v1.4.1 - 2016-05-19
* Copyright jQuery Foundation and other contributors
*/
(function( jQuery, window, undefined ) {
// See http://bugs.jquery.com/ticket/13335
// "use strict";
jQuery.migrateVersion = "1.4.1";
var warnedAbout = {};
// List of warnings already given; public read only
jQuery.migrateWarnings = [];
// Set to true to prevent console output; migrateWarnings still maintained
// jQuery.migrateMute = false;
// Show a message on the console so devs know we're active
//if ( window.console && window.console.log ) {
// window.console.log( "JQMIGRATE: Migrate is installed" +
// ( jQuery.migrateMute ? "" : " with logging active" ) +
// ", version " + jQuery.migrateVersion );
//}
// Set to false to disable traces that appear with warnings
if ( jQuery.migrateTrace === undefined ) {
jQuery.migrateTrace = true;
}
// Forget any warnings we've already given; public
jQuery.migrateReset = function() {
warnedAbout = {};
jQuery.migrateWarnings.length = 0;
};
function migrateWarn( msg) {
var console = window.console;
if ( !warnedAbout[ msg ] ) {
warnedAbout[ msg ] = true;
jQuery.migrateWarnings.push( msg );
if ( console && console.warn && !jQuery.migrateMute ) {
console.warn( "JQMIGRATE: " + msg );
if ( jQuery.migrateTrace && console.trace ) {
console.trace();
}
}
}
}
function migrateWarnProp( obj, prop, value, msg ) {
if ( Object.defineProperty ) {
// On ES5 browsers (non-oldIE), warn if the code tries to get prop;
// allow property to be overwritten in case some other plugin wants it
try {
Object.defineProperty( obj, prop, {
configurable: true,
enumerable: true,
get: function() {
migrateWarn( msg );
return value;
},
set: function( newValue ) {
migrateWarn( msg );
value = newValue;
}
});
return;
} catch( err ) {
// IE8 is a dope about Object.defineProperty, can't warn there
}
}
// Non-ES5 (or broken) browser; just set the property
jQuery._definePropertyBroken = true;
obj[ prop ] = value;
}
if ( document.compatMode === "BackCompat" ) {
// jQuery has never supported or tested Quirks Mode
migrateWarn( "jQuery is not compatible with Quirks Mode" );
}
var attrFn = jQuery( "<input/>", { size: 1 } ).attr("size") && jQuery.attrFn,
oldAttr = jQuery.attr,
valueAttrGet = jQuery.attrHooks.value && jQuery.attrHooks.value.get ||
function() { return null; },
valueAttrSet = jQuery.attrHooks.value && jQuery.attrHooks.value.set ||
function() { return undefined; },
rnoType = /^(?:input|button)$/i,
rnoAttrNodeType = /^[238]$/,
rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
ruseDefault = /^(?:checked|selected)$/i;
// jQuery.attrFn
migrateWarnProp( jQuery, "attrFn", attrFn || {}, "jQuery.attrFn is deprecated" );
jQuery.attr = function( elem, name, value, pass ) {
var lowerName = name.toLowerCase(),
nType = elem && elem.nodeType;
if ( pass ) {
// Since pass is used internally, we only warn for new jQuery
// versions where there isn't a pass arg in the formal params
if ( oldAttr.length < 4 ) {
migrateWarn("jQuery.fn.attr( props, pass ) is deprecated");
}
if ( elem && !rnoAttrNodeType.test( nType ) &&
(attrFn ? name in attrFn : jQuery.isFunction(jQuery.fn[name])) ) {
return jQuery( elem )[ name ]( value );
}
}
// Warn if user tries to set `type`, since it breaks on IE 6/7/8; by checking
// for disconnected elements we don't warn on $( "<button>", { type: "button" } ).
if ( name === "type" && value !== undefined && rnoType.test( elem.nodeName ) && elem.parentNode ) {
migrateWarn("Can't change the 'type' of an input or button in IE 6/7/8");
}
// Restore boolHook for boolean property/attribute synchronization
if ( !jQuery.attrHooks[ lowerName ] && rboolean.test( lowerName ) ) {
jQuery.attrHooks[ lowerName ] = {
get: function( elem, name ) {
// Align boolean attributes with corresponding properties
// Fall back to attribute presence where some booleans are not supported
var attrNode,
property = jQuery.prop( elem, name );
return property === true || typeof property !== "boolean" &&
( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
name.toLowerCase() :
undefined;
},
set: function( elem, value, name ) {
var propName;
if ( value === false ) {
// Remove boolean attributes when set to false
jQuery.removeAttr( elem, name );
} else {
// value is true since we know at this point it's type boolean and not false
// Set boolean attributes to the same name and set the DOM property
propName = jQuery.propFix[ name ] || name;
if ( propName in elem ) {
// Only set the IDL specifically if it already exists on the element
elem[ propName ] = true;
}
elem.setAttribute( name, name.toLowerCase() );
}
return name;
}
};
// Warn only for attributes that can remain distinct from their properties post-1.9
if ( ruseDefault.test( lowerName ) ) {
migrateWarn( "jQuery.fn.attr('" + lowerName + "') might use property instead of attribute" );
}
}
return oldAttr.call( jQuery, elem, name, value );
};
// attrHooks: value
jQuery.attrHooks.value = {
get: function( elem, name ) {
var nodeName = ( elem.nodeName || "" ).toLowerCase();
if ( nodeName === "button" ) {
return valueAttrGet.apply( this, arguments );
}
if ( nodeName !== "input" && nodeName !== "option" ) {
migrateWarn("jQuery.fn.attr('value') no longer gets properties");
}
return name in elem ?
elem.value :
null;
},
set: function( elem, value ) {
var nodeName = ( elem.nodeName || "" ).toLowerCase();
if ( nodeName === "button" ) {
return valueAttrSet.apply( this, arguments );
}
if ( nodeName !== "input" && nodeName !== "option" ) {
migrateWarn("jQuery.fn.attr('value', val) no longer sets properties");
}
// Does not return so that setAttribute is also used
elem.value = value;
}
};
var matched, browser,
oldInit = jQuery.fn.init,
oldFind = jQuery.find,
oldParseJSON = jQuery.parseJSON,
rspaceAngle = /^\s*</,
rattrHashTest = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,
rattrHashGlob = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g,
// Note: XSS check is done below after string is trimmed
rquickExpr = /^([^<]*)(<[\w\W]+>)([^>]*)$/;
// $(html) "looks like html" rule change
jQuery.fn.init = function( selector, context, rootjQuery ) {
var match, ret;
if ( selector && typeof selector === "string" ) {
if ( !jQuery.isPlainObject( context ) &&
(match = rquickExpr.exec( jQuery.trim( selector ) )) && match[ 0 ] ) {
// This is an HTML string according to the "old" rules; is it still?
if ( !rspaceAngle.test( selector ) ) {
migrateWarn("$(html) HTML strings must start with '<' character");
}
if ( match[ 3 ] ) {
migrateWarn("$(html) HTML text after last tag is ignored");
}
// Consistently reject any HTML-like string starting with a hash (gh-9521)
// Note that this may break jQuery 1.6.x code that otherwise would work.
if ( match[ 0 ].charAt( 0 ) === "#" ) {
migrateWarn("HTML string cannot start with a '#' character");
jQuery.error("JQMIGRATE: Invalid selector string (XSS)");
}
// Now process using loose rules; let pre-1.8 play too
// Is this a jQuery context? parseHTML expects a DOM element (#178)
if ( context && context.context && context.context.nodeType ) {
context = context.context;
}
if ( jQuery.parseHTML ) {
return oldInit.call( this,
jQuery.parseHTML( match[ 2 ], context && context.ownerDocument ||
context || document, true ), context, rootjQuery );
}
}
}
ret = oldInit.apply( this, arguments );
// Fill in selector and context properties so .live() works
if ( selector && selector.selector !== undefined ) {
// A jQuery object, copy its properties
ret.selector = selector.selector;
ret.context = selector.context;
} else {
ret.selector = typeof selector === "string" ? selector : "";
if ( selector ) {
ret.context = selector.nodeType? selector : context || document;
}
}
return ret;
};
jQuery.fn.init.prototype = jQuery.fn;
jQuery.find = function( selector ) {
var args = Array.prototype.slice.call( arguments );
// Support: PhantomJS 1.x
// String#match fails to match when used with a //g RegExp, only on some strings
if ( typeof selector === "string" && rattrHashTest.test( selector ) ) {
// The nonstandard and undocumented unquoted-hash was removed in jQuery 1.12.0
// First see if qS thinks it's a valid selector, if so avoid a false positive
try {
document.querySelector( selector );
} catch ( err1 ) {
// Didn't *look* valid to qSA, warn and try quoting what we think is the value
selector = selector.replace( rattrHashGlob, function( _, attr, op, value ) {
return "[" + attr + op + "\"" + value + "\"]";
} );
// If the regexp *may* have created an invalid selector, don't update it
// Note that there may be false alarms if selector uses jQuery extensions
try {
document.querySelector( selector );
migrateWarn( "Attribute selector with '#' must be quoted: " + args[ 0 ] );
args[ 0 ] = selector;
} catch ( err2 ) {
migrateWarn( "Attribute selector with '#' was not fixed: " + args[ 0 ] );
}
}
}
return oldFind.apply( this, args );
};
// Copy properties attached to original jQuery.find method (e.g. .attr, .isXML)
var findProp;
for ( findProp in oldFind ) {
if ( Object.prototype.hasOwnProperty.call( oldFind, findProp ) ) {
jQuery.find[ findProp ] = oldFind[ findProp ];
}
}
// Let $.parseJSON(falsy_value) return null
jQuery.parseJSON = function( json ) {
if ( !json ) {
migrateWarn("jQuery.parseJSON requires a valid JSON string");
return null;
}
return oldParseJSON.apply( this, arguments );
};
jQuery.uaMatch = function( ua ) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
/(webkit)[ \/]([\w.]+)/.exec( ua ) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
/(msie) ([\w.]+)/.exec( ua ) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
[];
return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
// Don't clobber any existing jQuery.browser in case it's different
if ( !jQuery.browser ) {
matched = jQuery.uaMatch( navigator.userAgent );
browser = {};
if ( matched.browser ) {
browser[ matched.browser ] = true;
browser.version = matched.version;
}
// Chrome is Webkit, but Webkit is also Safari.
if ( browser.chrome ) {
browser.webkit = true;
} else if ( browser.webkit ) {
browser.safari = true;
}
jQuery.browser = browser;
}
// Warn if the code tries to get jQuery.browser
migrateWarnProp( jQuery, "browser", jQuery.browser, "jQuery.browser is deprecated" );
// jQuery.boxModel deprecated in 1.3, jQuery.support.boxModel deprecated in 1.7
jQuery.boxModel = jQuery.support.boxModel = (document.compatMode === "CSS1Compat");
migrateWarnProp( jQuery, "boxModel", jQuery.boxModel, "jQuery.boxModel is deprecated" );
migrateWarnProp( jQuery.support, "boxModel", jQuery.support.boxModel, "jQuery.support.boxModel is deprecated" );
jQuery.sub = function() {
function jQuerySub( selector, context ) {
return new jQuerySub.fn.init( selector, context );
}
jQuery.extend( true, jQuerySub, this );
jQuerySub.superclass = this;
jQuerySub.fn = jQuerySub.prototype = this();
jQuerySub.fn.constructor = jQuerySub;
jQuerySub.sub = this.sub;
jQuerySub.fn.init = function init( selector, context ) {
var instance = jQuery.fn.init.call( this, selector, context, rootjQuerySub );
return instance instanceof jQuerySub ?
instance :
jQuerySub( instance );
};
jQuerySub.fn.init.prototype = jQuerySub.fn;
var rootjQuerySub = jQuerySub(document);
migrateWarn( "jQuery.sub() is deprecated" );
return jQuerySub;
};
// The number of elements contained in the matched element set
jQuery.fn.size = function() {
migrateWarn( "jQuery.fn.size() is deprecated; use the .length property" );
return this.length;
};
var internalSwapCall = false;
// If this version of jQuery has .swap(), don't false-alarm on internal uses
if ( jQuery.swap ) {
jQuery.each( [ "height", "width", "reliableMarginRight" ], function( _, name ) {
var oldHook = jQuery.cssHooks[ name ] && jQuery.cssHooks[ name ].get;
if ( oldHook ) {
jQuery.cssHooks[ name ].get = function() {
var ret;
internalSwapCall = true;
ret = oldHook.apply( this, arguments );
internalSwapCall = false;
return ret;
};
}
});
}
jQuery.swap = function( elem, options, callback, args ) {
var ret, name,
old = {};
if ( !internalSwapCall ) {
migrateWarn( "jQuery.swap() is undocumented and deprecated" );
}
// Remember the old values, and insert the new ones
for ( name in options ) {
old[ name ] = elem.style[ name ];
elem.style[ name ] = options[ name ];
}
ret = callback.apply( elem, args || [] );
// Revert the old values
for ( name in options ) {
elem.style[ name ] = old[ name ];
}
return ret;
};
// Ensure that $.ajax gets the new parseJSON defined in core.js
jQuery.ajaxSetup({
converters: {
"text json": jQuery.parseJSON
}
});
var oldFnData = jQuery.fn.data;
jQuery.fn.data = function( name ) {
var ret, evt,
elem = this[0];
// Handles 1.7 which has this behavior and 1.8 which doesn't
if ( elem && name === "events" && arguments.length === 1 ) {
ret = jQuery.data( elem, name );
evt = jQuery._data( elem, name );
if ( ( ret === undefined || ret === evt ) && evt !== undefined ) {
migrateWarn("Use of jQuery.fn.data('events') is deprecated");
return evt;
}
}
return oldFnData.apply( this, arguments );
};
var rscriptType = /\/(java|ecma)script/i;
// Since jQuery.clean is used internally on older versions, we only shim if it's missing
if ( !jQuery.clean ) {
jQuery.clean = function( elems, context, fragment, scripts ) {
// Set context per 1.8 logic
context = context || document;
context = !context.nodeType && context[0] || context;
context = context.ownerDocument || context;
migrateWarn("jQuery.clean() is deprecated");
var i, elem, handleScript, jsTags,
ret = [];
jQuery.merge( ret, jQuery.buildFragment( elems, context ).childNodes );
// Complex logic lifted directly from jQuery 1.8
if ( fragment ) {
// Special handling of each script element
handleScript = function( elem ) {
// Check if we consider it executable
if ( !elem.type || rscriptType.test( elem.type ) ) {
// Detach the script and store it in the scripts array (if provided) or the fragment
// Return truthy to indicate that it has been handled
return scripts ?
scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :
fragment.appendChild( elem );
}
};
for ( i = 0; (elem = ret[i]) != null; i++ ) {
// Check if we're done after handling an executable script
if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) {
// Append to fragment and handle embedded scripts
fragment.appendChild( elem );
if ( typeof elem.getElementsByTagName !== "undefined" ) {
// handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration
jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript );
// Splice the scripts into ret after their former ancestor and advance our index beyond them
ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
i += jsTags.length;
}
}
}
}
return ret;
};
}
var eventAdd = jQuery.event.add,
eventRemove = jQuery.event.remove,
eventTrigger = jQuery.event.trigger,
oldToggle = jQuery.fn.toggle,
oldLive = jQuery.fn.live,
oldDie = jQuery.fn.die,
oldLoad = jQuery.fn.load,
ajaxEvents = "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",
rajaxEvent = new RegExp( "\\b(?:" + ajaxEvents + ")\\b" ),
rhoverHack = /(?:^|\s)hover(\.\S+|)\b/,
hoverHack = function( events ) {
if ( typeof( events ) !== "string" || jQuery.event.special.hover ) {
return events;
}
if ( rhoverHack.test( events ) ) {
migrateWarn("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'");
}
return events && events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
};
// Event props removed in 1.9, put them back if needed; no practical way to warn them
if ( jQuery.event.props && jQuery.event.props[ 0 ] !== "attrChange" ) {
jQuery.event.props.unshift( "attrChange", "attrName", "relatedNode", "srcElement" );
}
// Undocumented jQuery.event.handle was "deprecated" in jQuery 1.7
if ( jQuery.event.dispatch ) {
migrateWarnProp( jQuery.event, "handle", jQuery.event.dispatch, "jQuery.event.handle is undocumented and deprecated" );
}
// Support for 'hover' pseudo-event and ajax event warnings
jQuery.event.add = function( elem, types, handler, data, selector ){
if ( elem !== document && rajaxEvent.test( types ) ) {
migrateWarn( "AJAX events should be attached to document: " + types );
}
eventAdd.call( this, elem, hoverHack( types || "" ), handler, data, selector );
};
jQuery.event.remove = function( elem, types, handler, selector, mappedTypes ){
eventRemove.call( this, elem, hoverHack( types ) || "", handler, selector, mappedTypes );
};
jQuery.each( [ "load", "unload", "error" ], function( _, name ) {
jQuery.fn[ name ] = function() {
var args = Array.prototype.slice.call( arguments, 0 );
// If this is an ajax load() the first arg should be the string URL;
// technically this could also be the "Anything" arg of the event .load()
// which just goes to show why this dumb signature has been deprecated!
// jQuery custom builds that exclude the Ajax module justifiably die here.
if ( name === "load" && typeof args[ 0 ] === "string" ) {
return oldLoad.apply( this, args );
}
migrateWarn( "jQuery.fn." + name + "() is deprecated" );
args.splice( 0, 0, name );
if ( arguments.length ) {
return this.bind.apply( this, args );
}
// Use .triggerHandler here because:
// - load and unload events don't need to bubble, only applied to window or image
// - error event should not bubble to window, although it does pre-1.7
// See http://bugs.jquery.com/ticket/11820
this.triggerHandler.apply( this, args );
return this;
};
});
jQuery.fn.toggle = function( fn, fn2 ) {
// Don't mess with animation or css toggles
if ( !jQuery.isFunction( fn ) || !jQuery.isFunction( fn2 ) ) {
return oldToggle.apply( this, arguments );
}
migrateWarn("jQuery.fn.toggle(handler, handler...) is deprecated");
// Save reference to arguments for access in closure
var args = arguments,
guid = fn.guid || jQuery.guid++,
i = 0,
toggler = function( event ) {
// Figure out which function to execute
var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
// Make sure that clicks stop
event.preventDefault();
// and execute the function
return args[ lastToggle ].apply( this, arguments ) || false;
};
// link all the functions, so any of them can unbind this click handler
toggler.guid = guid;
while ( i < args.length ) {
args[ i++ ].guid = guid;
}
return this.click( toggler );
};
jQuery.fn.live = function( types, data, fn ) {
migrateWarn("jQuery.fn.live() is deprecated");
if ( oldLive ) {
return oldLive.apply( this, arguments );
}
jQuery( this.context ).on( types, this.selector, data, fn );
return this;
};
jQuery.fn.die = function( types, fn ) {
migrateWarn("jQuery.fn.die() is deprecated");
if ( oldDie ) {
return oldDie.apply( this, arguments );
}
jQuery( this.context ).off( types, this.selector || "**", fn );
return this;
};
// Turn global events into document-triggered events
jQuery.event.trigger = function( event, data, elem, onlyHandlers ){
if ( !elem && !rajaxEvent.test( event ) ) {
migrateWarn( "Global events are undocumented and deprecated" );
}
return eventTrigger.call( this, event, data, elem || document, onlyHandlers );
};
jQuery.each( ajaxEvents.split("|"),
function( _, name ) {
jQuery.event.special[ name ] = {
setup: function() {
var elem = this;
// The document needs no shimming; must be !== for oldIE
if ( elem !== document ) {
jQuery.event.add( document, name + "." + jQuery.guid, function() {
jQuery.event.trigger( name, Array.prototype.slice.call( arguments, 1 ), elem, true );
});
jQuery._data( this, name, jQuery.guid++ );
}
return false;
},
teardown: function() {
if ( this !== document ) {
jQuery.event.remove( document, name + "." + jQuery._data( this, name ) );
}
return false;
}
};
}
);
jQuery.event.special.ready = {
setup: function() {
if ( this === document ) {
migrateWarn( "'ready' event is deprecated" );
}
}
};
var oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack,
oldFnFind = jQuery.fn.find;
jQuery.fn.andSelf = function() {
migrateWarn("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()");
return oldSelf.apply( this, arguments );
};
jQuery.fn.find = function( selector ) {
var ret = oldFnFind.apply( this, arguments );
ret.context = this.context;
ret.selector = this.selector ? this.selector + " " + selector : selector;
return ret;
};
// jQuery 1.6 did not support Callbacks, do not warn there
if ( jQuery.Callbacks ) {
var oldDeferred = jQuery.Deferred,
tuples = [
// action, add listener, callbacks, .then handlers, final state
[ "resolve", "done", jQuery.Callbacks("once memory"),
jQuery.Callbacks("once memory"), "resolved" ],
[ "reject", "fail", jQuery.Callbacks("once memory"),
jQuery.Callbacks("once memory"), "rejected" ],
[ "notify", "progress", jQuery.Callbacks("memory"),
jQuery.Callbacks("memory") ]
];
jQuery.Deferred = function( func ) {
var deferred = oldDeferred(),
promise = deferred.promise();
deferred.pipe = promise.pipe = function( /* fnDone, fnFail, fnProgress */ ) {
var fns = arguments;
migrateWarn( "deferred.pipe() is deprecated" );
return jQuery.Deferred(function( newDefer ) {
jQuery.each( tuples, function( i, tuple ) {
var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
// deferred.done(function() { bind to newDefer or newDefer.resolve })
// deferred.fail(function() { bind to newDefer or newDefer.reject })
// deferred.progress(function() { bind to newDefer or newDefer.notify })
deferred[ tuple[1] ](function() {
var returned = fn && fn.apply( this, arguments );
if ( returned && jQuery.isFunction( returned.promise ) ) {
returned.promise()
.done( newDefer.resolve )
.fail( newDefer.reject )
.progress( newDefer.notify );
} else {
newDefer[ tuple[ 0 ] + "With" ](
this === promise ? newDefer.promise() : this,
fn ? [ returned ] : arguments
);
}
});
});
fns = null;
}).promise();
};
deferred.isResolved = function() {
migrateWarn( "deferred.isResolved is deprecated" );
return deferred.state() === "resolved";
};
deferred.isRejected = function() {
migrateWarn( "deferred.isRejected is deprecated" );
return deferred.state() === "rejected";
};
if ( func ) {
func.call( deferred, deferred );
}
return deferred;
};
}
})( jQuery, window );

File diff suppressed because one or more lines are too long

View File

@@ -1,43 +1,58 @@
html #layuicss-layer{display:none;position:absolute;width:1989px;}
/**
@Name: layer
**/
.layui-layer-shade, .layui-layer{position:fixed;_position:absolute;pointer-events:auto;}
.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");}
.layui-layer{-webkit-overflow-scrolling:touch;}
.layui-layer{top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:3px;box-shadow:1px 1px 50px rgba(0,0,0,.3);}
/* *html{background-image: url(about:blank); background-attachment: fixed;} */
html #layuicss-layer{display: none; position: absolute; width: 1989px;}
/* common */
.layui-layer-shade, .layui-layer{position:fixed; _position:absolute; pointer-events: auto;}
.layui-layer-shade{top:0; left:0; width:100%; height:100%; _height:expression(document.body.offsetHeight+"px");}
.layui-layer{-webkit-overflow-scrolling: touch;}
.layui-layer{top:150px; left: 0; margin:0; padding:0; background-color:#fff; -webkit-background-clip: content; border-radius: 3px; box-shadow: 1px 1px 50px rgba(0,0,0,.3);}
.layui-layer-close{position:absolute;}
.layui-layer-content{position:relative;overflow:hidden;}
.layui-layer-border{border:1px solid #B2B2B2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2);}
.layui-layer-content{position:relative; overflow: hidden;}
.layui-layer-border{border: 1px solid #B2B2B2; border: 1px solid rgba(0,0,0,.1); box-shadow: 1px 1px 5px rgba(0,0,0,.2);}
.layui-layer-load{background:url(loading-1.gif) #eee center center no-repeat;}
.layui-layer-ico{ background:url(icon.png) no-repeat;}
.layui-layer-dialog .layui-layer-ico,
.layui-layer-setwin a,
.layui-layer-btn a{display:inline-block;*display:inline;*zoom:1;vertical-align:top;}
.layui-layer-btn a{display:inline-block; *display:inline; *zoom:1; vertical-align:top;}
.layui-layer-move{display:none;position:fixed;*position:absolute;left:0px;top:0px;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647;}
.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize;}
.layui-layer-move{display: none; position: fixed; *position: absolute; left: 0px; top: 0px; width: 100%; height: 100%; cursor: move; opacity: 0; filter:alpha(opacity=0); background-color: #fff; z-index: 2147483647;}
.layui-layer-resize{position: absolute; width: 15px; height: 15px; right: 0; bottom: 0; cursor: se-resize;}
.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s;}
/* 动画 */
.layer-anim{-webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration:.3s; animation-duration:.3s;}
@-webkit-keyframes layer-bounceIn {
0% {opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}
100% {opacity:1;-webkit-transform:scale(1);transform:scale(1)}
@-webkit-keyframes layer-bounceIn { /* 默认 */
0% {opacity: 0; -webkit-transform: scale(.5); transform: scale(.5)}
100% {opacity: 1; -webkit-transform: scale(1); transform: scale(1)}
}
@keyframes layer-bounceIn {
0% {opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}
100% {opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}
0% {opacity: 0; -webkit-transform: scale(.5); -ms-transform: scale(.5); transform: scale(.5)}
100% {opacity: 1; -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1)}
}
.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}
.layer-anim-00{-webkit-animation-name: layer-bounceIn;animation-name: layer-bounceIn}
@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}
@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}
@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}
@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);-ms-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}
@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}
@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}
.layui-layer-title{padding:0 80px 0 20px;height:50px;line-height:50px;border-bottom:1px solid #F0F0F0;font-size:14px;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:2px 2px 0 0;}
.layui-layer-setwin{position:absolute;right:20px;*right:0;top:20px;font-size:0;line-height:initial;}
.layui-layer-setwin a{position:relative;width:16px;height:16px;margin-left:19px;font-size:12px;_overflow:hidden;}
/* 标题栏 */
.layui-layer-title{padding:0 80px 0 20px; height: 50px; line-height: 50px; border-bottom:1px solid #F0F0F0; font-size: 14px; color:#333; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; border-radius: 2px 2px 0 0;}
.layui-layer-setwin{position:absolute; right: 15px; *right:0; top: 15px; font-size:0; line-height: initial;}
.layui-layer-setwin a{position:relative; width: 16px; height:16px; margin-left:10px; font-size:12px; _overflow:hidden;}
.layui-layer-setwin .layui-layer-min{display:none!important}
.layui-layer-setwin .layui-layer-min cite{position:absolute;width:14px;height:2px;left:0;top:50%;margin-top:-1px;background-color:#888;cursor:pointer;_overflow:hidden;}
.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA;}
@@ -47,109 +62,130 @@ html #layuicss-layer{display:none;position:absolute;width:1989px;}
.layui-layer-setwin .layui-layer-maxmin:hover{background-size:19px;}
.layui-layer-setwin .layui-layer-close1{background:url(close.svg) center;cursor:pointer;}
.layui-layer-setwin .layui-layer-close1:hover{background-size:19px;}
.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;width:30px;height:30px; margin-left:0;background-position:-149px -31px;*right:-18px;_display:none;}
.layui-layer-setwin .layui-layer-close2{position:absolute; right:-28px; top:-28px; width:30px; height:30px; margin-left:0; background-position:-149px -31px; *right:-18px; _display:none;}
.layui-layer-setwin .layui-layer-close2:hover{ background-position:-180px -31px;}
.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none;}
.layui-layer-btn a{height:28px;line-height:28px;margin:5px 5px 0;padding:0 15px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:3px;font-weight:400;cursor:pointer;text-decoration:none;}
.layui-layer-btn a:hover{opacity:0.9;text-decoration:none;}
.layui-layer-btn a:active{opacity:0.8;}
.layui-layer-btn .layui-layer-btn0{border-color:#1E9FFF;background-color:#1E9FFF;color:#fff;}
.layui-layer-btn-l{text-align:left;}
.layui-layer-btn-c{text-align:center;}
/* 按钮栏 */
.layui-layer-btn{text-align: right; padding: 0 15px 12px; pointer-events: auto; user-select: none; -webkit-user-select: none;}
.layui-layer-btn a{height: 28px; line-height: 28px; margin: 5px 5px 0; padding: 0 15px; border: 1px solid #dedede; background-color:#fff; color: #333; border-radius: 3px; font-weight:400; cursor:pointer; text-decoration: none;}
.layui-layer-btn a:hover{opacity: 0.9; text-decoration: none;}
.layui-layer-btn a:active{opacity: 0.8;}
.layui-layer-btn .layui-layer-btn0{border-color: #1E9FFF; background-color: #1E9FFF; color:#fff;}
.layui-layer-btn-l{text-align: left;}
.layui-layer-btn-c{text-align: center;}
.layui-layer-dialog{min-width:300px;}
.layui-layer-dialog .layui-layer-content{position:relative;padding:20px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto;}
.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute;top:29px;left:22px;_left:-40px;width:30px;height:30px;}
/* 定制化 */
.layui-layer-dialog{min-width: 300px;}
.layui-layer-dialog .layui-layer-content{position: relative; padding:20px; line-height:24px; word-break: break-all; overflow:hidden; font-size:14px; overflow-x: hidden; overflow-y:auto;}
.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute; top:16px; left:15px; _left:-40px; width:30px; height:30px;}
.layui-layer-ico1{background-position:-30px 0 }
.layui-layer-ico2{background-position:-60px 0;}
.layui-layer-ico3{background-position:-90px 0;}
.layui-layer-ico4{background-position:-120px 0;}
.layui-layer-ico5{background-position:-150px 0;}
.layui-layer-ico6{background-position:-180px 0;}
.layui-layer-rim{border:6px solid #8D8D8D;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none;}
.layui-layer-msg{min-width:180px;border:1px solid #D3D4D3;box-shadow:none;}
.layui-layer-hui{min-width:100px; background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,0.6);color:#fff;border:none;}
.layui-layer-hui .layui-layer-content{padding:12px 25px;text-align:center;}
.layui-layer-dialog .layui-layer-padding{padding:30px 30px 30px 70px;text-align:left;}
.layui-layer-page .layui-layer-content{position:relative;overflow:auto;}
.layui-layer-rim{border:6px solid #8D8D8D; border:6px solid rgba(0,0,0,.3); border-radius:5px; box-shadow: none;}
.layui-layer-msg{min-width:180px; border:1px solid #D3D4D3; box-shadow: none;}
.layui-layer-hui{min-width:100px; background-color: #000; filter:alpha(opacity=60); background-color: rgba(0,0,0,0.6); color: #fff; border:none;}
.layui-layer-hui .layui-layer-content{padding:12px 25px; text-align:center;}
.layui-layer-dialog .layui-layer-padding{padding: 20px 20px 20px 55px; text-align: left;}
.layui-layer-page .layui-layer-content{position:relative; overflow:auto;}
.layui-layer-page .layui-layer-btn,.layui-layer-iframe .layui-layer-btn{padding-top:10px;}
.layui-layer-nobg{background:none;}
.layui-layer-iframe iframe{display:block;width:100%;border-radius:3px;}
.layui-layer-iframe iframe{display: block; width: 100%; border-radius: 3px;}
.layui-layer-loading{border-radius:100%;background:none; box-shadow:none; border:none;}
.layui-layer-loading .layui-layer-content{width:60px;height:24px;background:url(loading-0.gif) no-repeat;}
.layui-layer-loading .layui-layer-loading1{width:37px;height:37px;background:url(loading-1.gif) no-repeat;}
.layui-layer-loading .layui-layer-loading2, .layui-layer-ico16{width:32px;height:32px;background:url(loading-2.gif) no-repeat;}
.layui-layer-tips{background:none;box-shadow:none;border:none;}
.layui-layer-tips .layui-layer-content{position:relative;overflow:visible;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:3px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff;}
.layui-layer-tips .layui-layer-close{right:-2px;top:-1px;}
.layui-layer-tips i.layui-layer-TipsG{ position:absolute; width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden;}
.layui-layer-tips i.layui-layer-TipsT, .layui-layer-tips i.layui-layer-TipsB{left:5px;border-right-style:solid;border-right-color:#000;}
.layui-layer-loading{border-radius:100%; background:none; box-shadow:none; border:none;}
.layui-layer-loading .layui-layer-content{width:60px; height:24px; background:url(loading-0.gif) no-repeat;}
.layui-layer-loading .layui-layer-loading1{width:37px; height:37px; background:url(loading-1.gif) no-repeat;}
.layui-layer-loading .layui-layer-loading2, .layui-layer-ico16{width:32px; height:32px; background:url(loading-2.gif) no-repeat;}
.layui-layer-tips{background: none; box-shadow:none; border:none;}
.layui-layer-tips .layui-layer-content{position: relative; overflow:visible; line-height: 22px; min-width: 12px; padding: 8px 15px; font-size: 12px; _float:left; border-radius: 3px; box-shadow: 1px 1px 3px rgba(0,0,0,.2); background-color: #000; color: #fff;}
.layui-layer-tips .layui-layer-close{right:-2px; top:-1px;}
.layui-layer-tips i.layui-layer-TipsG{ position:absolute; width:0; height:0; border-width:8px; border-color:transparent; border-style:dashed; *overflow:hidden;}
.layui-layer-tips i.layui-layer-TipsT, .layui-layer-tips i.layui-layer-TipsB{left:5px; border-right-style:solid; border-right-color: #000;}
.layui-layer-tips i.layui-layer-TipsT{bottom:-8px;}
.layui-layer-tips i.layui-layer-TipsB{top:-8px;}
.layui-layer-tips i.layui-layer-TipsR, .layui-layer-tips i.layui-layer-TipsL{top:5px;border-bottom-style:solid;border-bottom-color:#000;}
.layui-layer-tips i.layui-layer-TipsR, .layui-layer-tips i.layui-layer-TipsL{top: 5px; border-bottom-style:solid; border-bottom-color: #000;}
.layui-layer-tips i.layui-layer-TipsR{left:-8px;}
.layui-layer-tips i.layui-layer-TipsL{right:-8px;}
/* skin */
.layui-layer-lan[type="dialog"]{min-width:280px;}
.layui-layer-lan .layui-layer-title{background:#4476A7;color:#fff;border:none;}
.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;text-align:right;border-top:1px solid #E9E7E7}
.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#E9E7E7;color:#333;}
.layui-layer-lan .layui-layer-title{background:#4476A7; color:#fff; border: none;}
.layui-layer-lan .layui-layer-btn{padding: 5px 10px 10px; text-align: right; border-top:1px solid #E9E7E7}
.layui-layer-lan .layui-layer-btn a{background: #fff; border-color: #E9E7E7; color: #333;}
.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5;}
.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none;}
.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95;}
.layui-layer-molv .layui-layer-title{background: #009f95; color:#fff; border: none;}
.layui-layer-molv .layui-layer-btn a{background: #009f95; border-color: #009f95;}
.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1;}
/**
@Name: layer拓展样式
*/
.layui-layer-iconext{background:url(icon-ext.png) no-repeat;}
.layui-layer-prompt .layui-layer-input{display:block;width:260px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333;}
.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px;}
.layui-layer-prompt .layui-layer-content{padding:20px;}
.layui-layer-prompt .layui-layer-btn{padding-top:0;}
/* prompt模式 */
.layui-layer-prompt .layui-layer-input{display: block; width: 260px; height: 36px; margin: 0 auto; line-height: 30px; padding-left: 10px; border: 1px solid #e6e6e6; color: #333;}
.layui-layer-prompt textarea.layui-layer-input{width: 300px; height: 100px; line-height: 20px; padding: 6px 10px;}
.layui-layer-prompt .layui-layer-content{padding: 20px;}
.layui-layer-prompt .layui-layer-btn{padding-top: 0;}
/* tab模式 */
.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4);}
.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible;}
.layui-layer-tab .layui-layer-title span{position:relative;float:left;min-width:80px;max-width:300px;padding:0 20px;text-align:center;cursor:default;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:pointer;}
.layui-layer-tab .layui-layer-title span.layui-this{height:51px;border-left:1px solid #eee;border-right:1px solid #eee;background-color:#fff;z-index:10;}
.layui-layer-tab .layui-layer-title{padding-left:0; overflow: visible;}
.layui-layer-tab .layui-layer-title span{position:relative; float:left; min-width:80px; max-width: 300px; padding:0 20px; text-align:center; cursor:default; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; cursor: pointer;}
.layui-layer-tab .layui-layer-title span.layui-this{height: 51px; border-left: 1px solid #eee; border-right: 1px solid #eee; background-color: #fff; z-index: 10;}
.layui-layer-tab .layui-layer-title span:first-child{border-left:none;}
.layui-layer-tabmain{line-height:24px;clear:both;}
.layui-layer-tabmain{line-height:24px; clear:both;}
.layui-layer-tabmain .layui-layer-tabli{display:none;}
.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block;}
.layui-layer-tabmain .layui-layer-tabli.layui-this{display: block;}
.layui-layer-photos{background:none;box-shadow:none;}
.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center;}
.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top;}
.layui-layer-imgprev, .layui-layer-imgnext{position:fixed;top:50%;width:27px;_width:44px;height:44px; margin-top:-22px;outline:none;}
.layui-layer-imgprev{left:30px;background-position:-5px -5px;_background-position:-70px -5px;}
.layui-layer-imgprev:hover{background-position:-33px -5px;_background-position:-120px -5px;}
.layui-layer-imgnext{right:30px;_right:8px;background-position:-5px -50px;_background-position:-70px -50px;}
.layui-layer-imgnext:hover{background-position:-33px -50px;_background-position:-120px -50px;}
.layui-layer-imgbar{position:fixed;left:0;right:0;bottom:0;width:100%;height:40px;line-height:40px;background-color:#000\9;filter:Alpha(opacity=60);background-color:rgba(2,0,0,.35);color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:0;}
.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:12px;}
.layui-layer-imgtit a{max-width:65%; text-overflow:ellipsis;overflow:hidden;white-space:nowrap;color:#fff;}
.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline;}
.layui-layer-imgtit em{padding-left:10px;font-style:normal;}
/* photo模式 */
.layui-layer-photos{background: none; box-shadow: none;}
.layui-layer-photos .layui-layer-content{overflow:hidden; text-align: center;}
.layui-layer-photos .layui-layer-phimg img{position: relative; width:100%; display: inline-block; *display:inline; *zoom:1; vertical-align:top;}
.layui-layer-imgprev, .layui-layer-imgnext{position: fixed; top: 50%; width: 27px; _width: 44px; height: 44px; margin-top:-22px; outline:none;blr:expression(this.onFocus=this.blur());}
.layui-layer-imgprev{left: 30px; background-position:-5px -5px; _background-position:-70px -5px;}
.layui-layer-imgprev:hover{background-position:-33px -5px; _background-position:-120px -5px;}
.layui-layer-imgnext{right: 30px; _right:8px; background-position:-5px -50px; _background-position:-70px -50px;}
.layui-layer-imgnext:hover{background-position: -33px -50px; _background-position: -120px -50px;}
.layui-layer-imgbar{position: fixed; left:0; right: 0; bottom:0; width:100%; height: 40px; line-height: 40px; background-color:#000\9; filter:Alpha(opacity=60); background-color: rgba(2,0,0,.35); color: #fff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; font-size:0;}
.layui-layer-imgtit{/*position:absolute; left:20px;*/}
.layui-layer-imgtit *{display:inline-block; *display:inline; *zoom:1; vertical-align:top; font-size:12px;}
.layui-layer-imgtit a{max-width:65%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; color:#fff;}
.layui-layer-imgtit a:hover{color:#fff; text-decoration:underline;}
.layui-layer-imgtit em{padding-left:10px; font-style: normal;}
/* 关闭动画 */
@-webkit-keyframes layer-bounceOut {
100% {opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}
30% {-webkit-transform:scale(1.05);transform:scale(1.05)}
0% {-webkit-transform:scale(1);transform:scale(1);}
100% {opacity: 0; -webkit-transform: scale(.7); transform: scale(.7)}
30% {-webkit-transform: scale(1.05); transform: scale(1.05)}
0% {-webkit-transform: scale(1); transform: scale(1);}
}
@keyframes layer-bounceOut {
100% {opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7);}
30% {-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05);}
0% {-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);}
100% {opacity: 0; -webkit-transform: scale(.7); -ms-transform: scale(.7); transform: scale(.7);}
30% {-webkit-transform: scale(1.05); -ms-transform: scale(1.05); transform: scale(1.05);}
0% {-webkit-transform: scale(1); -ms-transform: scale(1);transform: scale(1);}
}
.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s;}
.layer-anim-close{-webkit-animation-name: layer-bounceOut; animation-name: layer-bounceOut; -webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration:.2s; animation-duration:.2s;}
.layui-layer-title {font-size:16px;background:#fff;height:57px;line-height:57px;}
/* @media screen and (max-width: 1100px) { 没有标题的时候,关闭按钮显示不全 */
/* .layui-layer-iframe{overflow-y: auto; -webkit-overflow-scrolling: touch;} */
/* } */
/* ThinkGem */
.layui-layer-title {font-weight:bold;font-size:15px;background:#fff;height:45px;line-height:45px;}
.layui-layer-page .layui-layer-content {overflow-x:hidden;}
.layui-layer-page .layui-layer-content .form-file{padding-top:4px;}
.layui-layer-page .layui-layer-btn, .layui-layer-iframe .layui-layer-btn {padding-top:3px;padding-bottom:10px;}
.layui-layer-btn .layui-layer-btn0{border-color:#1e5edb;background-color:#1e5edb;}
.layui-layer-btn a {height:auto;padding:1px 14px;font-size:14px;background-color:#f4f4f4;}
.layui-layer.toast-top-full-width {min-width:60%;}
.layui-layer-page .layui-layer-btn, .layui-layer-iframe .layui-layer-btn {
padding-top:3px;padding-bottom:10px;}
.layui-layer-btn .layui-layer-btn0{border-color:#367fa9;background-color:#367fa9;}
.layui-layer-btn a {height:auto;padding:0 12px;font-size:13px;background-color:#f4f4f4;}
.layui-layer.toast-top-full-width {min-width: 60%;}
.skin-dark .layui-layer {background:#1a1a1a;color:#ddd;}
.skin-dark .layui-layer-title {background:#262626;border-bottom-color:#484848;color:#bcbcbc;}

View File

@@ -12,7 +12,7 @@
<category_index>0</category_index>
<zoom>1.0</zoom>
<x>0</x>
<y>0</y>
<y>7</y>
<default_color>
<r>128</r>
<g>128</g>
@@ -775,22 +775,6 @@
<physical_name>extend_i4</physical_name>
<type>decimal(p)</type>
</word>
<word>
<id>80cd53da9d5a1b19676537e590e20fa2793e902c</id>
<length>1000</length>
<decimal>null</decimal>
<array>false</array>
<array_dimension>null</array_dimension>
<unsigned>false</unsigned>
<zerofill>false</zerofill>
<binary>false</binary>
<args></args>
<char_semantics>false</char_semantics>
<description></description>
<logical_name>扩展 JSON</logical_name>
<physical_name>extend_json</physical_name>
<type>varchar(n)</type>
</word>
<word>
<id>ad6f9eff50476669df62b7601cbc3a2e0c905d36</id>
<length>500</length>
@@ -1272,7 +1256,7 @@
<type>varchar(n)</type>
</word>
<word>
<id>5887f9db78a9ebc7b23b9a163c6f68100257c0e5</id>
<id>63772c051414452204e91e8d0dabd1dbfd640326</id>
<length>767</length>
<decimal>null</decimal>
<array>false</array>
@@ -1912,7 +1896,7 @@
<type>decimal(p)</type>
</word>
<word>
<id>49ec595ac14253d7d25479f6f8c8a94da5a8ca13</id>
<id>8f1564e5646071de508d4325f3cc7f62bdeede16</id>
<length>767</length>
<decimal>null</decimal>
<array>false</array>
@@ -1928,7 +1912,7 @@
<type>nvarchar(n)</type>
</word>
<word>
<id>16c9c333062ea3614d2e044803b872676c8a5377</id>
<id>be17e27c1f73fe128f00468cc83953077b7e00a9</id>
<length>10</length>
<decimal>null</decimal>
<array>false</array>
@@ -1944,7 +1928,7 @@
<type>decimal(p)</type>
</word>
<word>
<id>a886757c87fb1e04c5f84b6a802e129baaec2ca6</id>
<id>b0bd388c14e5b2bbab9590f5247961a7edd9eb3b</id>
<length>767</length>
<decimal>null</decimal>
<array>false</array>
@@ -2298,7 +2282,7 @@
</color>
<connections>
<relation>
<id>bf0ac4b1588841d8f855c9d1030b492190b31adb</id>
<id>b3360c18b956528f86538657fb259817fab21f34</id>
<source>7f024bd90eec8d89290f4db163b3ea077d6ce26d</source>
<target>e9faab162f8d6a9f4bed0be95c9dbb56647656e1</target>
<source_xp>-1</source_xp>
@@ -2330,7 +2314,7 @@
<normal_column>
<id>7b648ef7efea218657b3201e0a0318986ff5e8cb</id>
<referenced_column>0d993b7470d7bde3d20e9c7f24d1811518cf44cc</referenced_column>
<relation>bf0ac4b1588841d8f855c9d1030b492190b31adb</relation>
<relation>b3360c18b956528f86538657fb259817fab21f34</relation>
<description></description>
<unique_key_name></unique_key_name>
<logical_name></logical_name>
@@ -4638,7 +4622,7 @@
</color>
<connections>
<relation>
<id>86d964debc4ef630dc9ec2e2115ee2a2927df3d2</id>
<id>221fc0bc73b3badd39d437e05f24a752587a8a48</id>
<source>388faee80ae30bf2d261c383395ea538ac65d139</source>
<target>a64b64022c5b291e365f8bc84c6dcadd1a69b93f</target>
<source_xp>-1</source_xp>
@@ -4670,7 +4654,7 @@
<normal_column>
<id>a1ea205b23430d5e2419ab6fc7b81e6a1063b163</id>
<referenced_column>eb5d114785c793115e222f88cbce9d6cda0f1543</referenced_column>
<relation>86d964debc4ef630dc9ec2e2115ee2a2927df3d2</relation>
<relation>221fc0bc73b3badd39d437e05f24a752587a8a48</relation>
<description></description>
<unique_key_name></unique_key_name>
<logical_name></logical_name>
@@ -4945,7 +4929,7 @@
</color>
<connections>
<relation>
<id>1f10e7900c8bbfe93ffd36ad7cc6f8d8f0c7a2e0</id>
<id>8b10442357d1561bb946b77f486c97d2673bde4b</id>
<source>02c2487dc0cf00bec5bb12635a6b2eaca8dce45b</source>
<target>7f024bd90eec8d89290f4db163b3ea077d6ce26d</target>
<source_xp>-1</source_xp>
@@ -5044,7 +5028,7 @@
<normal_column>
<id>f86eb0e3c56d958c2d1ee2c0ea77353b01b89973</id>
<referenced_column>f51ed54a54f6cd6b1d74072be62c808f6848470c</referenced_column>
<relation>1f10e7900c8bbfe93ffd36ad7cc6f8d8f0c7a2e0</relation>
<relation>8b10442357d1561bb946b77f486c97d2673bde4b</relation>
<description></description>
<unique_key_name></unique_key_name>
<logical_name></logical_name>
@@ -5615,7 +5599,7 @@
</color>
<connections>
<relation>
<id>f2b951b9ecd59350e7e2b1dbdc3bdaf651981042</id>
<id>102c612ebec0dcaf6a4a4270ed4683aea7346293</id>
<source>7f024bd90eec8d89290f4db163b3ea077d6ce26d</source>
<target>388faee80ae30bf2d261c383395ea538ac65d139</target>
<source_xp>-1</source_xp>
@@ -5680,7 +5664,7 @@
<normal_column>
<id>dde1496bcd5d55330967cc24f53513e102a163c0</id>
<referenced_column>0d993b7470d7bde3d20e9c7f24d1811518cf44cc</referenced_column>
<relation>f2b951b9ecd59350e7e2b1dbdc3bdaf651981042</relation>
<relation>102c612ebec0dcaf6a4a4270ed4683aea7346293</relation>
<description></description>
<unique_key_name></unique_key_name>
<logical_name></logical_name>
@@ -6398,7 +6382,7 @@
<referenced_complex_unique_key>null</referenced_complex_unique_key>
</relation>
<relation>
<id>6917f16fcd1f020c33c9058293719d194ef610c6</id>
<id>52c8c967a2f0edf6dd988a9bb4cb00d6da008195</id>
<source>7f024bd90eec8d89290f4db163b3ea077d6ce26d</source>
<target>18893974755ff1a6dc89f298885d6b0d571a8c7b</target>
<source_xp>-1</source_xp>
@@ -6463,7 +6447,7 @@
<normal_column>
<id>835faef487ae6874a525a8cb8ba19825f93091aa</id>
<referenced_column>0d993b7470d7bde3d20e9c7f24d1811518cf44cc</referenced_column>
<relation>6917f16fcd1f020c33c9058293719d194ef610c6</relation>
<relation>52c8c967a2f0edf6dd988a9bb4cb00d6da008195</relation>
<description></description>
<unique_key_name></unique_key_name>
<logical_name></logical_name>
@@ -8612,39 +8596,6 @@
<decimal_size>0</decimal_size>
</sequence>
</normal_column>
<normal_column>
<word_id>80cd53da9d5a1b19676537e590e20fa2793e902c</word_id>
<id>42c5d8f490f69b93e77698efa030ca23988ae696</id>
<description></description>
<unique_key_name></unique_key_name>
<logical_name></logical_name>
<physical_name></physical_name>
<type>varchar(n)</type>
<constraint></constraint>
<default_value></default_value>
<auto_increment>false</auto_increment>
<foreign_key>false</foreign_key>
<not_null>false</not_null>
<primary_key>false</primary_key>
<unique_key>false</unique_key>
<character_set></character_set>
<collation></collation>
<sequence>
<name></name>
<schema></schema>
<increment></increment>
<min_value></min_value>
<max_value></max_value>
<start></start>
<cache></cache>
<nocache>false</nocache>
<cycle>false</cycle>
<order>false</order>
<description></description>
<data_type></data_type>
<decimal_size>0</decimal_size>
</sequence>
</normal_column>
</columns>
</column_group>
<column_group>
@@ -8685,7 +8636,7 @@
</sequence>
</normal_column>
<normal_column>
<word_id>5887f9db78a9ebc7b23b9a163c6f68100257c0e5</word_id>
<word_id>63772c051414452204e91e8d0dabd1dbfd640326</word_id>
<id>e8d877396943acfec73023dba2c1c6e3d7802d62</id>
<description></description>
<unique_key_name></unique_key_name>
@@ -8718,7 +8669,7 @@
</sequence>
</normal_column>
<normal_column>
<word_id>16c9c333062ea3614d2e044803b872676c8a5377</word_id>
<word_id>be17e27c1f73fe128f00468cc83953077b7e00a9</word_id>
<id>23f973124aedd0244533f4e7b3b103c548b966be</id>
<description></description>
<unique_key_name></unique_key_name>
@@ -8751,7 +8702,7 @@
</sequence>
</normal_column>
<normal_column>
<word_id>a886757c87fb1e04c5f84b6a802e129baaec2ca6</word_id>
<word_id>b0bd388c14e5b2bbab9590f5247961a7edd9eb3b</word_id>
<id>984d5eac2b3221118a61655e4a5a49c78e0f0151</id>
<description></description>
<unique_key_name></unique_key_name>
@@ -8850,7 +8801,7 @@
</sequence>
</normal_column>
<normal_column>
<word_id>49ec595ac14253d7d25479f6f8c8a94da5a8ca13</word_id>
<word_id>8f1564e5646071de508d4325f3cc7f62bdeede16</word_id>
<id>618194ebfc8c6c42efcef3a4af0b8054f6af209b</id>
<description></description>
<unique_key_name></unique_key_name>

View File

@@ -63,7 +63,6 @@ CREATE TABLE js_cms_article_data
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (id)
);
@@ -137,7 +136,6 @@ CREATE TABLE js_cms_category
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (category_code)
);

View File

@@ -63,7 +63,6 @@ CREATE TABLE js_cms_article_data
extend_d2 datetime,
extend_d3 datetime,
extend_d4 datetime,
extend_json varchar(1000),
PRIMARY KEY (id)
);
@@ -137,7 +136,6 @@ CREATE TABLE js_cms_category
extend_d2 datetime,
extend_d3 datetime,
extend_d4 datetime,
extend_json varchar(1000),
PRIMARY KEY (category_code)
);

View File

@@ -63,7 +63,6 @@ CREATE TABLE [js_cms_article_data]
[extend_d2] datetime,
[extend_d3] datetime,
[extend_d4] datetime,
[extend_json] varchar(1000),
PRIMARY KEY ([id])
);
@@ -137,7 +136,6 @@ CREATE TABLE [js_cms_category]
[extend_d2] datetime,
[extend_d3] datetime,
[extend_d4] datetime,
[extend_json] varchar(1000),
PRIMARY KEY ([category_code])
);

View File

@@ -64,7 +64,6 @@ CREATE TABLE js_cms_article_data
extend_d2 datetime COMMENT '扩展 Date 2',
extend_d3 datetime COMMENT '扩展 Date 3',
extend_d4 datetime COMMENT '扩展 Date 4',
extend_json varchar(1000) COMMENT '扩展 JSON',
PRIMARY KEY (id)
) COMMENT = '文章详情表';
@@ -138,7 +137,6 @@ CREATE TABLE js_cms_category
extend_d2 datetime COMMENT '扩展 Date 2',
extend_d3 datetime COMMENT '扩展 Date 3',
extend_d4 datetime COMMENT '扩展 Date 4',
extend_json varchar(1000) COMMENT '扩展 JSON',
PRIMARY KEY (category_code)
) COMMENT = '栏目表';

View File

@@ -63,7 +63,6 @@ CREATE TABLE js_cms_article_data
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar2(1000),
PRIMARY KEY (id)
);
@@ -137,7 +136,6 @@ CREATE TABLE js_cms_category
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar2(1000),
PRIMARY KEY (category_code)
);
@@ -375,7 +373,6 @@ COMMENT ON COLUMN js_cms_article_data.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_cms_article_data.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_cms_article_data.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_cms_article_data.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN js_cms_article_data.extend_json IS '扩展 JSON';
COMMENT ON TABLE js_cms_article_posid IS '文章推荐位';
COMMENT ON COLUMN js_cms_article_posid.article_id IS '内容编号';
COMMENT ON COLUMN js_cms_article_posid.postid IS '推荐位置1轮播图 2首页推荐 3栏目页面';
@@ -433,7 +430,6 @@ COMMENT ON COLUMN js_cms_category.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_cms_category.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_cms_category.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_cms_category.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN js_cms_category.extend_json IS '扩展 JSON';
COMMENT ON TABLE js_cms_category_role IS '栏目与角色关联表';
COMMENT ON COLUMN js_cms_category_role.category_code IS '栏目编码';
COMMENT ON COLUMN js_cms_category_role.role_code IS '角色编码';

View File

@@ -63,7 +63,6 @@ CREATE TABLE js_cms_article_data
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (id)
) WITHOUT OIDS;
@@ -137,7 +136,6 @@ CREATE TABLE js_cms_category
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (category_code)
) WITHOUT OIDS;
@@ -375,7 +373,6 @@ COMMENT ON COLUMN js_cms_article_data.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_cms_article_data.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_cms_article_data.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_cms_article_data.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN js_cms_article_data.extend_json IS '扩展 JSON';
COMMENT ON TABLE js_cms_article_posid IS '文章推荐位';
COMMENT ON COLUMN js_cms_article_posid.article_id IS '内容编号';
COMMENT ON COLUMN js_cms_article_posid.postid IS '推荐位置1轮播图 2首页推荐 3栏目页面';
@@ -433,7 +430,6 @@ COMMENT ON COLUMN js_cms_category.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_cms_category.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_cms_category.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_cms_category.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN js_cms_category.extend_json IS '扩展 JSON';
COMMENT ON TABLE js_cms_category_role IS '栏目与角色关联表';
COMMENT ON COLUMN js_cms_category_role.category_code IS '栏目编码';
COMMENT ON COLUMN js_cms_category_role.role_code IS '角色编码';

View File

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

View File

@@ -4,6 +4,19 @@
*/
package com.jeesite.modules.cms.service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.jeesite.common.collect.ListUtils;
import com.jeesite.common.config.Global;
import com.jeesite.common.entity.Page;
@@ -18,19 +31,8 @@ import com.jeesite.modules.cms.entity.Category;
import com.jeesite.modules.cms.utils.CmsUtils;
import com.jeesite.modules.file.utils.FileUploadUtils;
import com.jeesite.modules.sys.utils.UserUtils;
import io.netty.util.concurrent.DefaultThreadFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import io.netty.util.concurrent.DefaultThreadFactory;
/**
* 文章表Service

View File

@@ -4,18 +4,17 @@
*/
package com.jeesite.modules.cms.service;
import java.util.List;
import org.apache.commons.text.StringEscapeUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.common.service.TreeService;
import com.jeesite.modules.cms.dao.CategoryDao;
import com.jeesite.modules.cms.entity.Category;
import com.jeesite.modules.cms.utils.CmsUtils;
import com.jeesite.modules.file.utils.FileUploadUtils;
import org.apache.commons.text.StringEscapeUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 栏目表Service

View File

@@ -4,18 +4,16 @@
*/
package com.jeesite.modules.cms.service;
import java.io.IOException;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.beust.jcommander.internal.Lists;
import com.jeesite.modules.cms.entity.FileTemplete;
import com.jeesite.modules.cms.entity.Site;
import com.jeesite.modules.cms.utils.CmsUtils;
import com.jeesite.modules.cms.utils.FileTempleteUtils;
import com.jeesite.modules.sys.entity.DictData;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.List;
/**
* 模版文件Service

View File

@@ -310,8 +310,8 @@ public class FrontController extends BaseController {
/**
* 内容评论
*/
@RequestMapping(value = "comment-{theme}", method = RequestMethod.GET)
public String comment(Comment comment, @PathVariable String theme, HttpServletRequest request, HttpServletResponse response,
@RequestMapping(value = "comment", method = RequestMethod.GET)
public String comment(Comment comment, String theme, HttpServletRequest request, HttpServletResponse response,
Model model) {
Page<Comment> page = new Page<Comment>(request, response);
Comment c = new Comment();

View File

@@ -62,7 +62,7 @@ public class FrontSearchController extends BaseController{
parmas.put("siteCode", siteCode);
}
page = articleService.searchPage(page, q, qand, qnot, bd, ed, parmas);
page.setPageInfo("匹配结果,共耗时 " + TimeUtils.formatTime(System.currentTimeMillis() - start) + "");
page.setPageInfo("匹配结果,共耗时 " + TimeUtils.formatDateAgo(System.currentTimeMillis() - start) + "");
model.addAttribute("page", page);
}

View File

@@ -1,322 +0,0 @@
/* Create Tables */
-- 文章表
CREATE TABLE ${_prefix}cms_article
(
id varchar(64) NOT NULL,
category_code varchar(64) NOT NULL,
module_type varchar(50),
title vargraphic(255) NOT NULL,
href vargraphic(1000),
color varchar(50),
image vargraphic(1000),
keywords vargraphic(500),
description vargraphic(500),
weight decimal(10) DEFAULT 0,
weight_date timestamp,
source char(1),
copyfrom vargraphic(255),
hits decimal(20) DEFAULT 0,
hits_plus numeric(10),
hits_minus numeric(10),
word_count numeric(10),
custom_content_view varchar(255),
view_config vargraphic(1000),
status char(1) DEFAULT '0' NOT NULL,
create_by varchar(64) NOT NULL,
create_date timestamp NOT NULL,
update_by varchar(64) NOT NULL,
update_date timestamp NOT NULL,
remarks vargraphic(500),
corp_code varchar(64) DEFAULT '0' NOT NULL,
corp_name vargraphic(100) DEFAULT 'JeeSite' NOT NULL,
PRIMARY KEY (id)
);
-- 文章详情表
CREATE TABLE ${_prefix}cms_article_data
(
id varchar(64) NOT NULL,
content clob,
relation varchar(1000),
is_can_comment char(1),
extend_s1 vargraphic(500),
extend_s2 vargraphic(500),
extend_s3 vargraphic(500),
extend_s4 vargraphic(500),
extend_s5 vargraphic(500),
extend_s6 vargraphic(500),
extend_s7 vargraphic(500),
extend_s8 vargraphic(500),
extend_i1 decimal(19),
extend_i2 decimal(19),
extend_i3 decimal(19),
extend_i4 decimal(19),
extend_f1 decimal(19,4),
extend_f2 decimal(19,4),
extend_f3 decimal(19,4),
extend_f4 decimal(19,4),
extend_d1 timestamp,
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (id)
);
-- 文章推荐位
CREATE TABLE ${_prefix}cms_article_posid
(
article_id varchar(64) NOT NULL,
postid char(1) NOT NULL
);
-- 文章与标签关系
CREATE TABLE ${_prefix}cms_article_tag
(
article_id varchar(64) NOT NULL,
tag_name vargraphic(200) NOT NULL
);
-- 栏目表
CREATE TABLE ${_prefix}cms_category
(
category_code varchar(64) NOT NULL,
parent_code varchar(64) NOT NULL,
parent_codes varchar(767) NOT NULL,
tree_sort decimal(10) NOT NULL,
tree_sorts varchar(767) NOT NULL,
tree_leaf char(1) NOT NULL,
tree_level decimal(4) NOT NULL,
tree_names vargraphic(767) NOT NULL,
category_name vargraphic(100) NOT NULL,
site_code varchar(64) NOT NULL,
module_type varchar(50),
image varchar(255),
href varchar(255),
target varchar(20),
keywords vargraphic(500),
description vargraphic(500),
in_menu char(1),
in_list char(1),
show_modes char(1),
is_need_audit char(1),
is_can_comment char(1),
custom_list_view varchar(255),
custom_content_view varchar(255),
view_config vargraphic(1000),
status char(1) DEFAULT '0' NOT NULL,
create_by varchar(64) NOT NULL,
create_date timestamp NOT NULL,
update_by varchar(64) NOT NULL,
update_date timestamp NOT NULL,
remarks vargraphic(500),
extend_s1 vargraphic(500),
extend_s2 vargraphic(500),
extend_s3 vargraphic(500),
extend_s4 vargraphic(500),
extend_s5 vargraphic(500),
extend_s6 vargraphic(500),
extend_s7 vargraphic(500),
extend_s8 vargraphic(500),
extend_i1 decimal(19),
extend_i2 decimal(19),
extend_i3 decimal(19),
extend_i4 decimal(19),
extend_f1 decimal(19,4),
extend_f2 decimal(19,4),
extend_f3 decimal(19,4),
extend_f4 decimal(19,4),
extend_d1 timestamp,
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (category_code)
);
-- 栏目与角色关联表
CREATE TABLE ${_prefix}cms_category_role
(
category_code varchar(64) NOT NULL,
role_code varchar(64) NOT NULL,
ctrl_type varchar(32),
PRIMARY KEY (category_code, role_code)
);
-- 文章评论表
CREATE TABLE ${_prefix}cms_comment
(
id varchar(64) NOT NULL,
category_code varchar(64) NOT NULL,
article_id varchar(64) NOT NULL,
parent_id varchar(64),
article_title vargraphic(255) NOT NULL,
content vargraphic(255) NOT NULL,
name vargraphic(50),
ip varchar(100),
create_by varchar(64),
create_date timestamp NOT NULL,
audit_user_code varchar(64),
audit_date timestamp,
audit_comment vargraphic(200),
hits_plus numeric(10),
hits_minus numeric(10),
status char(1) NOT NULL,
corp_code varchar(64) DEFAULT '0' NOT NULL,
corp_name vargraphic(100) DEFAULT 'JeeSite' NOT NULL,
PRIMARY KEY (id)
);
-- 留言板表
CREATE TABLE ${_prefix}cms_guestbook
(
id varchar(64) NOT NULL,
type char(1) NOT NULL,
content varchar(255) NOT NULL,
name varchar(100) NOT NULL,
email varchar(100) NOT NULL,
phone varchar(100) NOT NULL,
workunit varchar(100) NOT NULL,
ip varchar(100) NOT NULL,
create_by varchar(64),
create_date timestamp,
re_user_code varchar(64),
re_date timestamp,
re_content varchar(100),
status char(1) NOT NULL,
corp_code varchar(64) DEFAULT '0' NOT NULL,
corp_name vargraphic(100) DEFAULT 'JeeSite' NOT NULL,
PRIMARY KEY (id)
);
-- 内容举报表
CREATE TABLE ${_prefix}cms_report
(
id varchar(64) NOT NULL,
report_source char(1),
report_content vargraphic(500),
report_url vargraphic(1000),
report_type char(1),
report_cause vargraphic(500),
PRIMARY KEY (id)
);
-- 站点表
CREATE TABLE ${_prefix}cms_site
(
site_code varchar(64) NOT NULL,
site_name vargraphic(100) NOT NULL,
site_sort decimal(10),
title vargraphic(100) NOT NULL,
logo vargraphic(1000),
domain vargraphic(500),
keywords vargraphic(500),
description vargraphic(500),
theme vargraphic(500),
copyright vargraphic(1000),
custom_index_view varchar(500),
status char(1) DEFAULT '0' NOT NULL,
create_by varchar(64) NOT NULL,
create_date timestamp NOT NULL,
update_by varchar(64) NOT NULL,
update_date timestamp NOT NULL,
remarks vargraphic(500),
PRIMARY KEY (site_code)
);
-- 内容标签
CREATE TABLE ${_prefix}cms_tag
(
tag_name vargraphic(200) NOT NULL,
clicknum numeric(10) NOT NULL,
PRIMARY KEY (tag_name)
);
-- 访问日志表
CREATE TABLE ${_prefix}cms_visit_log
(
id varchar(64) NOT NULL,
request_url vargraphic(1000),
request_url_host varchar(128),
source_referer vargraphic(1000),
source_referer_host varchar(128),
source_type char(1),
search_engine varchar(200),
search_word vargraphic(200),
remote_addr varchar(50),
user_agent vargraphic(500),
user_language varchar(32),
user_screen_size varchar(32),
user_device varchar(32),
user_os_name varchar(32),
user_browser varchar(32),
user_browser_version varchar(16),
unique_visit_id varchar(64),
visit_date char(8),
visit_time timestamp,
is_new_visit char(1),
first_visit_time decimal(20),
prev_remain_time decimal(20),
total_remain_time decimal(20),
site_code varchar(64),
site_name vargraphic(100),
category_code varchar(64),
category_name vargraphic(100),
content_id varchar(64),
content_title vargraphic(255),
visit_user_code varchar(100),
visit_user_name varchar(100),
corp_code varchar(64) DEFAULT '0' NOT NULL,
corp_name vargraphic(100) DEFAULT 'JeeSite' NOT NULL,
PRIMARY KEY (id)
);
/* Create Indexes */
CREATE INDEX idx_cms_article_cb ON ${_prefix}cms_article (create_by);
CREATE INDEX idx_cms_article_cc ON ${_prefix}cms_article (category_code);
CREATE INDEX idx_cms_article_corp_code ON ${_prefix}cms_article (corp_code);
CREATE INDEX idx_cms_article_status ON ${_prefix}cms_article (status);
CREATE INDEX idx_cms_article_ud ON ${_prefix}cms_article (update_date);
CREATE INDEX idx_cms_article_weight ON ${_prefix}cms_article (weight);
CREATE INDEX idx_cms_category_pc ON ${_prefix}cms_category (parent_code);
CREATE INDEX idx_cms_category_ts ON ${_prefix}cms_category (tree_sort);
CREATE INDEX idx_cms_category_status ON ${_prefix}cms_category (status);
CREATE INDEX idx_cms_category_tss ON ${_prefix}cms_category (tree_sorts);
CREATE INDEX idx_cms_comment_catc ON ${_prefix}cms_comment (category_code);
CREATE INDEX idx_cms_comment_ai ON ${_prefix}cms_comment (article_id);
CREATE INDEX idx_cms_comment_cc ON ${_prefix}cms_comment (corp_code);
CREATE INDEX idx_cms_comment_status ON ${_prefix}cms_comment (status);
CREATE INDEX idx_cms_guestbook_cc ON ${_prefix}cms_guestbook (corp_code);
CREATE INDEX idx_cms_guestbook_status ON ${_prefix}cms_guestbook (status);
CREATE INDEX idx_cms_guestbook_type ON ${_prefix}cms_guestbook (type);
CREATE INDEX idx_cms_site_status ON ${_prefix}cms_site (status);
CREATE INDEX cms_visit_log_cc ON ${_prefix}cms_visit_log (category_code);
CREATE INDEX cms_visit_log_ci ON ${_prefix}cms_visit_log (content_id);
CREATE INDEX cms_visit_log_fvt ON ${_prefix}cms_visit_log (first_visit_time);
CREATE INDEX cms_visit_log_inv ON ${_prefix}cms_visit_log (is_new_visit);
CREATE INDEX cms_visit_log_ra ON ${_prefix}cms_visit_log (remote_addr);
CREATE INDEX cms_visit_log_sc ON ${_prefix}cms_visit_log (site_code);
CREATE INDEX cms_visit_log_uvid ON ${_prefix}cms_visit_log (unique_visit_id);
CREATE INDEX cms_visit_log_vd ON ${_prefix}cms_visit_log (visit_date);
CREATE INDEX cms_visit_log_vt ON ${_prefix}cms_visit_log (visit_time);
CREATE INDEX idx_cms_visit_log_corpc ON ${_prefix}cms_visit_log (corp_code);

View File

@@ -8,30 +8,30 @@ CREATE TABLE ${_prefix}cms_article
id varchar(64) NOT NULL,
category_code varchar(64) NOT NULL,
module_type varchar(50),
title varchar(255) NOT NULL,
href varchar(1000),
title vargraphic(255) NOT NULL,
href vargraphic(1000),
color varchar(50),
image varchar(1000),
keywords varchar(500),
description varchar(500),
image vargraphic(1000),
keywords vargraphic(500),
description vargraphic(500),
weight decimal(10) DEFAULT 0,
weight_date datetime,
weight_date timestamp,
source char(1),
copyfrom varchar(255),
copyfrom vargraphic(255),
hits decimal(20) DEFAULT 0,
hits_plus numeric(10),
hits_minus numeric(10),
word_count numeric(10),
custom_content_view varchar(255),
view_config varchar(1000),
view_config vargraphic(1000),
status char(1) DEFAULT '0' NOT NULL,
create_by varchar(64) NOT NULL,
create_date datetime NOT NULL,
create_date timestamp NOT NULL,
update_by varchar(64) NOT NULL,
update_date datetime NOT NULL,
remarks varchar(500),
update_date timestamp NOT NULL,
remarks vargraphic(500),
corp_code varchar(64) DEFAULT '0' NOT NULL,
corp_name varchar(100) DEFAULT 'JeeSite' NOT NULL,
corp_name vargraphic(100) DEFAULT 'JeeSite' NOT NULL,
PRIMARY KEY (id)
);
@@ -43,14 +43,14 @@ CREATE TABLE ${_prefix}cms_article_data
content clob,
relation varchar(1000),
is_can_comment char(1),
extend_s1 varchar(500),
extend_s2 varchar(500),
extend_s3 varchar(500),
extend_s4 varchar(500),
extend_s5 varchar(500),
extend_s6 varchar(500),
extend_s7 varchar(500),
extend_s8 varchar(500),
extend_s1 vargraphic(500),
extend_s2 vargraphic(500),
extend_s3 vargraphic(500),
extend_s4 vargraphic(500),
extend_s5 vargraphic(500),
extend_s6 vargraphic(500),
extend_s7 vargraphic(500),
extend_s8 vargraphic(500),
extend_i1 decimal(19),
extend_i2 decimal(19),
extend_i3 decimal(19),
@@ -59,11 +59,10 @@ CREATE TABLE ${_prefix}cms_article_data
extend_f2 decimal(19,4),
extend_f3 decimal(19,4),
extend_f4 decimal(19,4),
extend_d1 datetime,
extend_d2 datetime,
extend_d3 datetime,
extend_d4 datetime,
extend_json varchar(1000),
extend_d1 timestamp,
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
PRIMARY KEY (id)
);
@@ -80,7 +79,7 @@ CREATE TABLE ${_prefix}cms_article_posid
CREATE TABLE ${_prefix}cms_article_tag
(
article_id varchar(64) NOT NULL,
tag_name varchar(200) NOT NULL
tag_name vargraphic(200) NOT NULL
);
@@ -94,15 +93,15 @@ CREATE TABLE ${_prefix}cms_category
tree_sorts varchar(767) NOT NULL,
tree_leaf char(1) NOT NULL,
tree_level decimal(4) NOT NULL,
tree_names varchar(767) NOT NULL,
category_name varchar(100) NOT NULL,
tree_names vargraphic(767) NOT NULL,
category_name vargraphic(100) NOT NULL,
site_code varchar(64) NOT NULL,
module_type varchar(50),
image varchar(255),
href varchar(255),
target varchar(20),
keywords varchar(500),
description varchar(500),
keywords vargraphic(500),
description vargraphic(500),
in_menu char(1),
in_list char(1),
show_modes char(1),
@@ -110,21 +109,21 @@ CREATE TABLE ${_prefix}cms_category
is_can_comment char(1),
custom_list_view varchar(255),
custom_content_view varchar(255),
view_config varchar(1000),
view_config vargraphic(1000),
status char(1) DEFAULT '0' NOT NULL,
create_by varchar(64) NOT NULL,
create_date datetime NOT NULL,
create_date timestamp NOT NULL,
update_by varchar(64) NOT NULL,
update_date datetime NOT NULL,
remarks varchar(500),
extend_s1 varchar(500),
extend_s2 varchar(500),
extend_s3 varchar(500),
extend_s4 varchar(500),
extend_s5 varchar(500),
extend_s6 varchar(500),
extend_s7 varchar(500),
extend_s8 varchar(500),
update_date timestamp NOT NULL,
remarks vargraphic(500),
extend_s1 vargraphic(500),
extend_s2 vargraphic(500),
extend_s3 vargraphic(500),
extend_s4 vargraphic(500),
extend_s5 vargraphic(500),
extend_s6 vargraphic(500),
extend_s7 vargraphic(500),
extend_s8 vargraphic(500),
extend_i1 decimal(19),
extend_i2 decimal(19),
extend_i3 decimal(19),
@@ -133,11 +132,10 @@ CREATE TABLE ${_prefix}cms_category
extend_f2 decimal(19,4),
extend_f3 decimal(19,4),
extend_f4 decimal(19,4),
extend_d1 datetime,
extend_d2 datetime,
extend_d3 datetime,
extend_d4 datetime,
extend_json varchar(1000),
extend_d1 timestamp,
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
PRIMARY KEY (category_code)
);
@@ -159,20 +157,20 @@ CREATE TABLE ${_prefix}cms_comment
category_code varchar(64) NOT NULL,
article_id varchar(64) NOT NULL,
parent_id varchar(64),
article_title varchar(255) NOT NULL,
content varchar(255) NOT NULL,
name varchar(50),
article_title vargraphic(255) NOT NULL,
content vargraphic(255) NOT NULL,
name vargraphic(50),
ip varchar(100),
create_by varchar(64),
create_date datetime NOT NULL,
create_date timestamp NOT NULL,
audit_user_code varchar(64),
audit_date datetime,
audit_comment varchar(200),
audit_date timestamp,
audit_comment vargraphic(200),
hits_plus numeric(10),
hits_minus numeric(10),
status char(1) NOT NULL,
corp_code varchar(64) DEFAULT '0' NOT NULL,
corp_name varchar(100) DEFAULT 'JeeSite' NOT NULL,
corp_name vargraphic(100) DEFAULT 'JeeSite' NOT NULL,
PRIMARY KEY (id)
);
@@ -189,13 +187,13 @@ CREATE TABLE ${_prefix}cms_guestbook
workunit varchar(100) NOT NULL,
ip varchar(100) NOT NULL,
create_by varchar(64),
create_date datetime,
create_date timestamp,
re_user_code varchar(64),
re_date datetime,
re_date timestamp,
re_content varchar(100),
status char(1) NOT NULL,
corp_code varchar(64) DEFAULT '0' NOT NULL,
corp_name varchar(100) DEFAULT 'JeeSite' NOT NULL,
corp_name vargraphic(100) DEFAULT 'JeeSite' NOT NULL,
PRIMARY KEY (id)
);
@@ -205,10 +203,10 @@ CREATE TABLE ${_prefix}cms_report
(
id varchar(64) NOT NULL,
report_source char(1),
report_content varchar(500),
report_url varchar(1000),
report_content vargraphic(500),
report_url vargraphic(1000),
report_type char(1),
report_cause varchar(500),
report_cause vargraphic(500),
PRIMARY KEY (id)
);
@@ -217,22 +215,22 @@ CREATE TABLE ${_prefix}cms_report
CREATE TABLE ${_prefix}cms_site
(
site_code varchar(64) NOT NULL,
site_name varchar(100) NOT NULL,
site_name vargraphic(100) NOT NULL,
site_sort decimal(10),
title varchar(100) NOT NULL,
logo varchar(1000),
domain varchar(500),
keywords varchar(500),
description varchar(500),
theme varchar(500),
copyright varchar(1000),
title vargraphic(100) NOT NULL,
logo vargraphic(1000),
domain vargraphic(500),
keywords vargraphic(500),
description vargraphic(500),
theme vargraphic(500),
copyright vargraphic(1000),
custom_index_view varchar(500),
status char(1) DEFAULT '0' NOT NULL,
create_by varchar(64) NOT NULL,
create_date datetime NOT NULL,
create_date timestamp NOT NULL,
update_by varchar(64) NOT NULL,
update_date datetime NOT NULL,
remarks varchar(500),
update_date timestamp NOT NULL,
remarks vargraphic(500),
PRIMARY KEY (site_code)
);
@@ -240,7 +238,7 @@ CREATE TABLE ${_prefix}cms_site
-- 内容标签
CREATE TABLE ${_prefix}cms_tag
(
tag_name varchar(200) NOT NULL,
tag_name vargraphic(200) NOT NULL,
clicknum numeric(10) NOT NULL,
PRIMARY KEY (tag_name)
);
@@ -250,15 +248,15 @@ CREATE TABLE ${_prefix}cms_tag
CREATE TABLE ${_prefix}cms_visit_log
(
id varchar(64) NOT NULL,
request_url varchar(1000),
request_url vargraphic(1000),
request_url_host varchar(128),
source_referer varchar(1000),
source_referer vargraphic(1000),
source_referer_host varchar(128),
source_type char(1),
search_engine varchar(200),
search_word varchar(200),
search_word vargraphic(200),
remote_addr varchar(50),
user_agent varchar(500),
user_agent vargraphic(500),
user_language varchar(32),
user_screen_size varchar(32),
user_device varchar(32),
@@ -267,21 +265,21 @@ CREATE TABLE ${_prefix}cms_visit_log
user_browser_version varchar(16),
unique_visit_id varchar(64),
visit_date char(8),
visit_time datetime,
visit_time timestamp,
is_new_visit char(1),
first_visit_time decimal(20),
prev_remain_time decimal(20),
total_remain_time decimal(20),
site_code varchar(64),
site_name varchar(100),
site_name vargraphic(100),
category_code varchar(64),
category_name varchar(100),
category_name vargraphic(100),
content_id varchar(64),
content_title varchar(255),
content_title vargraphic(255),
visit_user_code varchar(100),
visit_user_name varchar(100),
corp_code varchar(64) DEFAULT '0' NOT NULL,
corp_name varchar(100) DEFAULT 'JeeSite' NOT NULL,
corp_name vargraphic(100) DEFAULT 'JeeSite' NOT NULL,
PRIMARY KEY (id)
);

View File

@@ -63,7 +63,6 @@ CREATE TABLE [${_prefix}cms_article_data]
[extend_d2] datetime,
[extend_d3] datetime,
[extend_d4] datetime,
[extend_json] varchar(1000),
PRIMARY KEY ([id])
);
@@ -137,7 +136,6 @@ CREATE TABLE [${_prefix}cms_category]
[extend_d2] datetime,
[extend_d3] datetime,
[extend_d4] datetime,
[extend_json] varchar(1000),
PRIMARY KEY ([category_code])
);

View File

@@ -64,7 +64,6 @@ CREATE TABLE ${_prefix}cms_article_data
extend_d2 datetime COMMENT '扩展 Date 2',
extend_d3 datetime COMMENT '扩展 Date 3',
extend_d4 datetime COMMENT '扩展 Date 4',
extend_json varchar(1000) COMMENT '扩展 JSON',
PRIMARY KEY (id)
) COMMENT = '文章详情表';
@@ -138,7 +137,6 @@ CREATE TABLE ${_prefix}cms_category
extend_d2 datetime COMMENT '扩展 Date 2',
extend_d3 datetime COMMENT '扩展 Date 3',
extend_d4 datetime COMMENT '扩展 Date 4',
extend_json varchar(1000) COMMENT '扩展 JSON',
PRIMARY KEY (category_code)
) COMMENT = '栏目表';

View File

@@ -63,7 +63,6 @@ CREATE TABLE ${_prefix}cms_article_data
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar2(1000),
PRIMARY KEY (id)
);
@@ -137,7 +136,6 @@ CREATE TABLE ${_prefix}cms_category
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar2(1000),
PRIMARY KEY (category_code)
);
@@ -375,7 +373,6 @@ COMMENT ON COLUMN ${_prefix}cms_article_data.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN ${_prefix}cms_article_data.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN ${_prefix}cms_article_data.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN ${_prefix}cms_article_data.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN ${_prefix}cms_article_data.extend_json IS '扩展 JSON';
COMMENT ON TABLE ${_prefix}cms_article_posid IS '文章推荐位';
COMMENT ON COLUMN ${_prefix}cms_article_posid.article_id IS '内容编号';
COMMENT ON COLUMN ${_prefix}cms_article_posid.postid IS '推荐位置1轮播图 2首页推荐 3栏目页面';
@@ -433,7 +430,6 @@ COMMENT ON COLUMN ${_prefix}cms_category.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN ${_prefix}cms_category.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN ${_prefix}cms_category.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN ${_prefix}cms_category.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN ${_prefix}cms_category.extend_json IS '扩展 JSON';
COMMENT ON TABLE ${_prefix}cms_category_role IS '栏目与角色关联表';
COMMENT ON COLUMN ${_prefix}cms_category_role.category_code IS '栏目编码';
COMMENT ON COLUMN ${_prefix}cms_category_role.role_code IS '角色编码';

View File

@@ -63,7 +63,6 @@ CREATE TABLE ${_prefix}cms_article_data
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (id)
) WITHOUT OIDS;
@@ -137,7 +136,6 @@ CREATE TABLE ${_prefix}cms_category
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (category_code)
) WITHOUT OIDS;
@@ -375,7 +373,6 @@ COMMENT ON COLUMN ${_prefix}cms_article_data.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN ${_prefix}cms_article_data.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN ${_prefix}cms_article_data.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN ${_prefix}cms_article_data.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN ${_prefix}cms_article_data.extend_json IS '扩展 JSON';
COMMENT ON TABLE ${_prefix}cms_article_posid IS '文章推荐位';
COMMENT ON COLUMN ${_prefix}cms_article_posid.article_id IS '内容编号';
COMMENT ON COLUMN ${_prefix}cms_article_posid.postid IS '推荐位置1轮播图 2首页推荐 3栏目页面';
@@ -433,7 +430,6 @@ COMMENT ON COLUMN ${_prefix}cms_category.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN ${_prefix}cms_category.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN ${_prefix}cms_category.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN ${_prefix}cms_category.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN ${_prefix}cms_category.extend_json IS '扩展 JSON';
COMMENT ON TABLE ${_prefix}cms_category_role IS '栏目与角色关联表';
COMMENT ON COLUMN ${_prefix}cms_category_role.category_code IS '栏目编码';
COMMENT ON COLUMN ${_prefix}cms_category_role.role_code IS '角色编码';

View File

@@ -1,6 +0,0 @@
ALTER TABLE ${_prefix}cms_category
ADD extend_json varchar(1000);
ALTER TABLE ${_prefix}cms_article_data
ADD extend_json varchar(1000);

View File

@@ -1,6 +0,0 @@
ALTER TABLE `${_prefix}cms_category`
ADD COLUMN extend_json varchar(1000) COMMENT '扩展 JSON';
ALTER TABLE `${_prefix}cms_article_data`
ADD COLUMN extend_json varchar(1000) COMMENT '扩展 JSON';

View File

@@ -1,6 +0,0 @@
ALTER TABLE ${_prefix}cms_category ADD extend_json varchar2(1000);
COMMENT ON COLUMN ${_prefix}cms_category.extend_json IS '扩展 JSON';
ALTER TABLE ${_prefix}cms_article_data ADD extend_json varchar2(1000);
COMMENT ON COLUMN ${_prefix}cms_article_data.extend_json IS '扩展 JSON';

View File

@@ -1,6 +0,0 @@
ALTER TABLE ${_prefix}cms_category ADD COLUMN extend_json varchar(1000);
COMMENT ON COLUMN ${_prefix}cms_category.extend_json IS '扩展 JSON';
ALTER TABLE ${_prefix}cms_article_data ADD COLUMN extend_json varchar(1000);
COMMENT ON COLUMN ${_prefix}cms_article_data.extend_json IS '扩展 JSON';

View File

@@ -8,6 +8,9 @@
4.2.2
4.2.3
4.3.0
5.0.0
5.0.1
5.0.2
4.3.1
4.3.2
4.3.3
4.4.0
4.4.1
4.5.0

View File

@@ -73,15 +73,17 @@ var setting = {
}, tree, loadTree = function() {
js.ajaxSubmit("${ctx}/cms/category/treeData?___t="
+ new Date().getTime(), { }, function(data) {
tree = $.fn.zTree.init($("#tree"), setting, data);
var level = -1, nodes;
while (++level <= 1) {
nodes = tree.getNodesByParam("level", level);
if (nodes.length > 10) { break; }
for(var i=0; i<nodes.length; i++) {
tree.expandNode(nodes[i], true, false, false);
}
tree = $.fn.zTree.init($("#tree"), setting, data);//.expandAll(true);
// 展开第一级节点
var nodes = tree.getNodesByParam("level", 0);
for (var i = 0; i < nodes.length; i++) {
tree.expandNode(nodes[i], true, false, false);
}
// 展开第二级节点
// nodes = tree.getNodesByParam("level", 1);
// for(var i=0; i<nodes.length; i++) {
// tree.expandNode(nodes[i], true, false, false);
// }
}, null, null, js.text('loading.message'));
};
loadTree();

View File

@@ -1,18 +1,18 @@
<% layout('/layouts/default.html', {title: '文章评论表管理', libs: ['dataGrid']}){ %>
<div class="main-content">
<div class="box box-main">
<div class="box-header">
<div class="box-title">
<i class="fa fa-list-alt"></i> ${text('文章评论表管理')}
</div>
<div class="box-tools pull-right">
<a href="#" class="btn btn-default" id="btnSearch" title="${text('查询')}"><i class="fa fa-filter"></i> ${text('查询')}</a>
<% if(hasPermi('cms:comment:edit')){ %>
<a href="${ctx}/cms/comment/form" class="btn btn-default btnTool" title="${text('新增文章评论表')}"><i class="fa fa-plus"></i> ${text('新增')}</a>
<% } %>
</div>
</div>
<div class="box-body">
<% layout('/layouts/default.html', {title: '文章评论表管理', libs: ['dataGrid']}){ %>
<div class="main-content">
<div class="box box-main">
<div class="box-header">
<div class="box-title">
<i class="fa fa-list-alt"></i> ${text('文章评论表管理')}
</div>
<div class="box-tools pull-right">
<a href="#" class="btn btn-default" id="btnSearch" title="${text('查询')}"><i class="fa fa-filter"></i> ${text('查询')}</a>
<% if(hasPermi('cms:comment:edit')){ %>
<a href="${ctx}/cms/comment/form" class="btn btn-default btnTool" title="${text('新增文章评论表')}"><i class="fa fa-plus"></i> ${text('新增')}</a>
<% } %>
</div>
</div>
<div class="box-body">
<#form:form id="searchForm" model="${comment}" action="${ctx}/cms/comment/listData" method="post" class="form-inline hide"
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
<div class="form-group">
@@ -98,53 +98,53 @@
<button type="reset" class="btn btn-default btn-sm">${text('重置')}</button>
</div>
</#form:form>
<table id="dataGrid"></table>
<div id="dataGridPage"></div>
</div>
</div>
</div>
<% } %>
<script>
// 初始化DataGrid对象
$('#dataGrid').dataGrid({
searchForm: $("#searchForm"),
columnModel: [
{header:'${text('栏目编码')}', name:'categoryCode', index:'a.category_code', width:150, align:"left", frozen:true, formatter: function(val, obj, row, act){
return '<a href="${ctx}/cms/comment/form?id='+row.id+'" class="btnList" data-title="${text('编辑文章评论表')}">'+(val||row.id)+'</a>';
}},
{header:'${text('内容编号')}', name:'articleId', index:'a.article_id', width:150, align:"left"},
{header:'${text('父级评论')}', name:'parentId', index:'a.parent_id', width:150, align:"left"},
{header:'${text('内容标题')}', name:'articleTitle', index:'a.article_title', width:150, align:"left"},
{header:'${text('评论内容')}', name:'content', index:'a.content', width:150, align:"left"},
{header:'${text('评论姓名')}', name:'name', index:'a.name', width:150, align:"left"},
{header:'${text('评论IP')}', name:'ip', index:'a.ip', width:150, align:"left"},
{header:'${text('创建时间')}', name:'createDate', index:'a.create_date', width:150, align:"center"},
{header:'${text('审核人')}', name:'auditUserCode', index:'a.audit_user_code', width:150, align:"left"},
{header:'${text('审核时间')}', name:'auditDate', index:'a.audit_date', width:150, align:"center"},
{header:'${text('审核意见')}', name:'auditComment', index:'a.audit_comment', width:150, align:"left"},
{header:'${text('支持数')}', name:'hitsPlus', index:'a.hits_plus', width:150, align:"center"},
{header:'${text('反对数')}', name:'hitsMinus', index:'a.hits_minus', width:150, align:"center"},
{header:'${text('状态')}', name:'status', index:'a.status', width:150, align:"center", formatter: function(val, obj, row, act){
return js.getDictLabel(${@DictUtils.getDictListJson('sys_search_status')}, val, '${text('未知')}', true);
}},
{header:'${text('操作')}', name:'actions', width:120, formatter: function(val, obj, row, act){
var actions = [];
<% if(hasPermi('cms:comment:edit')){ %>
actions.push('<a href="${ctx}/cms/comment/form?id='+row.id+'" class="btnList" title="${text('编辑文章评论表')}"><i class="fa fa-pencil"></i></a>&nbsp;');
if (row.status == Global.STATUS_NORMAL){
actions.push('<a href="${ctx}/cms/comment/disable?id='+row.id+'" class="btnList" title="${text('停用文章评论表')}" data-confirm="${text('确认要停用该文章评论表吗')}"><i class="glyphicon glyphicon-ban-circle"></i></a>&nbsp;');
}
if (row.status == Global.STATUS_DISABLE){
actions.push('<a href="${ctx}/cms/comment/enable?id='+row.id+'" class="btnList" title="${text('启用文章评论表')}" data-confirm="${text('确认要启用该文章评论表吗')}"><i class="glyphicon glyphicon-ok-circle"></i></a>&nbsp;');
}
actions.push('<a href="${ctx}/cms/comment/delete?id='+row.id+'" class="btnList" title="${text('删除文章评论表')}" data-confirm="${text('确认要删除该文章评论表吗')}"><i class="fa fa-trash-o"></i></a>&nbsp;');
<% } %>
return actions.join('');
}}
],
// 加载成功后执行事件
ajaxSuccess: function(data){
}
});
<table id="dataGrid"></table>
<div id="dataGridPage"></div>
</div>
</div>
</div>
<% } %>
<script>
// 初始化DataGrid对象
$('#dataGrid').dataGrid({
searchForm: $("#searchForm"),
columnModel: [
{header:'${text('栏目编码')}', name:'categoryCode', index:'a.category_code', width:150, align:"left", frozen:true, formatter: function(val, obj, row, act){
return '<a href="${ctx}/cms/comment/form?id='+row.id+'" class="btnList" data-title="${text('编辑文章评论表')}">'+(val||row.id)+'</a>';
}},
{header:'${text('内容编号')}', name:'articleId', index:'a.article_id', width:150, align:"left"},
{header:'${text('父级评论')}', name:'parentId', index:'a.parent_id', width:150, align:"left"},
{header:'${text('内容标题')}', name:'articleTitle', index:'a.article_title', width:150, align:"left"},
{header:'${text('评论内容')}', name:'content', index:'a.content', width:150, align:"left"},
{header:'${text('评论姓名')}', name:'name', index:'a.name', width:150, align:"left"},
{header:'${text('评论IP')}', name:'ip', index:'a.ip', width:150, align:"left"},
{header:'${text('创建时间')}', name:'createDate', index:'a.create_date', width:150, align:"center"},
{header:'${text('审核人')}', name:'auditUserCode', index:'a.audit_user_code', width:150, align:"left"},
{header:'${text('审核时间')}', name:'auditDate', index:'a.audit_date', width:150, align:"center"},
{header:'${text('审核意见')}', name:'auditComment', index:'a.audit_comment', width:150, align:"left"},
{header:'${text('支持数')}', name:'hitsPlus', index:'a.hits_plus', width:150, align:"center"},
{header:'${text('反对数')}', name:'hitsMinus', index:'a.hits_minus', width:150, align:"center"},
{header:'${text('状态')}', name:'status', index:'a.status', width:150, align:"center", formatter: function(val, obj, row, act){
return js.getDictLabel(${@DictUtils.getDictListJson('sys_search_status')}, val, '${text('未知')}', true);
}},
{header:'${text('操作')}', name:'actions', width:120, formatter: function(val, obj, row, act){
var actions = [];
//<% if(hasPermi('cms:comment:edit')){ %>
actions.push('<a href="${ctx}/cms/comment/form?id='+row.id+'" class="btnList" title="${text('编辑文章评论表')}"><i class="fa fa-pencil"></i></a>&nbsp;');
if (row.status == Global.STATUS_NORMAL){
actions.push('<a href="${ctx}/cms/comment/disable?id='+row.id+'" class="btnList" title="${text('停用文章评论表')}" data-confirm="${text('确认要停用该文章评论表吗')}"><i class="glyphicon glyphicon-ban-circle"></i></a>&nbsp;');
}
if (row.status == Global.STATUS_DISABLE){
actions.push('<a href="${ctx}/cms/comment/enable?id='+row.id+'" class="btnList" title="${text('启用文章评论表')}" data-confirm="${text('确认要启用该文章评论表吗')}"><i class="glyphicon glyphicon-ok-circle"></i></a>&nbsp;');
}
actions.push('<a href="${ctx}/cms/comment/delete?id='+row.id+'" class="btnList" title="${text('删除文章评论表')}" data-confirm="${text('确认要删除该文章评论表吗')}"><i class="fa fa-trash-o"></i></a>&nbsp;');
//<% } %>
return actions.join('');
}}
],
// 加载成功后执行事件
ajaxSuccess: function(data){
}
});
</script>

View File

@@ -55,14 +55,16 @@ var setting = {
}
}, tree, loadTree = function() {
js.ajaxSubmit("${ctx}/cms/template/treeData?___t=" + new Date().getTime(), function(data) {
tree = $.fn.zTree.init($("#tree"), setting, data);
var level = -1, nodes;
while (++level <= 1) {
nodes = tree.getNodesByParam("level", level);
if (nodes.length > 10) { break; }
for(var i=0; i<nodes.length; i++) {
tree.expandNode(nodes[i], true, false, false);
}
tree = $.fn.zTree.init($("#tree"), setting, data);//.expandAll(true);
// 展开第一级节点
var nodes = tree.getNodesByParam("level", 0);
for (var i = 0; i < nodes.length; i++) {
tree.expandNode(nodes[i], true, false, false);
}
// 展开第二级节点
nodes = tree.getNodesByParam("level", 1);
for (var i = 0; i < nodes.length; i++) {
tree.expandNode(nodes[i], true, false, false);
}
}, null, null, js.text('loading.message'));
};

View File

@@ -11,5 +11,5 @@
<meta content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
<title>${(isNotBlank(title!) ? title! + ' - ' : '') + @Global.getConfig('productName')}</title>
<script src="${ctxPath}/global.min.js?ctx=${ctx}"></script>
<script src="${ctxStatic}/jquery/jquery-3.5.0.min.js"></script>
<script src="${ctxStatic}/jquery/jquery-migrate-3.2.0.min.js"></script>
<script src="${ctxStatic}/jquery/jquery-1.12.4.min.js"></script>
<script src="${ctxStatic}/jquery/jquery-migrate-1.4.1.min.js"></script>

File diff suppressed because it is too large Load Diff

View File

@@ -19,7 +19,6 @@ CREATE TABLE js_gen_table
function_name_simple vargraphic(50),
function_author vargraphic(50),
gen_base_dir vargraphic(1000),
gen_front_dir vargraphic(1000),
options vargraphic(1000),
create_by varchar(64) NOT NULL,
create_date timestamp NOT NULL,
@@ -122,7 +121,6 @@ CREATE TABLE js_sys_company
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (company_code)
);
@@ -200,7 +198,6 @@ CREATE TABLE js_sys_dict_data
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (dict_code)
);
@@ -316,27 +313,6 @@ CREATE TABLE js_sys_file_upload
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (id)
);
-- 系统健康检查
CREATE TABLE js_sys_health_check
(
id varchar(64) NOT NULL,
server_name vargraphic(50),
server_url vargraphic(500),
lic_version vargraphic(10),
heart_time timestamp,
timeout decimal(10),
state char(1),
status char(1) DEFAULT '0' NOT NULL,
create_by varchar(64) NOT NULL,
create_date timestamp NOT NULL,
update_by varchar(64) NOT NULL,
update_date timestamp NOT NULL,
remarks vargraphic(500),
PRIMARY KEY (id)
);
@@ -447,8 +423,6 @@ CREATE TABLE js_sys_menu
is_show char(1) NOT NULL,
sys_code varchar(64) NOT NULL,
module_codes varchar(500) NOT NULL,
component varchar(500),
params varchar(500),
status char(1) DEFAULT '0' NOT NULL,
create_by varchar(64) NOT NULL,
create_date timestamp NOT NULL,
@@ -475,7 +449,6 @@ CREATE TABLE js_sys_menu
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (menu_code)
);
@@ -664,7 +637,6 @@ CREATE TABLE js_sys_office
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (office_code)
);
@@ -673,7 +645,6 @@ CREATE TABLE js_sys_office
CREATE TABLE js_sys_post
(
post_code varchar(64) NOT NULL,
view_code varchar(100),
post_name varchar(100) NOT NULL,
post_type varchar(100),
post_sort decimal(10),
@@ -694,7 +665,6 @@ CREATE TABLE js_sys_role
(
role_code varchar(64) NOT NULL,
role_name varchar(100) NOT NULL,
view_code varchar(100),
role_type varchar(100),
role_sort decimal(10),
is_sys char(1),
@@ -729,7 +699,6 @@ CREATE TABLE js_sys_role
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (role_code)
);
@@ -816,7 +785,6 @@ CREATE TABLE js_sys_user
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (user_code)
);

View File

@@ -19,7 +19,6 @@ CREATE TABLE js_gen_table
function_name_simple varchar(50),
function_author varchar(50),
gen_base_dir varchar(1000),
gen_front_dir varchar(1000),
options varchar(1000),
create_by varchar(64) NOT NULL,
create_date datetime NOT NULL,
@@ -122,7 +121,6 @@ CREATE TABLE js_sys_company
extend_d2 datetime,
extend_d3 datetime,
extend_d4 datetime,
extend_json varchar(1000),
PRIMARY KEY (company_code)
);
@@ -200,7 +198,6 @@ CREATE TABLE js_sys_dict_data
extend_d2 datetime,
extend_d3 datetime,
extend_d4 datetime,
extend_json varchar(1000),
PRIMARY KEY (dict_code)
);
@@ -316,27 +313,6 @@ CREATE TABLE js_sys_file_upload
extend_d2 datetime,
extend_d3 datetime,
extend_d4 datetime,
extend_json varchar(1000),
PRIMARY KEY (id)
);
-- 系统健康检查
CREATE TABLE js_sys_health_check
(
id varchar(64) NOT NULL,
server_name varchar(50),
server_url varchar(500),
lic_version varchar(10),
heart_time datetime,
timeout decimal(10),
state char(1),
status char(1) DEFAULT '0' NOT NULL,
create_by varchar(64) NOT NULL,
create_date datetime NOT NULL,
update_by varchar(64) NOT NULL,
update_date datetime NOT NULL,
remarks varchar(500),
PRIMARY KEY (id)
);
@@ -447,8 +423,6 @@ CREATE TABLE js_sys_menu
is_show char(1) NOT NULL,
sys_code varchar(64) NOT NULL,
module_codes varchar(500) NOT NULL,
component varchar(500),
params varchar(500),
status char(1) DEFAULT '0' NOT NULL,
create_by varchar(64) NOT NULL,
create_date datetime NOT NULL,
@@ -475,7 +449,6 @@ CREATE TABLE js_sys_menu
extend_d2 datetime,
extend_d3 datetime,
extend_d4 datetime,
extend_json varchar(1000),
PRIMARY KEY (menu_code)
);
@@ -664,7 +637,6 @@ CREATE TABLE js_sys_office
extend_d2 datetime,
extend_d3 datetime,
extend_d4 datetime,
extend_json varchar(1000),
PRIMARY KEY (office_code)
);
@@ -673,7 +645,6 @@ CREATE TABLE js_sys_office
CREATE TABLE js_sys_post
(
post_code varchar(64) NOT NULL,
view_code varchar(100),
post_name varchar(100) NOT NULL,
post_type varchar(100),
post_sort decimal(10),
@@ -694,7 +665,6 @@ CREATE TABLE js_sys_role
(
role_code varchar(64) NOT NULL,
role_name varchar(100) NOT NULL,
view_code varchar(100),
role_type varchar(100),
role_sort decimal(10),
is_sys char(1),
@@ -729,7 +699,6 @@ CREATE TABLE js_sys_role
extend_d2 datetime,
extend_d3 datetime,
extend_d4 datetime,
extend_json varchar(1000),
PRIMARY KEY (role_code)
);
@@ -816,7 +785,6 @@ CREATE TABLE js_sys_user
extend_d2 datetime,
extend_d3 datetime,
extend_d4 datetime,
extend_json varchar(1000),
PRIMARY KEY (user_code)
);

View File

@@ -19,7 +19,6 @@ CREATE TABLE [js_gen_table]
[function_name_simple] nvarchar(50),
[function_author] nvarchar(50),
[gen_base_dir] nvarchar(1000),
[gen_front_dir] nvarchar(1000),
[options] nvarchar(1000),
[create_by] varchar(64) NOT NULL,
[create_date] datetime NOT NULL,
@@ -122,7 +121,6 @@ CREATE TABLE [js_sys_company]
[extend_d2] datetime,
[extend_d3] datetime,
[extend_d4] datetime,
[extend_json] varchar(1000),
PRIMARY KEY ([company_code])
);
@@ -200,7 +198,6 @@ CREATE TABLE [js_sys_dict_data]
[extend_d2] datetime,
[extend_d3] datetime,
[extend_d4] datetime,
[extend_json] varchar(1000),
PRIMARY KEY ([dict_code])
);
@@ -316,27 +313,6 @@ CREATE TABLE [js_sys_file_upload]
[extend_d2] datetime,
[extend_d3] datetime,
[extend_d4] datetime,
[extend_json] varchar(1000),
PRIMARY KEY ([id])
);
-- 系统健康检查
CREATE TABLE [js_sys_health_check]
(
[id] varchar(64) NOT NULL,
[server_name] nvarchar(50),
[server_url] nvarchar(500),
[lic_version] nvarchar(10),
[heart_time] datetime,
[timeout] decimal(10),
[state] char(1),
[status] char(1) DEFAULT '0' NOT NULL,
[create_by] varchar(64) NOT NULL,
[create_date] datetime NOT NULL,
[update_by] varchar(64) NOT NULL,
[update_date] datetime NOT NULL,
[remarks] nvarchar(500),
PRIMARY KEY ([id])
);
@@ -447,8 +423,6 @@ CREATE TABLE [js_sys_menu]
[is_show] char(1) NOT NULL,
[sys_code] varchar(64) NOT NULL,
[module_codes] varchar(500) NOT NULL,
[component] varchar(500),
[params] varchar(500),
[status] char(1) DEFAULT '0' NOT NULL,
[create_by] varchar(64) NOT NULL,
[create_date] datetime NOT NULL,
@@ -475,7 +449,6 @@ CREATE TABLE [js_sys_menu]
[extend_d2] datetime,
[extend_d3] datetime,
[extend_d4] datetime,
[extend_json] varchar(1000),
PRIMARY KEY ([menu_code])
);
@@ -664,7 +637,6 @@ CREATE TABLE [js_sys_office]
[extend_d2] datetime,
[extend_d3] datetime,
[extend_d4] datetime,
[extend_json] varchar(1000),
PRIMARY KEY ([office_code])
);
@@ -673,7 +645,6 @@ CREATE TABLE [js_sys_office]
CREATE TABLE [js_sys_post]
(
[post_code] varchar(64) NOT NULL,
[view_code] varchar(100),
[post_name] varchar(100) NOT NULL,
[post_type] varchar(100),
[post_sort] decimal(10),
@@ -694,7 +665,6 @@ CREATE TABLE [js_sys_role]
(
[role_code] varchar(64) NOT NULL,
[role_name] varchar(100) NOT NULL,
[view_code] varchar(100),
[role_type] varchar(100),
[role_sort] decimal(10),
[is_sys] char(1),
@@ -729,7 +699,6 @@ CREATE TABLE [js_sys_role]
[extend_d2] datetime,
[extend_d3] datetime,
[extend_d4] datetime,
[extend_json] varchar(1000),
PRIMARY KEY ([role_code])
);
@@ -816,7 +785,6 @@ CREATE TABLE [js_sys_user]
[extend_d2] datetime,
[extend_d3] datetime,
[extend_d4] datetime,
[extend_json] varchar(1000),
PRIMARY KEY ([user_code])
);

View File

@@ -20,7 +20,6 @@ CREATE TABLE js_gen_table
function_name_simple varchar(50) COMMENT '生成功能名(简写)',
function_author varchar(50) COMMENT '生成功能作者',
gen_base_dir varchar(1000) COMMENT '生成基础路径',
gen_front_dir varchar(1000) COMMENT '生成前端路径',
options varchar(1000) COMMENT '其它生成选项',
create_by varchar(64) NOT NULL COMMENT '创建者',
create_date datetime NOT NULL COMMENT '创建时间',
@@ -123,7 +122,6 @@ CREATE TABLE js_sys_company
extend_d2 datetime COMMENT '扩展 Date 2',
extend_d3 datetime COMMENT '扩展 Date 3',
extend_d4 datetime COMMENT '扩展 Date 4',
extend_json varchar(1000) COMMENT '扩展 JSON',
PRIMARY KEY (company_code)
) COMMENT = '公司表';
@@ -201,7 +199,6 @@ CREATE TABLE js_sys_dict_data
extend_d2 datetime COMMENT '扩展 Date 2',
extend_d3 datetime COMMENT '扩展 Date 3',
extend_d4 datetime COMMENT '扩展 Date 4',
extend_json varchar(1000) COMMENT '扩展 JSON',
PRIMARY KEY (dict_code)
) COMMENT = '字典数据表';
@@ -317,31 +314,10 @@ CREATE TABLE js_sys_file_upload
extend_d2 datetime COMMENT '扩展 Date 2',
extend_d3 datetime COMMENT '扩展 Date 3',
extend_d4 datetime COMMENT '扩展 Date 4',
extend_json varchar(1000) COMMENT '扩展 JSON',
PRIMARY KEY (id)
) COMMENT = '文件上传表';
-- 系统健康检查
CREATE TABLE js_sys_health_check
(
id varchar(64) NOT NULL COMMENT '编号',
server_name varchar(50) COMMENT '系统节点名称',
server_url varchar(500) COMMENT '系统节点地址',
lic_version varchar(10) COMMENT '系统许可版本',
heart_time datetime COMMENT '最后心跳时间',
timeout decimal(10) COMMENT '超时时间',
state char(1) COMMENT '服务状态',
status char(1) DEFAULT '0' NOT NULL COMMENT '状态0正常 1删除 2停用',
create_by varchar(64) NOT NULL COMMENT '创建者',
create_date datetime NOT NULL COMMENT '创建时间',
update_by varchar(64) NOT NULL COMMENT '更新者',
update_date datetime NOT NULL COMMENT '更新时间',
remarks varchar(500) COMMENT '备注信息',
PRIMARY KEY (id)
) COMMENT = '系统健康检查';
-- 作业调度表
CREATE TABLE js_sys_job
(
@@ -448,8 +424,6 @@ CREATE TABLE js_sys_menu
is_show char(1) NOT NULL COMMENT '是否显示1显示 0隐藏',
sys_code varchar(64) NOT NULL COMMENT '归属系统default:主导航菜单、mobileApp:APP菜单',
module_codes varchar(500) NOT NULL COMMENT '归属模块(多个用逗号隔开)',
component varchar(500) COMMENT '组件路径',
params varchar(500) COMMENT '组件参数',
status char(1) DEFAULT '0' NOT NULL COMMENT '状态0正常 1删除 2停用',
create_by varchar(64) NOT NULL COMMENT '创建者',
create_date datetime NOT NULL COMMENT '创建时间',
@@ -476,7 +450,6 @@ CREATE TABLE js_sys_menu
extend_d2 datetime COMMENT '扩展 Date 2',
extend_d3 datetime COMMENT '扩展 Date 3',
extend_d4 datetime COMMENT '扩展 Date 4',
extend_json varchar(1000) COMMENT '扩展 JSON',
PRIMARY KEY (menu_code)
) COMMENT = '菜单表';
@@ -665,7 +638,6 @@ CREATE TABLE js_sys_office
extend_d2 datetime COMMENT '扩展 Date 2',
extend_d3 datetime COMMENT '扩展 Date 3',
extend_d4 datetime COMMENT '扩展 Date 4',
extend_json varchar(1000) COMMENT '扩展 JSON',
PRIMARY KEY (office_code)
) COMMENT = '组织机构表';
@@ -674,7 +646,6 @@ CREATE TABLE js_sys_office
CREATE TABLE js_sys_post
(
post_code varchar(64) NOT NULL COMMENT '岗位编码',
view_code varchar(100) COMMENT '岗位代码',
post_name varchar(100) NOT NULL COMMENT '岗位名称',
post_type varchar(100) COMMENT '岗位分类(高管、中层、基层)',
post_sort decimal(10) COMMENT '岗位排序(升序)',
@@ -695,7 +666,6 @@ CREATE TABLE js_sys_role
(
role_code varchar(64) NOT NULL COMMENT '角色编码',
role_name varchar(100) NOT NULL COMMENT '角色名称',
view_code varchar(100) COMMENT '角色代码',
role_type varchar(100) COMMENT '角色分类(高管、中层、基层、其它)',
role_sort decimal(10) COMMENT '角色排序(升序)',
is_sys char(1) COMMENT '系统内置1是 0否',
@@ -730,7 +700,6 @@ CREATE TABLE js_sys_role
extend_d2 datetime COMMENT '扩展 Date 2',
extend_d3 datetime COMMENT '扩展 Date 3',
extend_d4 datetime COMMENT '扩展 Date 4',
extend_json varchar(1000) COMMENT '扩展 JSON',
PRIMARY KEY (role_code)
) COMMENT = '角色表';
@@ -817,7 +786,6 @@ CREATE TABLE js_sys_user
extend_d2 datetime COMMENT '扩展 Date 2',
extend_d3 datetime COMMENT '扩展 Date 3',
extend_d4 datetime COMMENT '扩展 Date 4',
extend_json varchar(1000) COMMENT '扩展 JSON',
PRIMARY KEY (user_code)
) COMMENT = '用户表';

View File

@@ -19,7 +19,6 @@ CREATE TABLE js_gen_table
function_name_simple nvarchar2(50),
function_author nvarchar2(50),
gen_base_dir nvarchar2(1000),
gen_front_dir nvarchar2(1000),
options nvarchar2(1000),
create_by varchar2(64) NOT NULL,
create_date timestamp NOT NULL,
@@ -122,7 +121,6 @@ CREATE TABLE js_sys_company
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar2(1000),
PRIMARY KEY (company_code)
);
@@ -200,7 +198,6 @@ CREATE TABLE js_sys_dict_data
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar2(1000),
PRIMARY KEY (dict_code)
);
@@ -316,27 +313,6 @@ CREATE TABLE js_sys_file_upload
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar2(1000),
PRIMARY KEY (id)
);
-- 系统健康检查
CREATE TABLE js_sys_health_check
(
id varchar2(64) NOT NULL,
server_name nvarchar2(50),
server_url nvarchar2(500),
lic_version nvarchar2(10),
heart_time timestamp,
timeout number(10),
state char(1),
status char(1) DEFAULT '0' NOT NULL,
create_by varchar2(64) NOT NULL,
create_date timestamp NOT NULL,
update_by varchar2(64) NOT NULL,
update_date timestamp NOT NULL,
remarks nvarchar2(500),
PRIMARY KEY (id)
);
@@ -447,8 +423,6 @@ CREATE TABLE js_sys_menu
is_show char(1) NOT NULL,
sys_code varchar2(64) NOT NULL,
module_codes varchar2(500) NOT NULL,
component varchar2(500),
params varchar2(500),
status char(1) DEFAULT '0' NOT NULL,
create_by varchar2(64) NOT NULL,
create_date timestamp NOT NULL,
@@ -475,7 +449,6 @@ CREATE TABLE js_sys_menu
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar2(1000),
PRIMARY KEY (menu_code)
);
@@ -664,7 +637,6 @@ CREATE TABLE js_sys_office
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar2(1000),
PRIMARY KEY (office_code)
);
@@ -673,7 +645,6 @@ CREATE TABLE js_sys_office
CREATE TABLE js_sys_post
(
post_code varchar2(64) NOT NULL,
view_code varchar2(100),
post_name varchar2(100) NOT NULL,
post_type varchar2(100),
post_sort number(10),
@@ -694,7 +665,6 @@ CREATE TABLE js_sys_role
(
role_code varchar2(64) NOT NULL,
role_name varchar2(100) NOT NULL,
view_code varchar2(100),
role_type varchar2(100),
role_sort number(10),
is_sys char(1),
@@ -729,7 +699,6 @@ CREATE TABLE js_sys_role
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar2(1000),
PRIMARY KEY (role_code)
);
@@ -816,7 +785,6 @@ CREATE TABLE js_sys_user
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar2(1000),
PRIMARY KEY (user_code)
);
@@ -988,7 +956,6 @@ COMMENT ON COLUMN js_gen_table.function_name IS '生成功能名';
COMMENT ON COLUMN js_gen_table.function_name_simple IS '生成功能名(简写)';
COMMENT ON COLUMN js_gen_table.function_author IS '生成功能作者';
COMMENT ON COLUMN js_gen_table.gen_base_dir IS '生成基础路径';
COMMENT ON COLUMN js_gen_table.gen_front_dir IS '生成前端路径';
COMMENT ON COLUMN js_gen_table.options IS '其它生成选项';
COMMENT ON COLUMN js_gen_table.create_by IS '创建者';
COMMENT ON COLUMN js_gen_table.create_date IS '创建时间';
@@ -1073,7 +1040,6 @@ COMMENT ON COLUMN js_sys_company.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_sys_company.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_sys_company.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_sys_company.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN js_sys_company.extend_json IS '扩展 JSON';
COMMENT ON TABLE js_sys_company_office IS '公司部门关联表';
COMMENT ON COLUMN js_sys_company_office.company_code IS '公司编码';
COMMENT ON COLUMN js_sys_company_office.office_code IS '机构编码';
@@ -1133,7 +1099,6 @@ COMMENT ON COLUMN js_sys_dict_data.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_sys_dict_data.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_sys_dict_data.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_sys_dict_data.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN js_sys_dict_data.extend_json IS '扩展 JSON';
COMMENT ON TABLE js_sys_dict_type IS '字典类型表';
COMMENT ON COLUMN js_sys_dict_type.id IS '编号';
COMMENT ON COLUMN js_sys_dict_type.dict_name IS '字典名称';
@@ -1213,21 +1178,6 @@ COMMENT ON COLUMN js_sys_file_upload.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_sys_file_upload.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_sys_file_upload.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_sys_file_upload.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN js_sys_file_upload.extend_json IS '扩展 JSON';
COMMENT ON TABLE js_sys_health_check IS '系统健康检查';
COMMENT ON COLUMN js_sys_health_check.id IS '编号';
COMMENT ON COLUMN js_sys_health_check.server_name IS '系统节点名称';
COMMENT ON COLUMN js_sys_health_check.server_url IS '系统节点地址';
COMMENT ON COLUMN js_sys_health_check.lic_version IS '系统许可版本';
COMMENT ON COLUMN js_sys_health_check.heart_time IS '最后心跳时间';
COMMENT ON COLUMN js_sys_health_check.timeout IS '超时时间';
COMMENT ON COLUMN js_sys_health_check.state IS '服务状态';
COMMENT ON COLUMN js_sys_health_check.status IS '状态0正常 1删除 2停用';
COMMENT ON COLUMN js_sys_health_check.create_by IS '创建者';
COMMENT ON COLUMN js_sys_health_check.create_date IS '创建时间';
COMMENT ON COLUMN js_sys_health_check.update_by IS '更新者';
COMMENT ON COLUMN js_sys_health_check.update_date IS '更新时间';
COMMENT ON COLUMN js_sys_health_check.remarks IS '备注信息';
COMMENT ON TABLE js_sys_job IS '作业调度表';
COMMENT ON COLUMN js_sys_job.job_name IS '任务名称';
COMMENT ON COLUMN js_sys_job.job_group IS '任务组名';
@@ -1308,8 +1258,6 @@ COMMENT ON COLUMN js_sys_menu.weight IS '菜单权重';
COMMENT ON COLUMN js_sys_menu.is_show IS '是否显示1显示 0隐藏';
COMMENT ON COLUMN js_sys_menu.sys_code IS '归属系统default:主导航菜单、mobileApp:APP菜单';
COMMENT ON COLUMN js_sys_menu.module_codes IS '归属模块(多个用逗号隔开)';
COMMENT ON COLUMN js_sys_menu.component IS '组件路径';
COMMENT ON COLUMN js_sys_menu.params IS '组件参数';
COMMENT ON COLUMN js_sys_menu.status IS '状态0正常 1删除 2停用';
COMMENT ON COLUMN js_sys_menu.create_by IS '创建者';
COMMENT ON COLUMN js_sys_menu.create_date IS '创建时间';
@@ -1336,7 +1284,6 @@ COMMENT ON COLUMN js_sys_menu.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_sys_menu.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_sys_menu.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_sys_menu.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN js_sys_menu.extend_json IS '扩展 JSON';
COMMENT ON TABLE js_sys_module IS '模块表';
COMMENT ON COLUMN js_sys_module.module_code IS '模块编码';
COMMENT ON COLUMN js_sys_module.module_name IS '模块名称';
@@ -1483,10 +1430,8 @@ COMMENT ON COLUMN js_sys_office.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_sys_office.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_sys_office.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_sys_office.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN js_sys_office.extend_json IS '扩展 JSON';
COMMENT ON TABLE js_sys_post IS '员工岗位表';
COMMENT ON COLUMN js_sys_post.post_code IS '岗位编码';
COMMENT ON COLUMN js_sys_post.view_code IS '岗位代码';
COMMENT ON COLUMN js_sys_post.post_name IS '岗位名称';
COMMENT ON COLUMN js_sys_post.post_type IS '岗位分类(高管、中层、基层)';
COMMENT ON COLUMN js_sys_post.post_sort IS '岗位排序(升序)';
@@ -1501,7 +1446,6 @@ COMMENT ON COLUMN js_sys_post.corp_name IS '租户名称';
COMMENT ON TABLE js_sys_role IS '角色表';
COMMENT ON COLUMN js_sys_role.role_code IS '角色编码';
COMMENT ON COLUMN js_sys_role.role_name IS '角色名称';
COMMENT ON COLUMN js_sys_role.view_code IS '角色代码';
COMMENT ON COLUMN js_sys_role.role_type IS '角色分类(高管、中层、基层、其它)';
COMMENT ON COLUMN js_sys_role.role_sort IS '角色排序(升序)';
COMMENT ON COLUMN js_sys_role.is_sys IS '系统内置1是 0否';
@@ -1536,7 +1480,6 @@ COMMENT ON COLUMN js_sys_role.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_sys_role.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_sys_role.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_sys_role.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN js_sys_role.extend_json IS '扩展 JSON';
COMMENT ON TABLE js_sys_role_data_scope IS '角色数据权限表';
COMMENT ON COLUMN js_sys_role_data_scope.role_code IS '控制角色编码';
COMMENT ON COLUMN js_sys_role_data_scope.ctrl_type IS '控制类型';
@@ -1605,7 +1548,6 @@ COMMENT ON COLUMN js_sys_user.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_sys_user.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_sys_user.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_sys_user.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN js_sys_user.extend_json IS '扩展 JSON';
COMMENT ON TABLE js_sys_user_data_scope IS '用户数据权限表';
COMMENT ON COLUMN js_sys_user_data_scope.user_code IS '控制用户编码';
COMMENT ON COLUMN js_sys_user_data_scope.ctrl_type IS '控制类型';

View File

@@ -19,7 +19,6 @@ CREATE TABLE js_gen_table
function_name_simple varchar(50),
function_author varchar(50),
gen_base_dir varchar(1000),
gen_front_dir varchar(1000),
options varchar(1000),
create_by varchar(64) NOT NULL,
create_date timestamp NOT NULL,
@@ -122,7 +121,6 @@ CREATE TABLE js_sys_company
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (company_code)
) WITHOUT OIDS;
@@ -200,7 +198,6 @@ CREATE TABLE js_sys_dict_data
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (dict_code)
) WITHOUT OIDS;
@@ -316,27 +313,6 @@ CREATE TABLE js_sys_file_upload
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (id)
) WITHOUT OIDS;
-- 系统健康检查
CREATE TABLE js_sys_health_check
(
id varchar(64) NOT NULL,
server_name varchar(50),
server_url varchar(500),
lic_version varchar(10),
heart_time timestamp,
timeout decimal(10),
state char(1),
status char(1) DEFAULT '0' NOT NULL,
create_by varchar(64) NOT NULL,
create_date timestamp NOT NULL,
update_by varchar(64) NOT NULL,
update_date timestamp NOT NULL,
remarks varchar(500),
PRIMARY KEY (id)
) WITHOUT OIDS;
@@ -447,8 +423,6 @@ CREATE TABLE js_sys_menu
is_show char(1) NOT NULL,
sys_code varchar(64) NOT NULL,
module_codes varchar(500) NOT NULL,
component varchar(500),
params varchar(500),
status char(1) DEFAULT '0' NOT NULL,
create_by varchar(64) NOT NULL,
create_date timestamp NOT NULL,
@@ -475,7 +449,6 @@ CREATE TABLE js_sys_menu
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (menu_code)
) WITHOUT OIDS;
@@ -664,7 +637,6 @@ CREATE TABLE js_sys_office
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (office_code)
) WITHOUT OIDS;
@@ -673,7 +645,6 @@ CREATE TABLE js_sys_office
CREATE TABLE js_sys_post
(
post_code varchar(64) NOT NULL,
view_code varchar(100),
post_name varchar(100) NOT NULL,
post_type varchar(100),
post_sort decimal(10),
@@ -694,7 +665,6 @@ CREATE TABLE js_sys_role
(
role_code varchar(64) NOT NULL,
role_name varchar(100) NOT NULL,
view_code varchar(100),
role_type varchar(100),
role_sort decimal(10),
is_sys char(1),
@@ -729,7 +699,6 @@ CREATE TABLE js_sys_role
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (role_code)
) WITHOUT OIDS;
@@ -816,7 +785,6 @@ CREATE TABLE js_sys_user
extend_d2 timestamp,
extend_d3 timestamp,
extend_d4 timestamp,
extend_json varchar(1000),
PRIMARY KEY (user_code)
) WITHOUT OIDS;
@@ -988,7 +956,6 @@ COMMENT ON COLUMN js_gen_table.function_name IS '生成功能名';
COMMENT ON COLUMN js_gen_table.function_name_simple IS '生成功能名(简写)';
COMMENT ON COLUMN js_gen_table.function_author IS '生成功能作者';
COMMENT ON COLUMN js_gen_table.gen_base_dir IS '生成基础路径';
COMMENT ON COLUMN js_gen_table.gen_front_dir IS '生成前端路径';
COMMENT ON COLUMN js_gen_table.options IS '其它生成选项';
COMMENT ON COLUMN js_gen_table.create_by IS '创建者';
COMMENT ON COLUMN js_gen_table.create_date IS '创建时间';
@@ -1073,7 +1040,6 @@ COMMENT ON COLUMN js_sys_company.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_sys_company.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_sys_company.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_sys_company.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN js_sys_company.extend_json IS '扩展 JSON';
COMMENT ON TABLE js_sys_company_office IS '公司部门关联表';
COMMENT ON COLUMN js_sys_company_office.company_code IS '公司编码';
COMMENT ON COLUMN js_sys_company_office.office_code IS '机构编码';
@@ -1133,7 +1099,6 @@ COMMENT ON COLUMN js_sys_dict_data.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_sys_dict_data.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_sys_dict_data.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_sys_dict_data.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN js_sys_dict_data.extend_json IS '扩展 JSON';
COMMENT ON TABLE js_sys_dict_type IS '字典类型表';
COMMENT ON COLUMN js_sys_dict_type.id IS '编号';
COMMENT ON COLUMN js_sys_dict_type.dict_name IS '字典名称';
@@ -1213,21 +1178,6 @@ COMMENT ON COLUMN js_sys_file_upload.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_sys_file_upload.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_sys_file_upload.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_sys_file_upload.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN js_sys_file_upload.extend_json IS '扩展 JSON';
COMMENT ON TABLE js_sys_health_check IS '系统健康检查';
COMMENT ON COLUMN js_sys_health_check.id IS '编号';
COMMENT ON COLUMN js_sys_health_check.server_name IS '系统节点名称';
COMMENT ON COLUMN js_sys_health_check.server_url IS '系统节点地址';
COMMENT ON COLUMN js_sys_health_check.lic_version IS '系统许可版本';
COMMENT ON COLUMN js_sys_health_check.heart_time IS '最后心跳时间';
COMMENT ON COLUMN js_sys_health_check.timeout IS '超时时间';
COMMENT ON COLUMN js_sys_health_check.state IS '服务状态';
COMMENT ON COLUMN js_sys_health_check.status IS '状态0正常 1删除 2停用';
COMMENT ON COLUMN js_sys_health_check.create_by IS '创建者';
COMMENT ON COLUMN js_sys_health_check.create_date IS '创建时间';
COMMENT ON COLUMN js_sys_health_check.update_by IS '更新者';
COMMENT ON COLUMN js_sys_health_check.update_date IS '更新时间';
COMMENT ON COLUMN js_sys_health_check.remarks IS '备注信息';
COMMENT ON TABLE js_sys_job IS '作业调度表';
COMMENT ON COLUMN js_sys_job.job_name IS '任务名称';
COMMENT ON COLUMN js_sys_job.job_group IS '任务组名';
@@ -1308,8 +1258,6 @@ COMMENT ON COLUMN js_sys_menu.weight IS '菜单权重';
COMMENT ON COLUMN js_sys_menu.is_show IS '是否显示1显示 0隐藏';
COMMENT ON COLUMN js_sys_menu.sys_code IS '归属系统default:主导航菜单、mobileApp:APP菜单';
COMMENT ON COLUMN js_sys_menu.module_codes IS '归属模块(多个用逗号隔开)';
COMMENT ON COLUMN js_sys_menu.component IS '组件路径';
COMMENT ON COLUMN js_sys_menu.params IS '组件参数';
COMMENT ON COLUMN js_sys_menu.status IS '状态0正常 1删除 2停用';
COMMENT ON COLUMN js_sys_menu.create_by IS '创建者';
COMMENT ON COLUMN js_sys_menu.create_date IS '创建时间';
@@ -1336,7 +1284,6 @@ COMMENT ON COLUMN js_sys_menu.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_sys_menu.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_sys_menu.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_sys_menu.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN js_sys_menu.extend_json IS '扩展 JSON';
COMMENT ON TABLE js_sys_module IS '模块表';
COMMENT ON COLUMN js_sys_module.module_code IS '模块编码';
COMMENT ON COLUMN js_sys_module.module_name IS '模块名称';
@@ -1483,10 +1430,8 @@ COMMENT ON COLUMN js_sys_office.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_sys_office.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_sys_office.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_sys_office.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN js_sys_office.extend_json IS '扩展 JSON';
COMMENT ON TABLE js_sys_post IS '员工岗位表';
COMMENT ON COLUMN js_sys_post.post_code IS '岗位编码';
COMMENT ON COLUMN js_sys_post.view_code IS '岗位代码';
COMMENT ON COLUMN js_sys_post.post_name IS '岗位名称';
COMMENT ON COLUMN js_sys_post.post_type IS '岗位分类(高管、中层、基层)';
COMMENT ON COLUMN js_sys_post.post_sort IS '岗位排序(升序)';
@@ -1501,7 +1446,6 @@ COMMENT ON COLUMN js_sys_post.corp_name IS '租户名称';
COMMENT ON TABLE js_sys_role IS '角色表';
COMMENT ON COLUMN js_sys_role.role_code IS '角色编码';
COMMENT ON COLUMN js_sys_role.role_name IS '角色名称';
COMMENT ON COLUMN js_sys_role.view_code IS '角色代码';
COMMENT ON COLUMN js_sys_role.role_type IS '角色分类(高管、中层、基层、其它)';
COMMENT ON COLUMN js_sys_role.role_sort IS '角色排序(升序)';
COMMENT ON COLUMN js_sys_role.is_sys IS '系统内置1是 0否';
@@ -1536,7 +1480,6 @@ COMMENT ON COLUMN js_sys_role.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_sys_role.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_sys_role.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_sys_role.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN js_sys_role.extend_json IS '扩展 JSON';
COMMENT ON TABLE js_sys_role_data_scope IS '角色数据权限表';
COMMENT ON COLUMN js_sys_role_data_scope.role_code IS '控制角色编码';
COMMENT ON COLUMN js_sys_role_data_scope.ctrl_type IS '控制类型';
@@ -1605,7 +1548,6 @@ COMMENT ON COLUMN js_sys_user.extend_d1 IS '扩展 Date 1';
COMMENT ON COLUMN js_sys_user.extend_d2 IS '扩展 Date 2';
COMMENT ON COLUMN js_sys_user.extend_d3 IS '扩展 Date 3';
COMMENT ON COLUMN js_sys_user.extend_d4 IS '扩展 Date 4';
COMMENT ON COLUMN js_sys_user.extend_json IS '扩展 JSON';
COMMENT ON TABLE js_sys_user_data_scope IS '用户数据权限表';
COMMENT ON COLUMN js_sys_user_data_scope.user_code IS '控制用户编码';
COMMENT ON COLUMN js_sys_user_data_scope.ctrl_type IS '控制类型';

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>5.0.2-SNAPSHOT</version>
<version>4.5.0-SNAPSHOT</version>
<relativePath>../../parent/pom.xml</relativePath>
</parent>
@@ -17,10 +17,6 @@
<url>http://jeesite.com</url>
<inceptionYear>2013-Now</inceptionYear>
<properties>
</properties>
<dependencies>
<!-- MySQL -->

View File

@@ -6,12 +6,10 @@ package com.jeesite.autoconfigure.sys;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.jeesite.common.mybatis.MyBatisFactoryBean;
import com.jeesite.modules.msg.service.MsgInnerService;
import com.jeesite.modules.sys.service.AreaService;
import com.jeesite.modules.sys.service.CompanyService;
import com.jeesite.modules.sys.service.EmpUserService;
@@ -34,7 +32,6 @@ import com.jeesite.modules.sys.service.support.PostServiceSupport;
*/
@Configuration(proxyBeanMethods = false)
@ConditionalOnBean(MyBatisFactoryBean.class)
@ConditionalOnProperty(name="user.enabled", havingValue="true", matchIfMissing=true)
public class SysAutoConfiguration {
@Bean
@@ -79,10 +76,4 @@ public class SysAutoConfiguration {
return new PostServiceSupport();
}
@Bean
@ConditionalOnMissingBean
public MsgInnerService msgInnerService(){
return new MsgInnerService();
}
}

View File

@@ -372,7 +372,6 @@ public class FormFilter extends org.apache.shiro.web.filter.authc.FormAuthentica
}
data.put("result", "login");
data.put("demoMode", Global.isDemoMode());
return data;
}
@@ -424,7 +423,6 @@ public class FormFilter extends org.apache.shiro.web.filter.authc.FormAuthentica
}
data.put("result", Global.FALSE);
data.put("demoMode", Global.isDemoMode());
return data;
}

View File

@@ -73,7 +73,7 @@ public class AuthorizingRealm extends BaseAuthorizingRealm {
* @return 16位salt密钥 + 40位hash密码
*/
@Override
public String encryptPassword(String plainPassword) {
public String encryptPassword(String plainPassword) {
String plain = EncodeUtils.decodeHtml(plainPassword);
byte[] salt = Sha1Utils.genSalt(SALT_SIZE);
byte[] hashPassword = Sha1Utils.sha1(plain.getBytes(), salt, HASH_INTERATIONS);

View File

@@ -4,12 +4,12 @@
*/
package com.jeesite.common.utils.excel.fieldtype;
import java.util.List;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.modules.sys.entity.Area;
import com.jeesite.modules.sys.utils.AreaUtils;
import java.util.List;
/**
* 字段类型转换
* @author ThinkGem
@@ -28,7 +28,7 @@ public class AreaType implements FieldType {
* 获取对象值(导入)
*/
@Override
public Object getValue(String val) {
public Object getValue(String val) {
for (Area e : list){
if (StringUtils.trimToEmpty(val).equals(e.getAreaName())){
return e;

View File

@@ -28,7 +28,7 @@ public class OfficeType implements FieldType {
* 获取对象值(导入)
*/
@Override
public Object getValue(String val) {
public Object getValue(String val) {
for (Office e : list){
if (StringUtils.trimToEmpty(val).equals(e.getOfficeName())){
return e;
@@ -41,7 +41,7 @@ public class OfficeType implements FieldType {
* 设置对象值(导出)
*/
@Override
public String setValue(Object val) {
public String setValue(Object val) {
if (val != null && ((Office)val).getOfficeName() != null){
return ((Office)val).getOfficeName();
}

View File

@@ -32,7 +32,7 @@ public class PostListType implements FieldType {
* 获取对象值(导入)
*/
@Override
public Object getValue(String val) {
public Object getValue(String val) {
List<String> list = new ArrayList<String>();
for (String s : StringUtils.split(val, ",")) {
for (Post e : postList) {
@@ -48,7 +48,7 @@ public class PostListType implements FieldType {
* 设置对象值(导出)
*/
@Override
public String setValue(Object val) {
public String setValue(Object val) {
if (val != null) {
@SuppressWarnings("unchecked")
List<Post> postList = (List<Post>) val;

View File

@@ -32,7 +32,7 @@ public class RoleListType implements FieldType {
* 获取对象值(导入)
*/
@Override
public Object getValue(String val) {
public Object getValue(String val) {
List<String> list = new ArrayList<String>();
for (String s : StringUtils.split(val, ",")) {
for (Role e : roleList) {
@@ -48,7 +48,7 @@ public class RoleListType implements FieldType {
* 设置对象值(导出)
*/
@Override
public String setValue(Object val) {
public String setValue(Object val) {
if (val != null) {
@SuppressWarnings("unchecked")
List<Role> roleList = (List<Role>) val;

View File

@@ -18,7 +18,6 @@ import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSource
import org.apache.shiro.web.filter.InvalidRequestFilter;
import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -53,7 +52,6 @@ import com.jeesite.common.shiro.web.WebSecurityManager;
*/
@SuppressWarnings("deprecation")
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(name="user.enabled", havingValue="true", matchIfMissing=true)
public class ShiroConfig {
/**

View File

@@ -10,7 +10,7 @@ import org.springframework.web.servlet.config.annotation.DefaultServletHandlerCo
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* 是否启用默认 Servlet 映射(启用后可访问 webapp 下的静态资源)
* 是否启用默认 Servlet 映射(启用后可访问 webapp 下的静态资源访问
* @author ThinkGem
* @version 2022年4月18日
*/

View File

@@ -4,14 +4,20 @@
*/
package com.jeesite.modules.config.web;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import com.alibaba.druid.util.Utils;
import com.jeesite.common.web.http.ServletUtils;
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 com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* Druid 配置
@@ -44,7 +50,19 @@ public class DruidStatConfig {
@Bean
public ServletRegistrationBean<StatViewServlet> druidServlet() {
ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>();
bean.setServlet(new StatViewServlet());
bean.setServlet(new StatViewServlet(){
@Override
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String requestURI = request.getRequestURI();
if (requestURI.endsWith("/druid/js/common.js")) {
String text = Utils.readFromResource("support/http/resources/js/common.js");
text = text.replaceAll("<a.*?banner\"></a><br/>", "JeeSite 数据监控, ");
ServletUtils.renderString(response, text, "text/javascript;charset=UTF-8");
return;
}
super.service(request, response);
}
});
bean.addUrlMappings("/druid/*");
return bean;
}

View File

@@ -7,7 +7,6 @@ package com.jeesite.modules.msg.dao;
import com.jeesite.common.dao.CrudDao;
import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.msg.entity.MsgInner;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
/**
* 内部消息DAO接口
@@ -15,7 +14,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
* @version 2019-03-12
*/
@MyBatisDao
@ConditionalOnProperty(name="user.enabled", havingValue="true", matchIfMissing=true)
public interface MsgInnerDao extends CrudDao<MsgInner> {
}

View File

@@ -7,7 +7,6 @@ package com.jeesite.modules.msg.dao;
import com.jeesite.common.dao.CrudDao;
import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.msg.entity.MsgInnerRecord;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
/**
* 内部消息发送记录表DAO接口
@@ -15,7 +14,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
* @version 2019-03-12
*/
@MyBatisDao
@ConditionalOnProperty(name="user.enabled", havingValue="true", matchIfMissing=true)
public interface MsgInnerRecordDao extends CrudDao<MsgInnerRecord> {
/**

View File

@@ -23,6 +23,7 @@ import com.jeesite.modules.sys.entity.User;
import com.jeesite.modules.sys.service.EmpUserService;
import io.netty.util.concurrent.DefaultThreadFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
@@ -37,6 +38,7 @@ import java.util.concurrent.TimeUnit;
* @author ThinkGem
* @version 2019-03-12
*/
@Service
public class MsgInnerService extends CrudService<MsgInnerDao, MsgInner> {
@Autowired
@@ -60,7 +62,8 @@ public class MsgInnerService extends CrudService<MsgInnerDao, MsgInner> {
/**
* 查询分页数据
* @param msgInner 查询条件.page 分页对象
* @param msgInner 查询条件
* @param msgInner.page 分页对象
* @return
*/
@Override
@@ -187,7 +190,7 @@ public class MsgInnerService extends CrudService<MsgInnerDao, MsgInner> {
if (Global.TRUE.equals(Global.getProperty("msg.realtime.enabled"))){
msgPushThreadPool.submit(new Runnable() {
@Override
public void run() {
public void run() {
try{
MsgPushUtils.getMsgPushTask().execute();
}catch(Exception ex){

View File

@@ -9,7 +9,6 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.annotation.Validated;
@@ -34,7 +33,6 @@ import com.jeesite.modules.msg.service.MsgInnerService;
*/
@Controller
@RequestMapping(value = "${adminPath}/msg/msgInner")
@ConditionalOnProperty(name={"user.enabled","web.core.enabled"}, havingValue="true", matchIfMissing=true)
public class MsgInnerController extends BaseController {
@Autowired

View File

@@ -7,7 +7,6 @@ package com.jeesite.modules.sys.dao;
import com.jeesite.common.dao.TreeDao;
import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.Area;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
/**
* 行政区划DAO接口
@@ -15,7 +14,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
* @version 2017-03-22
*/
@MyBatisDao
@ConditionalOnProperty(name="user.enabled", havingValue="true", matchIfMissing=true)
public interface AreaDao extends TreeDao<Area> {
}

View File

@@ -7,7 +7,6 @@ package com.jeesite.modules.sys.dao;
import com.jeesite.common.dao.TreeDao;
import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.Company;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
/**
* 公司管理DAO接口
@@ -15,7 +14,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
* @version 2017-03-12
*/
@MyBatisDao
@ConditionalOnProperty(name="user.enabled", havingValue="true", matchIfMissing=true)
public interface CompanyDao extends TreeDao<Company> {
}

View File

@@ -7,7 +7,6 @@ package com.jeesite.modules.sys.dao;
import com.jeesite.common.dao.CrudDao;
import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.CompanyOffice;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
/**
* 公司机构DAO接口
@@ -15,7 +14,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
* @version 2017-03-23
*/
@MyBatisDao
@ConditionalOnProperty(name="user.enabled", havingValue="true", matchIfMissing=true)
public interface CompanyOfficeDao extends CrudDao<CompanyOffice> {
}

View File

@@ -9,7 +9,6 @@ import java.util.List;
import com.jeesite.common.dao.CrudDao;
import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.EmpUser;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
/**
* 员工管理DAO接口
@@ -17,7 +16,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
* @version 2017-03-25
*/
@MyBatisDao
@ConditionalOnProperty(name="user.enabled", havingValue="true", matchIfMissing=true)
public interface EmpUserDao extends CrudDao<EmpUser> {
/**

View File

@@ -7,7 +7,6 @@ package com.jeesite.modules.sys.dao;
import com.jeesite.common.dao.CrudDao;
import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.Employee;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
/**
* 员工管理DAO接口
@@ -17,7 +16,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
* 但是,在 4.2.0+ 版本中,新增了 userTypeMap 指定 service所以无需设置 entity 类型。
*/
@MyBatisDao(entity = Employee.class)
@ConditionalOnProperty(name="user.enabled", havingValue="true", matchIfMissing=true)
public interface EmployeeDao extends CrudDao<Employee> {
}

View File

@@ -7,7 +7,6 @@ package com.jeesite.modules.sys.dao;
import com.jeesite.common.dao.CrudDao;
import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.EmployeeOffice;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
/**
* 员工附属机构关系表DAO接口
@@ -15,7 +14,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
* @version 2019-04-29
*/
@MyBatisDao
@ConditionalOnProperty(name="user.enabled", havingValue="true", matchIfMissing=true)
public interface EmployeeOfficeDao extends CrudDao<EmployeeOffice> {
}

View File

@@ -7,7 +7,6 @@ package com.jeesite.modules.sys.dao;
import com.jeesite.common.dao.CrudDao;
import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.EmployeePost;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
/**
* 员工岗位DAO接口
@@ -15,7 +14,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
* @version 2017-03-25
*/
@MyBatisDao
@ConditionalOnProperty(name="user.enabled", havingValue="true", matchIfMissing=true)
public interface EmployeePostDao extends CrudDao<EmployeePost> {
}

View File

@@ -7,7 +7,6 @@ package com.jeesite.modules.sys.dao;
import com.jeesite.common.dao.CrudDao;
import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.Log;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
/**
* 日志DAO接口
@@ -15,7 +14,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
* @version 2017-03-19
*/
@MyBatisDao
@ConditionalOnProperty(name="user.enabled", havingValue="true", matchIfMissing=true)
public interface LogDao extends CrudDao<Log> {
}

View File

@@ -7,7 +7,6 @@ package com.jeesite.modules.sys.dao;
import com.jeesite.common.dao.TreeDao;
import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.Office;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
/**
* 组织机构DAO接口
@@ -15,7 +14,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
* @version 2017-03-23
*/
@MyBatisDao
@ConditionalOnProperty(name="user.enabled", havingValue="true", matchIfMissing=true)
public interface OfficeDao extends TreeDao<Office> {
}

View File

@@ -7,7 +7,6 @@ package com.jeesite.modules.sys.dao;
import com.jeesite.common.dao.CrudDao;
import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.Post;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
/**
* 岗位管理DAO接口
@@ -15,7 +14,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
* @version 2017-03-25
*/
@MyBatisDao
@ConditionalOnProperty(name="user.enabled", havingValue="true", matchIfMissing=true)
public interface PostDao extends CrudDao<Post> {
}

View File

@@ -112,6 +112,9 @@ public class InitCoreData extends BaseInitDataTests {
*/
public void initConfig() throws Exception{
// clearTable(Config.class);
if (!checkTable(Config.class)) {
return;
}
initExcelData(Config.class, new MethodCallback() {
@Override
public Object execute(Object... params) {
@@ -135,6 +138,9 @@ public class InitCoreData extends BaseInitDataTests {
*/
public void initModule() throws Exception{
// clearTable(Module.class);
if (!checkTable(Module.class)) {
return;
}
initExcelData(Module.class, new MethodCallback() {
@Override
public Object execute(Object... params) {
@@ -358,7 +364,7 @@ public class InitCoreData extends BaseInitDataTests {
entity.setUserRoleString(val);
return true;
}else if ("employee.employeePosts".equals(header)){
entity.getEmployee().setEmployeePosts(val);
entity.getEmployee().setEmployeePosts(new String[]{val});
return true;
}
}else if("save".equals(action)){

View File

@@ -6,17 +6,18 @@ package com.jeesite.modules.sys.entity;
import java.util.List;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import org.apache.commons.lang3.StringUtils;
import javax.validation.constraints.Size;
import javax.validation.constraints.NotBlank;
import com.jeesite.common.collect.ListUtils;
import com.jeesite.common.entity.BaseEntity;
import com.jeesite.common.entity.DataEntity;
import com.jeesite.common.entity.Extend;
import com.jeesite.common.entity.TreeEntity;
import com.jeesite.common.mapper.JsonMapper;
import com.jeesite.common.mybatis.annotation.Column;
import com.jeesite.common.mybatis.annotation.JoinTable;
import com.jeesite.common.mybatis.annotation.JoinTable.Type;
@@ -137,8 +138,8 @@ public class Company extends TreeEntity<Company> {
return companyOfficeList;
}
public void setOfficeCodes(String officeCodes) {
String[] list = StringUtils.split(officeCodes, ",");
public void setCompanyOfficeListJson(String jsonString) {
List<String> list = JsonMapper.fromJson(jsonString, List.class);
if (list != null){
for (String val : list){
if (StringUtils.isNotBlank(val)){

View File

@@ -146,14 +146,13 @@ public class Employee extends DataEntity<Employee> {
this.employeePostList = employeePostList;
}
public String getEmployeePosts() {
public String[] getEmployeePosts() {
List<String> list = ListUtils.extractToList(employeePostList, "postCode");
return StringUtils.join(list, ",");
return list.toArray(new String[list.size()]);
}
public void setEmployeePosts(String employeePosts) {
String[] list = StringUtils.split(employeePosts, ",");
for (String val : list){
public void setEmployeePosts(String[] employeePosts) {
for (String val : employeePosts){
if (StringUtils.isNotBlank(val)){
EmployeePost e = new EmployeePost();
e.setPostCode(val);

View File

@@ -4,6 +4,7 @@
*/
package com.jeesite.modules.sys.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jeesite.common.codec.EncodeUtils;
import com.jeesite.common.collect.MapUtils;
import com.jeesite.common.entity.BaseEntity;
@@ -16,6 +17,7 @@ import com.jeesite.common.mybatis.mapper.query.QueryType;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.Map;
/**
@@ -231,7 +233,7 @@ public class Log extends DataEntity<Log> {
if (executeTime == null) {
executeTime = 0L;
}
return TimeUtils.formatTime(executeTime);
return TimeUtils.formatDateAgo(executeTime);
}
/**
@@ -280,7 +282,13 @@ public class Log extends DataEntity<Log> {
String[] values = (String[])paramsMap.get(name);
return values != null && values.length > 0 ? values[0] : null;
}
@Override
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
public Date getCreateDate() {
return super.getCreateDate();
}
// @Override
// public String toString() {
// return ReflectionToStringBuilder.toString(this);

View File

@@ -99,7 +99,7 @@ public class Office extends TreeEntity<Office> {
}
@NotBlank(message="机构代码不能为空")
@Pattern(regexp="[a-zA-Z0-9_]{0,30}", message="码长度不能大于 30 个字符,并且只能包含字母、数字、下划线")
@Pattern(regexp="[a-zA-Z0-9_]{0,30}", message="码长度不能大于 30 个字符,并且只能包含字母、数字、下划线")
public String getViewCode() {
return viewCode;
}

View File

@@ -6,7 +6,6 @@ package com.jeesite.modules.sys.entity;
import javax.validation.constraints.Size;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import com.jeesite.common.entity.BaseEntity;
import com.jeesite.common.entity.DataEntity;
@@ -18,7 +17,6 @@ import com.jeesite.common.mybatis.mapper.query.QueryType;
@Column(includeEntity=BaseEntity.class),
@Column(includeEntity=DataEntity.class),
@Column(name="post_code", attrName="postCode", label="岗位编码", isPK=true),
@Column(name="view_code", attrName="viewCode", label="岗位代码"),
@Column(name="post_name", attrName="postName", label="岗位名称"),
@Column(name="post_type", attrName="postType", label="岗位分类", comment="岗位分类(高管、中层、基层)"),
@Column(name="post_sort", attrName="postSort", label="岗位排序", comment="岗位排序(升序)"),
@@ -28,7 +26,6 @@ public class Post extends DataEntity<Post> {
private static final long serialVersionUID = 1L;
private String postCode; // 岗位编码
private String viewCode; // 岗位代码(作为显示用,多租户内唯一)
private String postName; // 岗位名称
private String postType; // 岗位分类(高管、中层、基层)
private Integer postSort; // 岗位排序(升序)
@@ -51,16 +48,6 @@ public class Post extends DataEntity<Post> {
this.postCode = postCode;
}
@NotBlank(message="岗位代码不能为空")
@Pattern(regexp="[a-zA-Z0-9_]{0,30}", message="代码长度不能大于 30 个字符,并且只能包含字母、数字、下划线")
public String getViewCode() {
return viewCode;
}
public void setViewCode(String viewCode) {
this.viewCode = viewCode;
}
@NotBlank(message="岗位名称不能为空")
@Size(min=0, max=100, message="岗位名称长度不能超过 100 个字符")
public String getPostName() {

View File

@@ -4,6 +4,8 @@
*/
package com.jeesite.modules.sys.interceptor;
import java.text.SimpleDateFormat;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -14,6 +16,7 @@ import org.springframework.web.servlet.ModelAndView;
import com.jeesite.common.idgen.IdGen;
import com.jeesite.common.lang.ByteUtils;
import com.jeesite.common.lang.DateUtils;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.common.lang.TimeUtils;
import com.jeesite.common.network.IpUtils;
@@ -31,32 +34,32 @@ public class LogInterceptor extends BaseService implements HandlerInterceptor {
private static final String TRACE_ID = "TRACE_ID";
private static final ThreadLocal<Long> startTimeThreadLocal =
new NamedThreadLocal<Long>("LogInterceptor StartTime");
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception {
if (StringUtils.isBlank(MDC.get(TRACE_ID))) {
MDC.put(TRACE_ID, IdGen.nextId());
}
long beginTime = System.currentTimeMillis();// 1、开始时间
startTimeThreadLocal.set(beginTime); // 线程绑定变量(该数据只有当前请求的线程可见)
MDC.put(TRACE_ID, IdGen.nextId());
}
long beginTime = System.currentTimeMillis();// 1、开始时间
startTimeThreadLocal.set(beginTime); // 线程绑定变量(该数据只有当前请求的线程可见)
if (logger.isDebugEnabled()){
logger.debug("请求开始 URI: {}, IP: {}", request.getRequestURI(), IpUtils.getRemoteAddr(request));
logger.debug("请求开始 URI: {}, IP: {}", request.getRequestURI(), IpUtils.getRemoteAddr(request));
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
if (modelAndView != null && logger.isDebugEnabled()){
logger.debug("ViewName: " + modelAndView.getViewName() + " <<< " + request.getRequestURI() + " >>> " + handler);
}
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex) throws Exception {
public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex) throws Exception {
long endTime = System.currentTimeMillis(); // 2、结束时间
long startTime = 0; // 得到线程绑定的局部变量(开始时间)
if (startTimeThreadLocal != null){
@@ -70,16 +73,16 @@ public class LogInterceptor extends BaseService implements HandlerInterceptor {
startTime = endTime + 1000; // 得到 -1000 方便统计
}
long executeTime = endTime - startTime; // 3、获取执行时间
// 保存日志
LogUtils.saveLog(UserUtils.getUser(), request, handler, ex, null, null, executeTime);
// 打印JVM信息。
if (logger.isInfoEnabled()){
Runtime runtime = Runtime.getRuntime();
long totalMemory = runtime.totalMemory();
logger.info("请求完成 URI: {}, 用时: {}, 总内存: {}, 剩余: {}", request.getRequestURI(),
TimeUtils.formatTime(executeTime), ByteUtils.formatByteSize(totalMemory),
logger.info("请求完成 URI: {}, 用时: {}, 总内存: {}, 剩余: {}", request.getRequestURI(),
TimeUtils.formatDateAgo(executeTime), ByteUtils.formatByteSize(totalMemory),
ByteUtils.formatByteSize(totalMemory-(totalMemory-runtime.freeMemory())));
}
MDC.remove(TRACE_ID);

View File

@@ -4,14 +4,15 @@
*/
package com.jeesite.modules.sys.service.support;
import java.util.List;
import org.springframework.transaction.annotation.Transactional;
import com.jeesite.common.service.TreeService;
import com.jeesite.modules.sys.dao.AreaDao;
import com.jeesite.modules.sys.entity.Area;
import com.jeesite.modules.sys.service.AreaService;
import com.jeesite.modules.sys.utils.AreaUtils;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 行政区划Service

View File

@@ -4,6 +4,12 @@
*/
package com.jeesite.modules.sys.service.support;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import com.jeesite.common.collect.ListUtils;
import com.jeesite.common.service.TreeService;
import com.jeesite.modules.sys.dao.CompanyDao;
@@ -13,11 +19,6 @@ import com.jeesite.modules.sys.entity.CompanyOffice;
import com.jeesite.modules.sys.service.CompanyService;
import com.jeesite.modules.sys.service.DataScopeService;
import com.jeesite.modules.sys.utils.EmpUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 公司管理Service
@@ -83,7 +84,7 @@ public class CompanyServiceSupport extends TreeService<CompanyDao, Company>
list.forEach(e -> {
e.setCompanyCode(company.getCompanyCode());
});
companyOfficeDao.insertBatch(list, null);
companyOfficeDao.insertBatch(list);
}
// 清理公司相关缓存
clearCompanyCache();

View File

@@ -67,7 +67,7 @@ public class EmpUserServiceSupport extends CrudService<EmpUserDao, EmpUser>
/**
* 添加数据权限过滤条件
* @param empUser 控制对象
* @param entity 控制对象
* @param ctrlPermi 控制权限类型拥有的数据权限DataScope.CTRL_PERMI_HAVE、可管理的数据权限DataScope.CTRL_PERMI_HAVE
*/
@Override
@@ -128,11 +128,8 @@ public class EmpUserServiceSupport extends CrudService<EmpUserDao, EmpUser>
public void save(EmpUser user) {
// 1、初始化用户信息
if (user.getIsNewRecord()){
// 如果没有设置用户编码,则根据登录名生成一个
if (StringUtils.isBlank(user.getUserCode())){
userService.genId(user, user.getLoginCode());
user.setUserCode(user.getUserCode()+"_"+IdGen.randomBase62(4).toLowerCase());
}
userService.genId(user, user.getLoginCode());
user.setUserCode(user.getUserCode()+"_"+IdGen.randomBase62(4).toLowerCase());
user.setUserType(EmpUser.USER_TYPE_EMPLOYEE);
user.setMgrType(EmpUser.MGR_TYPE_NOT_ADMIN);
}
@@ -165,7 +162,7 @@ public class EmpUserServiceSupport extends CrudService<EmpUserDao, EmpUser>
employeeOffice.setId(IdGen.nextId());
employeeOffice.setEmpCode(employee.getEmpCode());
});
employeeOfficeDao.insertBatch(employee.getEmployeeOfficeList(), null);
employeeOfficeDao.insertBatch(employee.getEmployeeOfficeList());
}
}

View File

@@ -4,6 +4,11 @@
*/
package com.jeesite.modules.sys.service.support;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import com.jeesite.common.collect.ListUtils;
import com.jeesite.common.entity.Page;
import com.jeesite.common.service.CrudService;
@@ -14,10 +19,6 @@ import com.jeesite.modules.sys.entity.Employee;
import com.jeesite.modules.sys.entity.EmployeeOffice;
import com.jeesite.modules.sys.entity.EmployeePost;
import com.jeesite.modules.sys.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 员工管理Service
@@ -78,7 +79,7 @@ public class EmployeeServiceSupport extends CrudService<EmployeeDao, Employee>
for (EmployeePost e : employee.getEmployeePostList()){
e.setEmpCode(employee.getEmpCode());
}
employeePostDao.insertBatch(employee.getEmployeePostList(), null);
employeePostDao.insertBatch(employee.getEmployeePostList());
}
}
@@ -95,7 +96,7 @@ public class EmployeeServiceSupport extends CrudService<EmployeeDao, Employee>
* 查询当前员工关联的岗位信息
*/
@Override
public List<EmployeePost> findEmployeePostList(Employee employee){
public List<EmployeePost> findEmployeePostList(Employee employee){
EmployeePost employeePost = new EmployeePost();
employeePost.setEmpCode(employee.getEmpCode());
return employeePostDao.findList(employeePost);

View File

@@ -44,7 +44,7 @@ public class LogServiceSupport extends CrudService<LogDao, Log>
* 不使用数据库事务,执行插入日志
*/
@Override
@Transactional//(propagation = Propagation.NOT_SUPPORTED)
@Transactional//(propagation=Propagation.NOT_SUPPORTED)
public void insertLog(Log entity) {
DataSourceHolder.setJdbcTransaction(false);
dao.insert(entity);

View File

@@ -83,7 +83,7 @@ public class OfficeServiceSupport extends TreeService<OfficeDao, Office>
* @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
*/
@Override
@Transactional
@Transactional
public String importData(MultipartFile file, Boolean isUpdateSupport) {
if (file == null){
throw new ServiceException(text("请选择导入的数据文件!"));

View File

@@ -4,17 +4,13 @@
*/
package com.jeesite.modules.sys.service.support;
import org.apache.commons.lang3.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.jeesite.common.config.Global;
import com.jeesite.common.entity.Page;
import com.jeesite.common.service.CrudService;
import com.jeesite.modules.sys.dao.PostDao;
import com.jeesite.modules.sys.entity.Post;
import com.jeesite.modules.sys.entity.Role;
import com.jeesite.modules.sys.service.PostService;
import com.jeesite.modules.sys.utils.CorpUtils;
/**
* 岗位管理Service
@@ -36,7 +32,7 @@ public class PostServiceSupport extends CrudService<PostDao, Post>
* 根据名称查询岗位
*/
@Override
public Post getByPostName(Post post) {
public Post getByPostName(Post post) {
Post where = new Post();
where.setPostName(post.getPostName());
return dao.getByEntity(where);
@@ -56,27 +52,9 @@ public class PostServiceSupport extends CrudService<PostDao, Post>
@Override
@Transactional
public void save(Post post) {
if (post.getIsNewRecord()){
// 生成主键,并验证改主键是否存在,如存在则抛出验证信息
genIdAndValid(post, post.getViewCode());
}
super.save(post);
}
/**
* 岗位编码生成规则
*/
public void genId(Role entity, String viewCode){
if (StringUtils.isNotBlank(viewCode)){
// 如果是租户模式,并且当前租户不是默认租户的时候,增加租户前缀防止编码重复
if (Global.isUseCorpModel() && !CorpUtils.DEFAULT_CORP_CODE.equals(CorpUtils.getCurrentCorpCode())){
entity.setId(entity.getCorpCode() + "_" + viewCode);
}else{
entity.setId(viewCode);
}
}
}
/**
* 更新岗位状态
*/

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