Compare commits
29 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d555d508c3 | ||
|
|
11511c14bd | ||
|
|
2238ca062f | ||
|
|
3563f18335 | ||
|
|
983ad2faff | ||
|
|
f569da908d | ||
|
|
2e0718ba41 | ||
|
|
846bf82375 | ||
|
|
8cc6f25dd1 | ||
|
|
5ff9ca9815 | ||
|
|
31e6b01b4e | ||
|
|
bc8a6d2db7 | ||
|
|
9a13b33dd8 | ||
|
|
4bdba535bb | ||
|
|
09bf40feee | ||
|
|
5d74d2783f | ||
|
|
807b47dbc4 | ||
|
|
456cdaf883 | ||
|
|
d1b588b7d5 | ||
|
|
22a4b0fcf7 | ||
|
|
84407b5785 | ||
|
|
f5771c56a4 | ||
|
|
a3dee0f70a | ||
|
|
797abcdf87 | ||
|
|
0559c79687 | ||
|
|
f514b86bbc | ||
|
|
49992195df | ||
|
|
631225a108 | ||
|
|
5922951c16 |
45
README.md
@@ -28,21 +28,27 @@
|
||||
|
||||
## 平台介绍
|
||||
|
||||
JeeSite 快速开发平台,不仅仅是一个后台开发框架,它是一个企业级快速开发解决方案,后端基于经典组合 Spring Boot、Shiro、MyBatis,前端采用 Beetl、Bootstrap、AdminLTE 经典开发模式,或者分离版 Vue3、Vite、Ant Design Vue、TypeScript、Vben Admin 最先进技术栈。提供在线代码生成功能,可自动创建业务模块工程和微服务模块工程,自动生成前端代码和后端代码;包括功能模块如:组织机构、角色用户、菜单及按钮授权、数据权限、系统参数、内容管理、工作流等。采用松耦合设计,微内核和插件架构,模块增减便捷;界面无刷新,一键换肤;众多账号安全设置,密码策略;文件在线预览;消息推送;多元化第三方登录;在线定时任务配置;支持集群,支持SAAS;支持多数据源;支持读写分离、分库分表;支持微服务应用。
|
||||
JeeSite 快速开发平台,不仅仅是一个后台开发框架,它是一个企业级快速开发解决方案,后端基于经典组合 Spring Boot、Shiro、MyBatis,前端采用 Beetl、Bootstrap、AdminLTE 经典开发模式,或者分离版 Vue3、Vite、Ant Design Vue、TypeScript、Vben Admin 最先进技术栈。
|
||||
|
||||
JeeSite 快速开发平台的主要目的是能够让初级的研发人员快速的开发出复杂的业务功能,中高级人员有时间做一些更有用的事情。让开发者注重专注业务,其余有平台来封装技术细节,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。
|
||||
提供在线代码生成功能,可自动创建业务模块工程和微服务模块工程,自动生成前端代码和后端代码;包括功能模块如:组织机构、角色用户、菜单及按钮授权、数据权限、系统参数、内容管理、工作流等。
|
||||
|
||||
JeeSite 自 2013 年发布以来已被广大爱好者用到了企业、政府、医疗、金融、互联网等各个领域中,JeeSite 架构精良、易于扩展、大众思维的设计模式、工匠精神打磨每一个细节,深入开发者的内心,并荣获开源中国《最受欢迎中国开源软件》奖杯,期间也帮助了不少刚毕业的大学生,教师作为入门教材,快速的去实践。
|
||||
采用松耦合设计,微内核和插件架构,模块增减便捷;界面细节到位,一键换肤;众多账号安全设置,密码策略;文件在线预览;消息推送;多元化第三方登录;在线定时任务配置;支持集群,支持SAAS;支持多数据源;支持读写分离、分库分表;支持微服务应用。
|
||||
|
||||
JeeSite4 的升级,作者结合了多年总结和经验,以及各方面的应用案例,对架构完成了一次全部重构,也纳入很多新的思想。不管是从开发者模式、底层架构、逻辑处理还是到用户界面,用户交互体验上都有很大的进步,在不忘学习成本、提高开发效率的情况下,安全方面也做和很多工作,包括:身份认证、密码策略、安全审计、日志收集等众多安全选项供你选择。努力为大中小微企业打造全方位企业级快速开发解决方案。
|
||||
主要目的是能够让初级的研发人员快速的开发出复杂的业务功能,中高级人员有时间做一些更有用的事情。让开发者注重专注业务,其余有平台来封装技术细节,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。
|
||||
|
||||
JeeSite 自 2013 年发布以来已被广大爱好者用到了企业、政府、医疗、金融、互联网等各个领域中,拥有:精良架构、易于扩展、大众思维的设计模式,工匠精神,用心打磨每一个细节,深入开发者的内心,并荣获开源中国《最受欢迎中国开源软件》多次奖项,期间也帮助了不少刚毕业的大学生,教师作为入门教材,快速的去实践。
|
||||
|
||||
2019 年换代升级,作者结合了多年总结和经验,以及各方面的应用案例,对架构完成了一次全部重构,也纳入很多新的思想。不管是从开发者模式、底层架构、逻辑处理还是到用户界面,用户交互体验上都有很大的进步,在不忘学习成本、提高开发效率的情况下,安全方面也做和很多工作,包括:身份认证、密码策略、安全审计、日志收集等众多安全选项供您选择。努力为大中小微企业打造全方位企业级快速开发解决方案。
|
||||
|
||||
2021 年终发布 Vue3 的前后分离版本,使得 JeeSite 拥有同一个后台服务 Web 来支撑分离版和全栈版两套前端技术栈。
|
||||
|
||||
## 平台优势
|
||||
|
||||
JeeSite 整体架构清晰、稳定技术先进、源代码书写规范、经典技术会的人多、易于维护、易于扩展、安全稳定。
|
||||
JeeSite 非常易于二次开发,可控性高,整体架构清晰、技术稳定而先进、源代码书写规范、经典技术会的人多、易于维护、易于扩展、安全稳定。
|
||||
|
||||
JeeSite 功能全,知识点非常多,也非常少。因为她使用的都是一些通用的技术,通俗的设计风格,大多数基础知识点多数人都能掌握,所以每一个 JeeSite 的功能点都非常容易掌握。只要你学会使用这些功能和组件的应用,就可以顺利的完成系统开发了。
|
||||
JeeSite 功能全,知识点非常多,也非常少。因为她使用的都是一些通用的技术,通俗的设计风格,大多数基础知识点,多数人都能掌握,所以每一个 JeeSite 的功能点都非常容易掌握。只要您学会使用这些功能和组件的应用,就可以顺利的完成系统开发了。
|
||||
|
||||
JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,封装不是限制你去做一些事情,而是在便捷的同时,也具有较好的扩展性,在不具备一些功能的情况下,JeeSite 提供了扩展接口,提供了原生调用方法。
|
||||
JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,封装不是限制您去做一些事情,而是在便捷的同时,也具有较好的扩展性,在不具备一些功能的情况下,JeeSite 提供了扩展接口,提供了原生调用方法。
|
||||
|
||||
大家都在用 Spring,也在学习 Spring 的优点,Spring 提供了较好的扩展性,可又有多少人去修改它的源代码呢,退一步说,大家去修改了 Spring 的源码,反而会对未来升级造成很大困扰,您说不是呢?这样的例子很多,所以不要纠结,我们非常注重这一点,JeeSite 也一样具备强大的扩展性。
|
||||
|
||||
@@ -51,12 +57,13 @@ JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,
|
||||
* 至今 JeeSite 平台架构已经非常稳定。
|
||||
* JeeSite 精益求精,用心打磨每一个细节。
|
||||
* JeeSite 是一个专业的平台,是一个让你使用放心的平台。
|
||||
* 社区版基于 Apache License 2.0 开源协议,永久免费使用。
|
||||
|
||||
### 架构特点及安全方面的优势:<https://jeesite.com/docs/feature/>
|
||||
|
||||
## 技术选型
|
||||
|
||||
* 主框架:Spring Boot 2.7、Spring Framework 5.3、Apache Shiro 1.11、J2Cache
|
||||
* 主框架:Spring Boot 2.7、Spring Framework 5.3、Apache Shiro 1.12、J2Cache
|
||||
* 持久层:Apache MyBatis 3.5、Hibernate Validator 6.2、Alibaba Druid 1.2
|
||||
* 视图层:Spring MVC 5.3、Beetl 3.10(替换JSP)、Bootstrap 3.3、AdminLTE 2.4
|
||||
* 前端组件:jQuery 3.7、jqGrid 4.7、layer 3.5、zTree 3.5、jQuery Validation
|
||||
@@ -78,13 +85,17 @@ JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,
|
||||
|
||||
## 生态系统
|
||||
|
||||
* 分布式微服务(Spring Cloud):<https://gitee.com/thinkgem/jeesite4-cloud>
|
||||
* 分布式微服务(Spring Cloud):<https://gitee.com/thinkgem/jeesite-cloud>
|
||||
* Flowable业务流程引擎(BPM):<http://jeesite.com/docs/bpm/>
|
||||
* JFlow工作流引擎:<https://gitee.com/thinkgem/jeesite4-jflow> :<http://ccflow.org>
|
||||
* 内容管理模块(CMS):<https://gitee.com/thinkgem/jeesite4/tree/v5.3/modules/cms>
|
||||
* 手机端移动端:<https://gitee.com/thinkgem/jeesite4-uniapp>
|
||||
* JFlow工作流引擎:<https://gitee.com/thinkgem/jeesite-jflow>
|
||||
* 多站点内容管理模块(CMS):<https://jeesite.com/docs/cms/>
|
||||
* 手机端移动端:<https://gitee.com/thinkgem/jeesite-uniapp>
|
||||
* PC客户端程序:<https://gitee.com/thinkgem/jeesite-client>
|
||||
* Vue3分离版本:<https://gitee.com/thinkgem/jeesite-vue>
|
||||
* JeeSite统一认证:<https://jeesite.com/docs/oauth2-server>
|
||||
* MybatisPlus: <https://gitee.com/thinkgem/jeesite-mybatisplus>
|
||||
* Magic接口快速开发:<https://gitee.com/thinkgem/jeesite-magic-api>
|
||||
* 内外网中间件:<https://my.oschina.net/thinkgem/blog/4624519>
|
||||
|
||||
## 快速体验
|
||||
|
||||
@@ -115,13 +126,13 @@ JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,
|
||||
### 容器运行
|
||||
|
||||
- 拉取 Docker 镜像(演示使用,JeeSite版本较久):
|
||||
```
|
||||
docker pull thinkgem/jeesite-web
|
||||
```sh
|
||||
docker pull thinkgem/jeesite-web:latest(arm64)
|
||||
```
|
||||
- 启动脚本:
|
||||
```
|
||||
docker run -d -p 8980:8980 --name jeesite-web -v /data:/data \
|
||||
thinkgem/jeesite-web && docker logs -f jeesite-web
|
||||
```sh
|
||||
docker run --name jeesite-web -p 8980:8980 -d --restart unless-stopped \
|
||||
-v ~:/data thinkgem/jeesite-web:latest(arm64) && docker logs -f jeesite-web
|
||||
```
|
||||
- 浏览器访问:<http://127.0.0.1:8980/js/> 账号 system 密码 admin
|
||||
- 分离端安装:<https://jeesite.com/docs/vue-install-deploy/>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.5.0-SNAPSHOT</version>
|
||||
<version>5.5.2-SNAPSHOT</version>
|
||||
<relativePath>../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -779,12 +779,12 @@ public class FileUtils extends org.apache.commons.io.FileUtils {
|
||||
String p = StringUtils.replace(path, WIN_SEPARATOR, SEPARATOR);
|
||||
p = StringUtils.join(StringUtils.split(p, SEPARATOR), SEPARATOR);
|
||||
if (!StringUtils.startsWithAny(p, SEPARATOR) && StringUtils.startsWithAny(path, WIN_SEPARATOR, SEPARATOR)){
|
||||
p += SEPARATOR;
|
||||
p = SEPARATOR + p;
|
||||
}
|
||||
if (!StringUtils.endsWithAny(p, SEPARATOR) && StringUtils.endsWithAny(path, WIN_SEPARATOR, SEPARATOR)){
|
||||
p = p + SEPARATOR;
|
||||
}
|
||||
if (path != null && path.startsWith(SEPARATOR)){
|
||||
if (path != null && path.startsWith(SEPARATOR) && !p.startsWith(SEPARATOR)){
|
||||
p = SEPARATOR + p; // linux下路径
|
||||
}
|
||||
return p;
|
||||
|
||||
@@ -66,9 +66,9 @@ public class ByteUtils {
|
||||
private static String format(double size, String type) {
|
||||
int precision = 0;
|
||||
|
||||
if(size * 1000 % 10 > 0) {
|
||||
/*if(size * 1000 % 10 > 0) {
|
||||
precision = 3;
|
||||
} else if(size * 100 % 10 > 0) {
|
||||
} else */if(size * 100 % 10 > 0) {
|
||||
precision = 2;
|
||||
} else if(size * 10 % 10 > 0) {
|
||||
precision = 1;
|
||||
|
||||
@@ -7,13 +7,16 @@ package com.jeesite.common.mapper;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude.Include;
|
||||
import com.fasterxml.jackson.core.JsonGenerator;
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.core.JsonParser.Feature;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.*;
|
||||
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.module.SimpleModule;
|
||||
import com.fasterxml.jackson.databind.util.JSONPObject;
|
||||
import com.jeesite.common.codec.EncodeUtils;
|
||||
import com.jeesite.common.collect.ListUtils;
|
||||
import com.jeesite.common.io.PropertiesUtils;
|
||||
import com.jeesite.common.lang.DateUtils;
|
||||
@@ -31,16 +34,15 @@ import java.util.Map;
|
||||
import java.util.TimeZone;
|
||||
|
||||
/**
|
||||
* 简单封装Jackson,实现JSON String<->Java Object的Mapper.
|
||||
* 封装不同的输出风格, 使用不同的builder函数创建实例.
|
||||
* 封装 Jackson,实现 JSON String 与 Java Object 互转
|
||||
* @author ThinkGem
|
||||
* @version 2016-3-2
|
||||
* @version 2023-09-26
|
||||
*/
|
||||
public class JsonMapper extends ObjectMapper {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(JsonMapper.class);
|
||||
private static final Logger logger = LoggerFactory.getLogger(JsonMapper.class);
|
||||
|
||||
/**
|
||||
* 当前类的实例持有者(静态内部类,延迟加载,懒汉式,线程安全的单例模式)
|
||||
@@ -48,7 +50,7 @@ public class JsonMapper extends ObjectMapper {
|
||||
private static final class JsonMapperHolder {
|
||||
private static final JsonMapper INSTANCE = new JsonMapper();
|
||||
}
|
||||
|
||||
|
||||
public JsonMapper() {
|
||||
// Spring ObjectMapper 初始化配置,支持 @JsonView
|
||||
new Jackson2ObjectMapperBuilder().configure(this);
|
||||
@@ -59,9 +61,30 @@ public class JsonMapper extends ObjectMapper {
|
||||
// 允许不带引号的字段名称
|
||||
this.configure(Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
|
||||
// 设置默认时区
|
||||
this.setDefaultTimeZone();
|
||||
// 设置默认日期格式
|
||||
this.setDefaultDateFormat();
|
||||
// 遇到空值处理为空串
|
||||
this.enabledNullValueToEmpty();
|
||||
// 设置输入时忽略在JSON字符串中存在但Java对象实际没有的属性
|
||||
this.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启日期类型默认格式化
|
||||
* @author ThinkGem
|
||||
*/
|
||||
public JsonMapper setDefaultTimeZone(){
|
||||
this.setTimeZone(TimeZone.getTimeZone(PropertiesUtils.getInstance()
|
||||
.getProperty("lang.defaultTimeZone", "GMT+08:00")));
|
||||
// 设置默认日期格式
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启日期类型默认格式化
|
||||
* @author ThinkGem
|
||||
*/
|
||||
public JsonMapper setDefaultDateFormat(){
|
||||
this.setDateFormat(new SimpleDateFormat(PropertiesUtils.getInstance()
|
||||
.getProperty("web.json.defaultDateFormat", "yyyy-MM-dd HH:mm:ss")));
|
||||
this.setAnnotationIntrospector(new JacksonAnnotationIntrospector() {
|
||||
@@ -74,8 +97,7 @@ public class JsonMapper extends ObjectMapper {
|
||||
if (jf != null) {
|
||||
return new JsonSerializer<Date>(){
|
||||
@Override
|
||||
public void serialize(Date value, JsonGenerator jgen,
|
||||
SerializerProvider provider) throws IOException, JsonProcessingException {
|
||||
public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
|
||||
if (value != null){
|
||||
jgen.writeString(DateUtils.formatDate(value, jf.pattern()));
|
||||
}
|
||||
@@ -86,27 +108,39 @@ public class JsonMapper extends ObjectMapper {
|
||||
return super.findSerializer(a);
|
||||
}
|
||||
});
|
||||
// 设置输入时忽略在JSON字符串中存在但Java对象实际没有的属性
|
||||
this.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
|
||||
// 遇到空值处理为空串
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启将空值转换为空字符串
|
||||
* @author ThinkGem
|
||||
*/
|
||||
public JsonMapper enabledNullValueToEmpty(){
|
||||
this.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>(){
|
||||
@Override
|
||||
public void serialize(Object value, JsonGenerator jgen,
|
||||
SerializerProvider provider) throws IOException, JsonProcessingException {
|
||||
public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
|
||||
jgen.writeString(StringUtils.EMPTY);
|
||||
}
|
||||
});
|
||||
// // 进行HTML解码(先注释掉,否则会造成XSS攻击,比如菜单名称里输入<script>alert(123)</script>转josn后就会还原这个编码 ,并在浏览器中运行)。
|
||||
// this.registerModule(new SimpleModule().addSerializer(String.class, new JsonSerializer<String>(){
|
||||
// @Override
|
||||
// public void serialize(String value, JsonGenerator jgen,
|
||||
// SerializerProvider provider) throws IOException,
|
||||
// JsonProcessingException {
|
||||
// if (value != null){
|
||||
// jgen.writeString(StringEscapeUtils.unescapeHtml4(value));
|
||||
// }
|
||||
// }
|
||||
// }));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启 XSS 过滤器
|
||||
* @author ThinkGem
|
||||
*/
|
||||
public JsonMapper enabledXssFilter(){
|
||||
this.registerModule(new SimpleModule().addDeserializer(String.class, new JsonDeserializer<String>() {
|
||||
@Override
|
||||
public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
|
||||
String text = p.getText();
|
||||
if (text != null) {
|
||||
return EncodeUtils.xssFilter(text);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
BIN
modules/app/db/app.png
Normal file
|
After Width: | Height: | Size: 139 KiB |
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.5.0-SNAPSHOT</version>
|
||||
<version>5.5.2-SNAPSHOT</version>
|
||||
<relativePath>../../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -11,4 +11,6 @@
|
||||
5.3.2
|
||||
5.4.0
|
||||
5.4.1
|
||||
5.5.0
|
||||
5.5.0
|
||||
5.5.1
|
||||
5.5.2
|
||||
@@ -18,20 +18,20 @@
|
||||
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('问题分类')}:</label>
|
||||
<div class="control-inline width-120">
|
||||
<div class="control-inline width-90">
|
||||
<#form:select path="category" dictType="app_comment_category" blankOption="true" class="form-control"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('问题和意见')}:</label>
|
||||
<div class="control-inline">
|
||||
<#form:input path="content" maxlength="500" class="form-control width-120"/>
|
||||
<#form:input path="content" maxlength="500" class="form-control width-90"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('联系方式')}:</label>
|
||||
<div class="control-inline">
|
||||
<#form:input path="contact" maxlength="200" class="form-control width-120"/>
|
||||
<#form:input path="contact" maxlength="200" class="form-control width-90"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@@ -49,8 +49,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
@@ -62,7 +62,7 @@
|
||||
<script>
|
||||
//# // 初始化DataGrid对象
|
||||
$('#dataGrid').dataGrid({
|
||||
searchForm: $("#searchForm"),
|
||||
searchForm: $('#searchForm'),
|
||||
columnModel: [
|
||||
{header:'${text("问题和意见")}', name:'content', index:'a.content', width:250, align:"left", frozen:true, formatter: function(val, obj, row, act){
|
||||
return '<a href="${ctx}/app/appComment/form?id='+row.id+'" class="btnList" data-title="${text("编辑意见")}">'+(val||row.id)+'</a>';
|
||||
|
||||
@@ -18,19 +18,19 @@
|
||||
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('应用代号')}:</label>
|
||||
<div class="control-inline width-120">
|
||||
<div class="control-inline width-90">
|
||||
<#form:select path="appCode" dictType="app_code" blankOption="true" class="form-control"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('升级标题')}:</label>
|
||||
<div class="control-inline">
|
||||
<#form:input path="upTitle" maxlength="200" class="form-control width-120"/>
|
||||
<#form:input path="upTitle" maxlength="200" class="form-control width-90"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('升级类型')}:</label>
|
||||
<div class="control-inline width-120">
|
||||
<div class="control-inline width-90">
|
||||
<#form:select path="upType" dictType="app_upgrade_type" blankOption="true" class="form-control"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -48,8 +48,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
@@ -61,7 +61,7 @@
|
||||
<script>
|
||||
//# // 初始化DataGrid对象
|
||||
$('#dataGrid').dataGrid({
|
||||
searchForm: $("#searchForm"),
|
||||
searchForm: $('#searchForm'),
|
||||
columnModel: [
|
||||
{header:'${text("升级标题")}', name:'upTitle', index:'a.up_title', width:350, align:"left", frozen:true, formatter: function(val, obj, row, act){
|
||||
return '<a href="${ctx}/app/appUpgrade/form?id='+row.id+'" class="btnList" data-title="${text("编辑版本")}">'+(val||row.id)+'</a>';
|
||||
|
||||
BIN
modules/cms/db/cms.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.5.0-SNAPSHOT</version>
|
||||
<version>5.5.2-SNAPSHOT</version>
|
||||
<relativePath>../../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -19,4 +19,6 @@
|
||||
5.3.2
|
||||
5.4.0
|
||||
5.4.1
|
||||
5.5.0
|
||||
5.5.0
|
||||
5.5.1
|
||||
5.5.2
|
||||
@@ -28,12 +28,12 @@
|
||||
<#form:input path="title" maxlength="255" class="form-control width-120"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<!--<div class="form-group">
|
||||
<label class="control-label">${text('关键字')}:</label>
|
||||
<div class="control-inline">
|
||||
<#form:input path="keywords" maxlength="500" class="form-control width-120"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>-->
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('状态')}:</label>
|
||||
<div class="control-inline width-90">
|
||||
@@ -41,8 +41,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -57,8 +57,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -94,8 +94,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -46,8 +46,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -40,8 +40,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -53,8 +53,8 @@
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
10334
modules/core/db/core.erm
|
Before Width: | Height: | Size: 1007 KiB After Width: | Height: | Size: 3.3 MiB |
BIN
modules/core/db/core.xlsx
Normal file
4534
modules/core/db/job.erm
Normal file
BIN
modules/core/db/job.png
Normal file
|
After Width: | Height: | Size: 531 KiB |
BIN
modules/core/db/job.xlsx
Normal file
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.5.0-SNAPSHOT</version>
|
||||
<version>5.5.2-SNAPSHOT</version>
|
||||
<relativePath>../../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
package com.jeesite.common.ueditor.upload;
|
||||
|
||||
import com.jeesite.common.image.ImageUtils;
|
||||
import com.jeesite.common.io.FileUtils;
|
||||
import com.jeesite.common.media.VideoUtils;
|
||||
import com.jeesite.common.ueditor.PathFormat;
|
||||
import com.jeesite.common.ueditor.define.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
@@ -8,21 +17,6 @@ import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||
|
||||
import com.jeesite.common.image.ImageUtils;
|
||||
import com.jeesite.common.io.FileUtils;
|
||||
import com.jeesite.common.media.VideoUtils;
|
||||
import com.jeesite.common.ueditor.PathFormat;
|
||||
import com.jeesite.common.ueditor.define.ActionMap;
|
||||
import com.jeesite.common.ueditor.define.AppInfo;
|
||||
import com.jeesite.common.ueditor.define.BaseState;
|
||||
import com.jeesite.common.ueditor.define.FileType;
|
||||
import com.jeesite.common.ueditor.define.State;
|
||||
|
||||
public class BinaryUploader {
|
||||
|
||||
public static final State save(HttpServletRequest request, Map<String, Object> conf) {
|
||||
@@ -64,7 +58,7 @@ public class BinaryUploader {
|
||||
|
||||
savePath = PathFormat.parse(savePath, originFileName);
|
||||
|
||||
String physicalPath = FileUtils.path((String) conf.get("rootPath") + savePath);
|
||||
String physicalPath = FileUtils.path(conf.get("rootPath") + savePath);
|
||||
|
||||
InputStream is = null;
|
||||
State storageState = null;
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
package com.jeesite.common.ueditor.upload;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import com.jeesite.common.config.Global;
|
||||
import com.jeesite.common.idgen.IdGen;
|
||||
import com.jeesite.common.io.FileUtils;
|
||||
import com.jeesite.common.io.PropertiesUtils;
|
||||
@@ -14,6 +8,11 @@ import com.jeesite.common.lang.StringUtils;
|
||||
import com.jeesite.common.ueditor.define.AppInfo;
|
||||
import com.jeesite.common.ueditor.define.BaseState;
|
||||
import com.jeesite.common.ueditor.define.State;
|
||||
import com.jeesite.common.web.http.ServletUtils;
|
||||
import com.jeesite.modules.file.utils.FileUploadUtils;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.*;
|
||||
|
||||
public class StorageManager {
|
||||
|
||||
@@ -194,12 +193,21 @@ public class StorageManager {
|
||||
|
||||
/**
|
||||
* UEditor上传文件成功后调用事件
|
||||
*
|
||||
* @param physicalPath 上传文件实际路径
|
||||
* @param storageState url 返回到客户端的文件访问地址
|
||||
*/
|
||||
public static void uploadFileSuccess(String physicalPath, State storageState) {
|
||||
|
||||
if (!Global.getPropertyToBoolean("file.enabled", "true")) {
|
||||
return;
|
||||
}
|
||||
File file = new File(physicalPath);
|
||||
String url = FileUploadUtils.ossFileUpload(file, StringUtils.substringAfter(
|
||||
FileUtils.path(file.getAbsolutePath()), Global.USERFILES_BASE_URL));
|
||||
if (!StringUtils.contains(url, "://")) {
|
||||
HttpServletRequest request = ServletUtils.getRequest();
|
||||
url = FileUtils.path((request != null ? request.getContextPath() : StringUtils.EMPTY) + url);
|
||||
}
|
||||
storageState.putInfo("url", url);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -18,4 +18,10 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
@ConditionalOnProperty(name="user.enabled", havingValue="true", matchIfMissing=true)
|
||||
public interface LogDao extends CrudDao<Log> {
|
||||
|
||||
/**
|
||||
* 删除某个日期之前创建的日志
|
||||
* @param log .createDate
|
||||
*/
|
||||
int deleteLogBefore(Log log);
|
||||
|
||||
}
|
||||
|
||||
@@ -25,5 +25,13 @@ public interface LogService extends CrudServiceApi<Log> {
|
||||
* 不使用数据库事务,执行插入日志
|
||||
*/
|
||||
void insertLog(Log entity);
|
||||
|
||||
|
||||
/**
|
||||
* 清理指定日期之前的日志(可新建job定时调用)
|
||||
* 1、清理1年前的所有日志:logService.deleteLogBefore(1, 0, 0);
|
||||
* 2、清理6个月前的所有日志:logService.deleteLogBefore(0, 6, 0);
|
||||
* 3、清理7天前的所有日志:logService.deleteLogBefore(0, 0, 7);
|
||||
* 4、清理1年6个月前的所有日志:logService.deleteLogBefore(1, 6, 0);
|
||||
*/
|
||||
void deleteLogBefore(Integer year, Integer months, Integer days);
|
||||
}
|
||||
|
||||
@@ -4,10 +4,13 @@
|
||||
*/
|
||||
package com.jeesite.modules.sys.service.support;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import com.jeesite.common.datasource.DataSourceHolder;
|
||||
import com.jeesite.common.entity.Page;
|
||||
import com.jeesite.common.lang.DateUtils;
|
||||
import com.jeesite.common.service.CrudService;
|
||||
import com.jeesite.modules.sys.dao.LogDao;
|
||||
import com.jeesite.modules.sys.entity.Log;
|
||||
@@ -50,4 +53,30 @@ public class LogServiceSupport extends CrudService<LogDao, Log>
|
||||
dao.insert(entity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理指定日期之前的日志(可新建job定时调用)
|
||||
* 1、清理1年前的所有日志:logService.deleteLogBefore(1, 0, 0);
|
||||
* 2、清理6个月前的所有日志:logService.deleteLogBefore(0, 6, 0);
|
||||
* 3、清理7天前的所有日志:logService.deleteLogBefore(0, 0, 7);
|
||||
* 4、清理1年6个月前的所有日志:logService.deleteLogBefore(1, 6, 0);
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public void deleteLogBefore(Integer year, Integer months, Integer days) {
|
||||
Date date = DateUtils.getOfDayLast(new Date());
|
||||
if (year != null && year != 0) {
|
||||
date = DateUtils.addYears(date, -year);
|
||||
}
|
||||
if (months != null && months != 0) {
|
||||
date = DateUtils.addMonths(date, -months);
|
||||
}
|
||||
if (days != null && days != 0) {
|
||||
date = DateUtils.addDays(date, -days);
|
||||
}
|
||||
Log log = new Log();
|
||||
log.setCreateDate(date);
|
||||
dao.deleteLogBefore(log);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -27,6 +27,10 @@ jdbc:
|
||||
|
||||
# 获取连接等待超时时间,单位毫秒(1分钟)(4.0.6+)
|
||||
maxWait: 60000
|
||||
|
||||
# 连接超时参数,单位毫秒 (v5.5.2+)
|
||||
connectTimeout: ~
|
||||
socketTimeout: ~
|
||||
|
||||
# 从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个(4.0.6+)
|
||||
testOnBorrow: false
|
||||
|
||||
@@ -1,63 +1,62 @@
|
||||
-- tables_db2_v95.sql
|
||||
|
||||
create table ${_prefix}job_job_details(
|
||||
sched_name varchar(120) not null,
|
||||
job_name varchar(80) not null,
|
||||
job_group varchar(80) not null,
|
||||
description varchar(120),
|
||||
job_class_name varchar(128) not null,
|
||||
is_durable integer not null,
|
||||
is_nonconcurrent integer not null,
|
||||
is_update_data integer not null,
|
||||
requests_recovery integer not null,
|
||||
job_data blob(2000),
|
||||
primary key (sched_name,job_name,job_group)
|
||||
sched_name varchar(120) not null,
|
||||
job_name varchar(80) not null,
|
||||
job_group varchar(80) not null,
|
||||
description varchar(120),
|
||||
job_class_name varchar(128) not null,
|
||||
is_durable integer not null,
|
||||
is_nonconcurrent integer not null,
|
||||
is_update_data integer not null,
|
||||
requests_recovery integer not null,
|
||||
job_data blob(2000),
|
||||
primary key (sched_name,job_name,job_group)
|
||||
);
|
||||
|
||||
create table ${_prefix}job_triggers(
|
||||
sched_name varchar(120) not null,
|
||||
trigger_name varchar(80) not null,
|
||||
trigger_group varchar(80) not null,
|
||||
job_name varchar(80) not null,
|
||||
job_group varchar(80) not null,
|
||||
description varchar(120),
|
||||
next_fire_time bigint,
|
||||
prev_fire_time bigint,
|
||||
priority integer,
|
||||
trigger_state varchar(16) not null,
|
||||
trigger_type varchar(8) not null,
|
||||
start_time bigint not null,
|
||||
end_time bigint,
|
||||
calendar_name varchar(80),
|
||||
misfire_instr smallint,
|
||||
job_data blob(2000),
|
||||
primary key (sched_name,trigger_name,trigger_group),
|
||||
foreign key (sched_name,job_name,job_group) references ${_prefix}job_job_details(sched_name,job_name,job_group)
|
||||
sched_name varchar(120) not null,
|
||||
trigger_name varchar(80) not null,
|
||||
trigger_group varchar(80) not null,
|
||||
job_name varchar(80) not null,
|
||||
job_group varchar(80) not null,
|
||||
description varchar(120),
|
||||
next_fire_time bigint,
|
||||
prev_fire_time bigint,
|
||||
priority integer,
|
||||
trigger_state varchar(16) not null,
|
||||
trigger_type varchar(8) not null,
|
||||
start_time bigint not null,
|
||||
end_time bigint,
|
||||
calendar_name varchar(80),
|
||||
misfire_instr smallint,
|
||||
job_data blob(2000),
|
||||
primary key (sched_name,trigger_name,trigger_group),
|
||||
foreign key (sched_name,job_name,job_group) references ${_prefix}job_job_details(sched_name,job_name,job_group)
|
||||
);
|
||||
|
||||
create table ${_prefix}job_simple_triggers(
|
||||
sched_name varchar(120) not null,
|
||||
trigger_name varchar(80) not null,
|
||||
trigger_group varchar(80) not null,
|
||||
repeat_count bigint not null,
|
||||
repeat_interval bigint not null,
|
||||
times_triggered bigint not null,
|
||||
primary key (sched_name,trigger_name,trigger_group),
|
||||
foreign key (sched_name,trigger_name,trigger_group) references ${_prefix}job_triggers(sched_name,trigger_name,trigger_group)
|
||||
sched_name varchar(120) not null,
|
||||
trigger_name varchar(80) not null,
|
||||
trigger_group varchar(80) not null,
|
||||
repeat_count bigint not null,
|
||||
repeat_interval bigint not null,
|
||||
times_triggered bigint not null,
|
||||
primary key (sched_name,trigger_name,trigger_group),
|
||||
foreign key (sched_name,trigger_name,trigger_group) references ${_prefix}job_triggers(sched_name,trigger_name,trigger_group)
|
||||
);
|
||||
|
||||
create table ${_prefix}job_cron_triggers(
|
||||
sched_name varchar(120) not null,
|
||||
trigger_name varchar(80) not null,
|
||||
trigger_group varchar(80) not null,
|
||||
cron_expression varchar(120) not null,
|
||||
time_zone_id varchar(80),
|
||||
primary key (sched_name,trigger_name,trigger_group),
|
||||
foreign key (sched_name,trigger_name,trigger_group) references ${_prefix}job_triggers(sched_name,trigger_name,trigger_group)
|
||||
sched_name varchar(120) not null,
|
||||
trigger_name varchar(80) not null,
|
||||
trigger_group varchar(80) not null,
|
||||
cron_expression varchar(120) not null,
|
||||
time_zone_id varchar(80),
|
||||
primary key (sched_name,trigger_name,trigger_group),
|
||||
foreign key (sched_name,trigger_name,trigger_group) references ${_prefix}job_triggers(sched_name,trigger_name,trigger_group)
|
||||
);
|
||||
|
||||
CREATE TABLE ${_prefix}job_simprop_triggers
|
||||
(
|
||||
CREATE TABLE ${_prefix}job_simprop_triggers(
|
||||
sched_name varchar(120) not null,
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||
@@ -78,54 +77,54 @@ CREATE TABLE ${_prefix}job_simprop_triggers
|
||||
);
|
||||
|
||||
create table ${_prefix}job_blob_triggers(
|
||||
sched_name varchar(120) not null,
|
||||
trigger_name varchar(80) not null,
|
||||
trigger_group varchar(80) not null,
|
||||
blob_data blob(2000),
|
||||
primary key (sched_name,trigger_name,trigger_group),
|
||||
foreign key (sched_name,trigger_name,trigger_group) references ${_prefix}job_triggers(sched_name,trigger_name,trigger_group)
|
||||
sched_name varchar(120) not null,
|
||||
trigger_name varchar(80) not null,
|
||||
trigger_group varchar(80) not null,
|
||||
blob_data blob(2000),
|
||||
primary key (sched_name,trigger_name,trigger_group),
|
||||
foreign key (sched_name,trigger_name,trigger_group) references ${_prefix}job_triggers(sched_name,trigger_name,trigger_group)
|
||||
);
|
||||
|
||||
create table ${_prefix}job_calendars(
|
||||
sched_name varchar(120) not null,
|
||||
calendar_name varchar(80) not null,
|
||||
calendar blob(2000) not null,
|
||||
primary key (calendar_name)
|
||||
sched_name varchar(120) not null,
|
||||
calendar_name varchar(80) not null,
|
||||
calendar blob(2000) not null,
|
||||
primary key (calendar_name)
|
||||
);
|
||||
|
||||
create table ${_prefix}job_fired_triggers(
|
||||
sched_name varchar(120) not null,
|
||||
entry_id varchar(95) not null,
|
||||
trigger_name varchar(80) not null,
|
||||
trigger_group varchar(80) not null,
|
||||
instance_name varchar(80) not null,
|
||||
fired_time bigint not null,
|
||||
sched_time bigint not null,
|
||||
priority integer not null,
|
||||
state varchar(16) not null,
|
||||
job_name varchar(80),
|
||||
job_group varchar(80),
|
||||
is_nonconcurrent integer,
|
||||
requests_recovery integer,
|
||||
primary key (sched_name,entry_id)
|
||||
sched_name varchar(120) not null,
|
||||
entry_id varchar(95) not null,
|
||||
trigger_name varchar(80) not null,
|
||||
trigger_group varchar(80) not null,
|
||||
instance_name varchar(80) not null,
|
||||
fired_time bigint not null,
|
||||
sched_time bigint not null,
|
||||
priority integer not null,
|
||||
state varchar(16) not null,
|
||||
job_name varchar(80),
|
||||
job_group varchar(80),
|
||||
is_nonconcurrent integer,
|
||||
requests_recovery integer,
|
||||
primary key (sched_name,entry_id)
|
||||
);
|
||||
|
||||
create table ${_prefix}job_paused_trigger_grps(
|
||||
sched_name varchar(120) not null,
|
||||
trigger_group varchar(80) not null,
|
||||
primary key (sched_name,trigger_group)
|
||||
sched_name varchar(120) not null,
|
||||
trigger_group varchar(80) not null,
|
||||
primary key (sched_name,trigger_group)
|
||||
);
|
||||
|
||||
create table ${_prefix}job_scheduler_state(
|
||||
sched_name varchar(120) not null,
|
||||
instance_name varchar(80) not null,
|
||||
last_checkin_time bigint not null,
|
||||
checkin_interval bigint not null,
|
||||
primary key (sched_name,instance_name)
|
||||
sched_name varchar(120) not null,
|
||||
instance_name varchar(80) not null,
|
||||
last_checkin_time bigint not null,
|
||||
checkin_interval bigint not null,
|
||||
primary key (sched_name,instance_name)
|
||||
);
|
||||
|
||||
create table ${_prefix}job_locks(
|
||||
sched_name varchar(120) not null,
|
||||
lock_name varchar(40) not null,
|
||||
primary key (sched_name,lock_name)
|
||||
sched_name varchar(120) not null,
|
||||
lock_name varchar(40) not null,
|
||||
primary key (sched_name,lock_name)
|
||||
);
|
||||
|
||||
@@ -77,22 +77,21 @@ CREATE TABLE ${_prefix}job_SIMPLE_TRIGGERS (
|
||||
TIMES_TRIGGERED BIGINT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE ${_prefix}job_simprop_triggers
|
||||
(
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||
STR_PROP_1 VARCHAR(512) NULL,
|
||||
STR_PROP_2 VARCHAR(512) NULL,
|
||||
STR_PROP_3 VARCHAR(512) NULL,
|
||||
INT_PROP_1 INTEGER NULL,
|
||||
INT_PROP_2 INTEGER NULL,
|
||||
LONG_PROP_1 BIGINT NULL,
|
||||
LONG_PROP_2 BIGINT NULL,
|
||||
DEC_PROP_1 NUMERIC(13,4) NULL,
|
||||
DEC_PROP_2 NUMERIC(13,4) NULL,
|
||||
BOOL_PROP_1 BOOLEAN NULL,
|
||||
BOOL_PROP_2 BOOLEAN NULL,
|
||||
CREATE TABLE ${_prefix}job_simprop_triggers (
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||
STR_PROP_1 VARCHAR(512) NULL,
|
||||
STR_PROP_2 VARCHAR(512) NULL,
|
||||
STR_PROP_3 VARCHAR(512) NULL,
|
||||
INT_PROP_1 INTEGER NULL,
|
||||
INT_PROP_2 INTEGER NULL,
|
||||
LONG_PROP_1 BIGINT NULL,
|
||||
LONG_PROP_2 BIGINT NULL,
|
||||
DEC_PROP_1 NUMERIC(13,4) NULL,
|
||||
DEC_PROP_2 NUMERIC(13,4) NULL,
|
||||
BOOL_PROP_1 BOOLEAN NULL,
|
||||
BOOL_PROP_2 BOOLEAN NULL,
|
||||
);
|
||||
|
||||
CREATE TABLE ${_prefix}job_BLOB_TRIGGERS (
|
||||
|
||||
@@ -7,139 +7,138 @@
|
||||
-- I didn't see this anywhere, so I thought I'd post it here. This is the script from Quartz to create the tables in a MySQL database, modified to use INNODB instead of MYISAM.
|
||||
|
||||
CREATE TABLE ${_prefix}job_JOB_DETAILS(
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
JOB_NAME VARCHAR(200) NOT NULL,
|
||||
JOB_GROUP VARCHAR(200) NOT NULL,
|
||||
DESCRIPTION VARCHAR(250) NULL,
|
||||
JOB_CLASS_NAME VARCHAR(250) NOT NULL,
|
||||
IS_DURABLE VARCHAR(1) NOT NULL,
|
||||
IS_NONCONCURRENT VARCHAR(1) NOT NULL,
|
||||
IS_UPDATE_DATA VARCHAR(1) NOT NULL,
|
||||
REQUESTS_RECOVERY VARCHAR(1) NOT NULL,
|
||||
JOB_DATA BLOB NULL,
|
||||
PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP))
|
||||
ENGINE=InnoDB;
|
||||
SCHED_NAME VARCHAR(120) NOT NULL COMMENT '计划名称',
|
||||
JOB_NAME VARCHAR(200) NOT NULL COMMENT '任务名称',
|
||||
JOB_GROUP VARCHAR(200) NOT NULL COMMENT '任务群组',
|
||||
DESCRIPTION VARCHAR(250) NULL COMMENT '说明',
|
||||
JOB_CLASS_NAME VARCHAR(250) NOT NULL COMMENT '任务Class名称',
|
||||
IS_DURABLE VARCHAR(1) NOT NULL COMMENT '是否持久化',
|
||||
IS_NONCONCURRENT VARCHAR(1) NOT NULL COMMENT '是否并发执行',
|
||||
IS_UPDATE_DATA VARCHAR(1) NOT NULL COMMENT '是否更新数据',
|
||||
REQUESTS_RECOVERY VARCHAR(1) NOT NULL COMMENT '是否恢复',
|
||||
JOB_DATA BLOB NULL COMMENT '调用数据对象',
|
||||
PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP))
|
||||
ENGINE=InnoDB COMMENT='任务详情表';
|
||||
|
||||
CREATE TABLE ${_prefix}job_TRIGGERS (
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||
JOB_NAME VARCHAR(200) NOT NULL,
|
||||
JOB_GROUP VARCHAR(200) NOT NULL,
|
||||
DESCRIPTION VARCHAR(250) NULL,
|
||||
NEXT_FIRE_TIME BIGINT(13) NULL,
|
||||
PREV_FIRE_TIME BIGINT(13) NULL,
|
||||
PRIORITY INTEGER NULL,
|
||||
TRIGGER_STATE VARCHAR(16) NOT NULL,
|
||||
TRIGGER_TYPE VARCHAR(8) NOT NULL,
|
||||
START_TIME BIGINT(13) NOT NULL,
|
||||
END_TIME BIGINT(13) NULL,
|
||||
CALENDAR_NAME VARCHAR(200) NULL,
|
||||
MISFIRE_INSTR SMALLINT(2) NULL,
|
||||
JOB_DATA BLOB NULL,
|
||||
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
|
||||
FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
|
||||
REFERENCES ${_prefix}job_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP))
|
||||
ENGINE=InnoDB;
|
||||
SCHED_NAME VARCHAR(120) NOT NULL COMMENT '计划名称',
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL COMMENT '触发器名称',
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL COMMENT '触发器组名称',
|
||||
JOB_NAME VARCHAR(200) NOT NULL COMMENT '作业名称',
|
||||
JOB_GROUP VARCHAR(200) NOT NULL COMMENT '作业组名称',
|
||||
DESCRIPTION VARCHAR(250) NULL COMMENT '作业描述',
|
||||
NEXT_FIRE_TIME BIGINT(13) NULL COMMENT '下次触发时间',
|
||||
PREV_FIRE_TIME BIGINT(13) NULL COMMENT '上次触发时间',
|
||||
PRIORITY INTEGER NULL COMMENT '触发器优先级',
|
||||
TRIGGER_STATE VARCHAR(16) NOT NULL COMMENT '触发器状态',
|
||||
TRIGGER_TYPE VARCHAR(8) NOT NULL COMMENT '触发器类型',
|
||||
START_TIME BIGINT(13) NOT NULL COMMENT '开始时间',
|
||||
END_TIME BIGINT(13) NULL COMMENT '结束时间',
|
||||
CALENDAR_NAME VARCHAR(200) NULL COMMENT '日历名称',
|
||||
MISFIRE_INSTR SMALLINT(2) NULL COMMENT '错过策略',
|
||||
JOB_DATA BLOB NULL COMMENT '调度数据对象',
|
||||
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
|
||||
FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
|
||||
REFERENCES ${_prefix}job_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP))
|
||||
ENGINE=InnoDB COMMENT='触发器表';
|
||||
|
||||
CREATE TABLE ${_prefix}job_SIMPLE_TRIGGERS (
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||
REPEAT_COUNT BIGINT(7) NOT NULL,
|
||||
REPEAT_INTERVAL BIGINT(12) NOT NULL,
|
||||
TIMES_TRIGGERED BIGINT(10) NOT NULL,
|
||||
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
|
||||
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
|
||||
REFERENCES ${_prefix}job_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
|
||||
ENGINE=InnoDB;
|
||||
SCHED_NAME VARCHAR(120) NOT NULL COMMENT '计划名称',
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL COMMENT '触发器名称',
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL COMMENT '触发器组名称',
|
||||
REPEAT_COUNT BIGINT(7) NOT NULL COMMENT '重复次数',
|
||||
REPEAT_INTERVAL BIGINT(12) NOT NULL COMMENT '重复间隔',
|
||||
TIMES_TRIGGERED BIGINT(10) NOT NULL COMMENT '触发时间',
|
||||
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
|
||||
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
|
||||
REFERENCES ${_prefix}job_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
|
||||
ENGINE=InnoDB COMMENT='简单触发器表';
|
||||
|
||||
CREATE TABLE ${_prefix}job_CRON_TRIGGERS (
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||
CRON_EXPRESSION VARCHAR(120) NOT NULL,
|
||||
TIME_ZONE_ID VARCHAR(80),
|
||||
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
|
||||
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
|
||||
REFERENCES ${_prefix}job_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
|
||||
ENGINE=InnoDB;
|
||||
SCHED_NAME VARCHAR(120) NOT NULL COMMENT '计划名称',
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL COMMENT '触发器名称',
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL COMMENT '触发器组名称',
|
||||
CRON_EXPRESSION VARCHAR(120) NOT NULL COMMENT 'Cron表达式',
|
||||
TIME_ZONE_ID VARCHAR(80) COMMENT '时间地域编号',
|
||||
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
|
||||
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
|
||||
REFERENCES ${_prefix}job_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
|
||||
ENGINE=InnoDB COMMENT='Cron触发器表';
|
||||
|
||||
CREATE TABLE ${_prefix}job_SIMPROP_TRIGGERS
|
||||
(
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||
STR_PROP_1 VARCHAR(512) NULL,
|
||||
STR_PROP_2 VARCHAR(512) NULL,
|
||||
STR_PROP_3 VARCHAR(512) NULL,
|
||||
INT_PROP_1 INT NULL,
|
||||
INT_PROP_2 INT NULL,
|
||||
LONG_PROP_1 BIGINT NULL,
|
||||
LONG_PROP_2 BIGINT NULL,
|
||||
DEC_PROP_1 NUMERIC(13,4) NULL,
|
||||
DEC_PROP_2 NUMERIC(13,4) NULL,
|
||||
BOOL_PROP_1 VARCHAR(1) NULL,
|
||||
BOOL_PROP_2 VARCHAR(1) NULL,
|
||||
CREATE TABLE ${_prefix}job_SIMPROP_TRIGGERS (
|
||||
SCHED_NAME VARCHAR(120) NOT NULL COMMENT '计划名称',
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL COMMENT '触发器名称',
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL COMMENT '触发器组名称',
|
||||
STR_PROP_1 VARCHAR(512) NULL COMMENT '字符串属性1',
|
||||
STR_PROP_2 VARCHAR(512) NULL COMMENT '字符串属性2',
|
||||
STR_PROP_3 VARCHAR(512) NULL COMMENT '字符串属性3',
|
||||
INT_PROP_1 INT NULL COMMENT '整型属性1',
|
||||
INT_PROP_2 INT NULL COMMENT '整型属性2',
|
||||
LONG_PROP_1 BIGINT NULL COMMENT '长整型属性1',
|
||||
LONG_PROP_2 BIGINT NULL COMMENT '长整型属性2',
|
||||
DEC_PROP_1 NUMERIC(13,4) NULL COMMENT '数值属性1',
|
||||
DEC_PROP_2 NUMERIC(13,4) NULL COMMENT '数值属性2',
|
||||
BOOL_PROP_1 VARCHAR(1) NULL COMMENT '布尔属性1',
|
||||
BOOL_PROP_2 VARCHAR(1) NULL COMMENT '布尔属性2',
|
||||
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
|
||||
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
|
||||
REFERENCES ${_prefix}job_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
|
||||
ENGINE=InnoDB;
|
||||
ENGINE=InnoDB COMMENT='日历触发器表';
|
||||
|
||||
CREATE TABLE ${_prefix}job_BLOB_TRIGGERS (
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||
BLOB_DATA BLOB NULL,
|
||||
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
|
||||
INDEX (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP),
|
||||
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
|
||||
REFERENCES ${_prefix}job_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
|
||||
ENGINE=InnoDB;
|
||||
SCHED_NAME VARCHAR(120) NOT NULL COMMENT '计划名称',
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL COMMENT '触发器名称',
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL COMMENT '触发器组名称',
|
||||
BLOB_DATA BLOB NULL COMMENT '触发器数据',
|
||||
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
|
||||
INDEX (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP),
|
||||
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
|
||||
REFERENCES ${_prefix}job_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
|
||||
ENGINE=InnoDB COMMENT='Blob类型触发器表';
|
||||
|
||||
CREATE TABLE ${_prefix}job_CALENDARS (
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
CALENDAR_NAME VARCHAR(200) NOT NULL,
|
||||
CALENDAR BLOB NOT NULL,
|
||||
PRIMARY KEY (SCHED_NAME,CALENDAR_NAME))
|
||||
ENGINE=InnoDB;
|
||||
SCHED_NAME VARCHAR(120) NOT NULL COMMENT '计划名称',
|
||||
CALENDAR_NAME VARCHAR(200) NOT NULL COMMENT '日历名称',
|
||||
CALENDAR BLOB NOT NULL COMMENT '日历数据',
|
||||
PRIMARY KEY (SCHED_NAME,CALENDAR_NAME))
|
||||
ENGINE=InnoDB COMMENT='日历表';
|
||||
|
||||
CREATE TABLE ${_prefix}job_PAUSED_TRIGGER_GRPS (
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||
PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP))
|
||||
ENGINE=InnoDB;
|
||||
SCHED_NAME VARCHAR(120) NOT NULL COMMENT '计划名称',
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL COMMENT '触发组名称',
|
||||
PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP))
|
||||
ENGINE=InnoDB COMMENT='暂停触发器表';
|
||||
|
||||
CREATE TABLE ${_prefix}job_FIRED_TRIGGERS (
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
ENTRY_ID VARCHAR(95) NOT NULL,
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||
INSTANCE_NAME VARCHAR(200) NOT NULL,
|
||||
FIRED_TIME BIGINT(13) NOT NULL,
|
||||
SCHED_TIME BIGINT(13) NOT NULL,
|
||||
PRIORITY INTEGER NOT NULL,
|
||||
STATE VARCHAR(16) NOT NULL,
|
||||
JOB_NAME VARCHAR(200) NULL,
|
||||
JOB_GROUP VARCHAR(200) NULL,
|
||||
IS_NONCONCURRENT VARCHAR(1) NULL,
|
||||
REQUESTS_RECOVERY VARCHAR(1) NULL,
|
||||
PRIMARY KEY (SCHED_NAME,ENTRY_ID))
|
||||
ENGINE=InnoDB;
|
||||
SCHED_NAME VARCHAR(120) NOT NULL COMMENT '计划名称',
|
||||
ENTRY_ID VARCHAR(95) NOT NULL COMMENT '登记编号',
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL COMMENT '触发器名称',
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL COMMENT '触发器组名称',
|
||||
INSTANCE_NAME VARCHAR(200) NOT NULL COMMENT '实例名称',
|
||||
FIRED_TIME BIGINT(13) NOT NULL COMMENT '记录开始时间',
|
||||
SCHED_TIME BIGINT(13) NOT NULL COMMENT '记录结束时间',
|
||||
PRIORITY INTEGER NOT NULL COMMENT '记录优先级',
|
||||
STATE VARCHAR(16) NOT NULL COMMENT '记录状态',
|
||||
JOB_NAME VARCHAR(200) NULL COMMENT '作业名称',
|
||||
JOB_GROUP VARCHAR(200) NULL COMMENT '作业组名称',
|
||||
IS_NONCONCURRENT VARCHAR(1) NULL COMMENT '是否并发',
|
||||
REQUESTS_RECOVERY VARCHAR(1) NULL COMMENT '是否接受恢复',
|
||||
PRIMARY KEY (SCHED_NAME,ENTRY_ID))
|
||||
ENGINE=InnoDB COMMENT='正在执行的触发器表';
|
||||
|
||||
CREATE TABLE ${_prefix}job_SCHEDULER_STATE (
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
INSTANCE_NAME VARCHAR(200) NOT NULL,
|
||||
LAST_CHECKIN_TIME BIGINT(13) NOT NULL,
|
||||
CHECKIN_INTERVAL BIGINT(13) NOT NULL,
|
||||
PRIMARY KEY (SCHED_NAME,INSTANCE_NAME))
|
||||
ENGINE=InnoDB;
|
||||
SCHED_NAME VARCHAR(120) NOT NULL COMMENT '计划名称',
|
||||
INSTANCE_NAME VARCHAR(200) NOT NULL COMMENT '实例名称',
|
||||
LAST_CHECKIN_TIME BIGINT(13) NOT NULL COMMENT '检查时间',
|
||||
CHECKIN_INTERVAL BIGINT(13) NOT NULL COMMENT '检查间隔',
|
||||
PRIMARY KEY (SCHED_NAME,INSTANCE_NAME))
|
||||
ENGINE=InnoDB COMMENT='状态检查表';
|
||||
|
||||
CREATE TABLE ${_prefix}job_LOCKS (
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
LOCK_NAME VARCHAR(40) NOT NULL,
|
||||
PRIMARY KEY (SCHED_NAME,LOCK_NAME))
|
||||
ENGINE=InnoDB;
|
||||
SCHED_NAME VARCHAR(120) NOT NULL COMMENT '计划名称',
|
||||
LOCK_NAME VARCHAR(40) NOT NULL COMMENT '锁定名称',
|
||||
PRIMARY KEY (SCHED_NAME,LOCK_NAME))
|
||||
ENGINE=InnoDB COMMENT='状态锁表';
|
||||
|
||||
CREATE INDEX IDX_QRTZ_J_REQ_RECOVERY ON ${_prefix}job_JOB_DETAILS(SCHED_NAME,REQUESTS_RECOVERY);
|
||||
CREATE INDEX IDX_QRTZ_J_GRP ON ${_prefix}job_JOB_DETAILS(SCHED_NAME,JOB_GROUP);
|
||||
|
||||
@@ -20,4 +20,10 @@
|
||||
<if test="global.dbName == 'postgresql'"></if>
|
||||
</select> -->
|
||||
|
||||
<!-- 删除某个日期之前创建的日志 -->
|
||||
<delete id="deleteLogBefore">
|
||||
DELETE FROM ${_prefix}sys_log
|
||||
WHERE create_date < #{createDate}
|
||||
</delete>
|
||||
|
||||
</mapper>
|
||||
@@ -43,6 +43,13 @@
|
||||
<template>category-ref:dao</template>
|
||||
</childTable>
|
||||
</category>
|
||||
<category value="crud_select_vue" label="单表/主子表 (增删改查,含 listselect 选择页面)Vue">
|
||||
<template>category-ref:crud_vue</template>
|
||||
<template>crud/vueSelect.xml</template>
|
||||
<childTable>
|
||||
<template>category-ref:dao</template>
|
||||
</childTable>
|
||||
</category>
|
||||
<category value="crud_cloud" label="单表/主子表 (增删改查 Cloud,生成 Api/Client)">
|
||||
<template>crud_cloud/entity.xml</template>
|
||||
<template>crud_cloud/mapper.xml</template>
|
||||
|
||||
@@ -0,0 +1,211 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
No deletion without permission, or be held responsible to law. -->
|
||||
<template>
|
||||
<name>vueSelect</name>
|
||||
<filePath>${frontDir}/src/components/ListSelect/src/selectType</filePath>
|
||||
<fileName>${urlPrefix}Select.ts</fileName>
|
||||
<content><![CDATA[
|
||||
import { useI18n } from '/@/hooks/web/useI18n';
|
||||
import { BasicColumn, BasicTableProps, FormProps } from '/@/components/Table';
|
||||
import { ${className}ListData } from '/@/api/${moduleName}${isNotEmpty(subModuleName)?'/'+subModuleName:''}/${className}';
|
||||
<%
|
||||
var userselectExists = false;
|
||||
var officeselectExists = false;
|
||||
var areaselectExists = false;
|
||||
for(c in table.columnList){
|
||||
if(c.isQuery == "1" && !c.isTreeEntityColumn){
|
||||
if(c.showType == 'userselect'){
|
||||
userselectExists = true;
|
||||
}else if(c.showType == 'officeselect'){
|
||||
officeselectExists = true;
|
||||
}else if(c.showType == 'areaselect'){
|
||||
areaselectExists = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
%>
|
||||
<% if(userselectExists || officeselectExists) { %>
|
||||
import { officeTreeData } from '/@/api/sys/office';
|
||||
<% } %>
|
||||
<% if(areaselectExists) { %>
|
||||
import { areaTreeData } from '/@/api/sys/area';
|
||||
<% } %>
|
||||
|
||||
const { t } = useI18n('sys.${className}');
|
||||
|
||||
const modalProps = {
|
||||
title: t('${functionNameSimple}选择'),
|
||||
};
|
||||
|
||||
const searchForm: FormProps = {
|
||||
baseColProps: { lg: 6, md: 8 },
|
||||
labelWidth: 90,
|
||||
schemas: [
|
||||
<% for(c in table.columnList){ %>
|
||||
<% if(c.isQuery == "1" && !c.isTreeEntityColumn){ %>
|
||||
{
|
||||
label: t('${c.columnLabel}${c.queryType == 'BETWEEN'?'起':''}'),
|
||||
field: '${c.attrName}${c.queryType == 'BETWEEN'?'_gte':''}',
|
||||
<% if(c.showType == 'input' || c.showType == 'textarea'){ %>
|
||||
component: 'Input',
|
||||
<% if (c.queryType == 'BETWEEN'){ %>
|
||||
},
|
||||
{
|
||||
field: '${c.attrName}${c.queryType == 'BETWEEN'?'_lte':''}',
|
||||
label: t('${c.columnLabel}${c.queryType == 'BETWEEN'?'止':''}'),
|
||||
component: 'Input',
|
||||
<% } %>
|
||||
<% }else if(c.showType == 'select' || c.showType == 'select_multiple'){
|
||||
var isMultiple = (c.showType == 'select_multiple'); %>
|
||||
component: 'Select',
|
||||
componentProps: {
|
||||
dictType: '${c.optionMap['dictType']}',
|
||||
allowClear: true,
|
||||
<% if(isMultiple){ %>
|
||||
mode: 'multiple',
|
||||
<% } %>
|
||||
},
|
||||
<% }else if(c.showType == 'radio' || c.showType == 'checkbox'){ %>
|
||||
component: '${@StringUtils.cap(c.showType)}Group',
|
||||
componentProps: {
|
||||
dictType: '${c.optionMap['dictType']}',
|
||||
},
|
||||
<% }else if(c.showType == 'date' || c.showType == 'datetime'){
|
||||
var isTime = (c.showType == 'datetime'); %>
|
||||
component: 'DatePicker',
|
||||
componentProps: {
|
||||
format: 'YYYY-MM-DD${isTime?' HH:mm':''}',
|
||||
showTime: ${isTime?'{ format: \'HH:mm\' \}':'false'},
|
||||
},
|
||||
<% if (c.queryType == 'BETWEEN'){ %>
|
||||
},
|
||||
{
|
||||
label: t('${c.columnLabel}${c.queryType == 'BETWEEN'?'止':''}'),
|
||||
field: '${c.attrName}${c.queryType == 'BETWEEN'?'_lte':''}',
|
||||
component: 'DatePicker',
|
||||
componentProps: {
|
||||
format: 'YYYY-MM-DD${isTime?' HH:mm':''}',
|
||||
showTime: ${isTime?'{ format: \'HH:mm\' \}':'false'},
|
||||
},
|
||||
<% } %>
|
||||
<% }else if(c.showType == 'userselect'){ %>
|
||||
component: 'TreeSelect',
|
||||
componentProps: {
|
||||
api: officeTreeData,
|
||||
params: { isLoadUser: true, userIdPrefix: '' },
|
||||
canSelectParent: false,
|
||||
allowClear: true,
|
||||
},
|
||||
<% }else if(c.showType == 'officeselect'){ %>
|
||||
component: 'TreeSelect',
|
||||
componentProps: {
|
||||
api: officeTreeData,
|
||||
allowClear: true,
|
||||
},
|
||||
<% }else if(c.showType == 'areaselect'){ %>
|
||||
component: 'TreeSelect',
|
||||
componentProps: {
|
||||
api: areaTreeData,
|
||||
allowClear: true,
|
||||
},
|
||||
<% }else{ %>
|
||||
component: 'Input',
|
||||
<% } %>
|
||||
},
|
||||
<% } %>
|
||||
<% } %>
|
||||
],
|
||||
};
|
||||
|
||||
const tableColumns: BasicColumn[] = [
|
||||
<%
|
||||
var firstColumn = true;
|
||||
// 生成树表的节点列
|
||||
if(table.isTreeEntity){
|
||||
for(c in table.columnList){
|
||||
if(c.attrName == table.treeViewNameAttrName){
|
||||
%>
|
||||
{
|
||||
title: t('${c.columnLabel}'),
|
||||
dataIndex: '${c.attrName}',
|
||||
width: 230,
|
||||
align: 'left',
|
||||
slot: 'firstColumn',
|
||||
},
|
||||
<%
|
||||
firstColumn = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
for(c in table.columnList){
|
||||
if(c.isList == "1"){
|
||||
// 如果是树结构的字段,则自动忽略
|
||||
if(table.isTreeEntity && (@StringUtils.inString(c.columnName, 'parent_code',
|
||||
'parent_codes', 'tree_sorts', 'tree_leaf', 'tree_level', 'tree_names')
|
||||
|| c.attrName == table.treeViewCodeAttrName
|
||||
|| c.attrName == table.treeViewNameAttrName)){
|
||||
continue;
|
||||
}
|
||||
%>
|
||||
{
|
||||
title: t('${c.columnLabel}'),
|
||||
<% if(c.showType == "userselect" || c.showType == "officeselect" || c.showType == "areaselect"){ %>
|
||||
dataIndex: '${c.attrName2}',
|
||||
<% }else{ %>
|
||||
dataIndex: '${c.attrName}',
|
||||
<% } %>
|
||||
<% if(!table.isTreeEntity){ %>
|
||||
key: 'a.${c.columnName}',
|
||||
sorter: true,
|
||||
<% } %>
|
||||
<% if(firstColumn){ %>
|
||||
width: 230,
|
||||
<% }else{ %>
|
||||
width: 130,
|
||||
<% } %>
|
||||
<% if ((isNotBlank(c.optionMap['dictType']) || @StringUtils.inString(c.attrType, 'java.util.Date', 'Integer', 'Long')) && !firstColumn){ %>
|
||||
align: 'center',
|
||||
<% }else if (@StringUtils.inString(c.attrType, 'Float', 'Double') && !firstColumn){ %>
|
||||
align: 'right',
|
||||
<% }else{ %>
|
||||
align: 'left',
|
||||
<% } %>
|
||||
<% if(c.showType == 'select' || c.showType == 'select_multiple' || c.showType == 'checkbox' || c.showType == 'radio'){ %>
|
||||
dictType: '${c.optionMap['dictType']}',
|
||||
<% } %>
|
||||
<% if(firstColumn){ %>
|
||||
slot: 'firstColumn',
|
||||
<% } %>
|
||||
},
|
||||
<%
|
||||
if(firstColumn){
|
||||
firstColumn = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
%>
|
||||
];
|
||||
|
||||
const tableProps: BasicTableProps = {
|
||||
api: ${className}ListData,
|
||||
beforeFetch: (params) => {
|
||||
params['isAll'] = true;
|
||||
return params;
|
||||
},
|
||||
columns: tableColumns,
|
||||
formConfig: searchForm,
|
||||
rowKey: '<% for(pk in table.pkList){ %>${pk.attrName}<% } %>',
|
||||
};
|
||||
|
||||
export default {
|
||||
modalProps,
|
||||
tableProps,
|
||||
itemCode: '<% for(pk in table.pkList){ %>${pk.attrName}<% } %>',
|
||||
itemName: '<% for(pk in table.pkList){ %>${pk.attrName}<% } %>',
|
||||
};
|
||||
<% %>
|
||||
]]>
|
||||
</content>
|
||||
</template>
|
||||
@@ -67,8 +67,8 @@
|
||||
<% } %>
|
||||
<% } %>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">\${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">\${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> \${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> \${text('重置')}</button>
|
||||
</div>
|
||||
</${'#'}form:form>
|
||||
<% /* 查询表单 end // 此行是为了去除空行 */ %>
|
||||
@@ -30,8 +30,8 @@
|
||||
<g>255</g>
|
||||
<b>255</b>
|
||||
</color>
|
||||
<font_name>Segoe UI</font_name>
|
||||
<font_size>9</font_size>
|
||||
<font_name>Arial</font_name>
|
||||
<font_size>14</font_size>
|
||||
<settings>
|
||||
<database>StandardSQL</database>
|
||||
<capital>false</capital>
|
||||
@@ -48,7 +48,7 @@
|
||||
<suspend_validator>false</suspend_validator>
|
||||
<export_setting>
|
||||
<export_ddl_setting>
|
||||
<output_path>db${'\\'}${moduleCode}.sql</output_path>
|
||||
<output_path>db/${moduleCode}.sql</output_path>
|
||||
<encoding>UTF-8</encoding>
|
||||
<line_feed>CR+LF</line_feed>
|
||||
<is_open_after_saved>false</is_open_after_saved>
|
||||
@@ -80,7 +80,7 @@
|
||||
</export_ddl_setting>
|
||||
<export_excel_setting>
|
||||
<category_id>null</category_id>
|
||||
<output_path>db${'\\'}${moduleCode}.xls</output_path>
|
||||
<output_path>db/${moduleCode}.xls</output_path>
|
||||
<template></template>
|
||||
<template_path></template_path>
|
||||
<used_default_template_lang>en</used_default_template_lang>
|
||||
@@ -96,7 +96,7 @@
|
||||
<is_open_after_saved>true</is_open_after_saved>
|
||||
</export_html_setting>
|
||||
<export_image_setting>
|
||||
<output_file_path>db${'\\'}${moduleCode}.png</output_file_path>
|
||||
<output_file_path>db/${moduleCode}.png</output_file_path>
|
||||
<category_dir_path></category_dir_path>
|
||||
<with_category_image>true</with_category_image>
|
||||
<is_open_after_saved>true</is_open_after_saved>
|
||||
@@ -129,8 +129,8 @@
|
||||
<id></id>
|
||||
<height>-1</height>
|
||||
<width>-1</width>
|
||||
<font_name>Microsoft YaHei UI</font_name>
|
||||
<font_size>9</font_size>
|
||||
<font_name>Arial</font_name>
|
||||
<font_size>14</font_size>
|
||||
<x>50</x>
|
||||
<y>50</y>
|
||||
<color>
|
||||
@@ -1046,8 +1046,8 @@
|
||||
<id>e553474c37270813e70025e433a4cf8a64653e13</id>
|
||||
<height>438</height>
|
||||
<width>387</width>
|
||||
<font_name>Segoe UI</font_name>
|
||||
<font_size>9</font_size>
|
||||
<font_name>Arial</font_name>
|
||||
<font_size>14</font_size>
|
||||
<x>864</x>
|
||||
<y>36</y>
|
||||
<color>
|
||||
@@ -1145,8 +1145,8 @@
|
||||
<id>5435ef11ea53f170fe3491b199c113e47932e175</id>
|
||||
<height>401</height>
|
||||
<width>320</width>
|
||||
<font_name>Segoe UI</font_name>
|
||||
<font_size>9</font_size>
|
||||
<font_name>Arial</font_name>
|
||||
<font_size>14</font_size>
|
||||
<x>36</x>
|
||||
<y>36</y>
|
||||
<color>
|
||||
@@ -1606,8 +1606,8 @@
|
||||
<id>5a836e654b7b7d19f102e87336fefa079d98a2e6</id>
|
||||
<height>438</height>
|
||||
<width>346</width>
|
||||
<font_name>Segoe UI</font_name>
|
||||
<font_size>9</font_size>
|
||||
<font_name>Arial</font_name>
|
||||
<font_size>14</font_size>
|
||||
<x>468</x>
|
||||
<y>36</y>
|
||||
<color>
|
||||
|
||||
@@ -30,8 +30,8 @@
|
||||
<g>255</g>
|
||||
<b>255</b>
|
||||
</color>
|
||||
<font_name>Segoe UI</font_name>
|
||||
<font_size>9</font_size>
|
||||
<font_name>Arial</font_name>
|
||||
<font_size>14</font_size>
|
||||
<settings>
|
||||
<database>StandardSQL</database>
|
||||
<capital>false</capital>
|
||||
@@ -48,7 +48,7 @@
|
||||
<suspend_validator>false</suspend_validator>
|
||||
<export_setting>
|
||||
<export_ddl_setting>
|
||||
<output_path>db${'\\'}${moduleCode}.sql</output_path>
|
||||
<output_path>db/${moduleCode}.sql</output_path>
|
||||
<encoding>UTF-8</encoding>
|
||||
<line_feed>CR+LF</line_feed>
|
||||
<is_open_after_saved>false</is_open_after_saved>
|
||||
@@ -80,7 +80,7 @@
|
||||
</export_ddl_setting>
|
||||
<export_excel_setting>
|
||||
<category_id>null</category_id>
|
||||
<output_path>db${'\\'}${moduleCode}.xls</output_path>
|
||||
<output_path>db/${moduleCode}.xls</output_path>
|
||||
<template></template>
|
||||
<template_path></template_path>
|
||||
<used_default_template_lang>en</used_default_template_lang>
|
||||
@@ -96,7 +96,7 @@
|
||||
<is_open_after_saved>true</is_open_after_saved>
|
||||
</export_html_setting>
|
||||
<export_image_setting>
|
||||
<output_file_path>db${'\\'}${moduleCode}.png</output_file_path>
|
||||
<output_file_path>db/${moduleCode}.png</output_file_path>
|
||||
<category_dir_path></category_dir_path>
|
||||
<with_category_image>true</with_category_image>
|
||||
<is_open_after_saved>true</is_open_after_saved>
|
||||
@@ -129,8 +129,8 @@
|
||||
<id></id>
|
||||
<height>-1</height>
|
||||
<width>-1</width>
|
||||
<font_name>Microsoft YaHei UI</font_name>
|
||||
<font_size>9</font_size>
|
||||
<font_name>Arial</font_name>
|
||||
<font_size>14</font_size>
|
||||
<x>50</x>
|
||||
<y>50</y>
|
||||
<color>
|
||||
@@ -1046,8 +1046,8 @@
|
||||
<id>e553474c37270813e70025e433a4cf8a64653e13</id>
|
||||
<height>438</height>
|
||||
<width>387</width>
|
||||
<font_name>Segoe UI</font_name>
|
||||
<font_size>9</font_size>
|
||||
<font_name>Arial</font_name>
|
||||
<font_size>14</font_size>
|
||||
<x>864</x>
|
||||
<y>36</y>
|
||||
<color>
|
||||
@@ -1145,8 +1145,8 @@
|
||||
<id>5435ef11ea53f170fe3491b199c113e47932e175</id>
|
||||
<height>401</height>
|
||||
<width>320</width>
|
||||
<font_name>Segoe UI</font_name>
|
||||
<font_size>9</font_size>
|
||||
<font_name>Arial</font_name>
|
||||
<font_size>14</font_size>
|
||||
<x>36</x>
|
||||
<y>36</y>
|
||||
<color>
|
||||
@@ -1606,8 +1606,8 @@
|
||||
<id>5a836e654b7b7d19f102e87336fefa079d98a2e6</id>
|
||||
<height>438</height>
|
||||
<width>346</width>
|
||||
<font_name>Segoe UI</font_name>
|
||||
<font_size>9</font_size>
|
||||
<font_name>Arial</font_name>
|
||||
<font_size>14</font_size>
|
||||
<x>468</x>
|
||||
<y>36</y>
|
||||
<color>
|
||||
|
||||
@@ -16,6 +16,8 @@ echo ""
|
||||
echo "[信息] 运行Web工程。"
|
||||
echo ""
|
||||
|
||||
cd "$(cd "$(dirname "$0")"; pwd)"
|
||||
|
||||
# 设置JDK目录
|
||||
# JAVA_HOME="$PWD/jdk1.8.0_x64"
|
||||
|
||||
@@ -37,7 +39,7 @@ else
|
||||
RUN_JAVA="$JAVA_HOME"/bin/java
|
||||
fi
|
||||
|
||||
exec $RUN_JAVA -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.WarLauncher
|
||||
exec "$RUN_JAVA" -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.WarLauncher
|
||||
]]>
|
||||
</content>
|
||||
</template>
|
||||
@@ -51,8 +51,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -38,8 +38,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -24,19 +24,19 @@
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('公司代码')}:</label>
|
||||
<div class="control-inline">
|
||||
<#form:input path="viewCode" maxlength="100" class="form-control width-120"/>
|
||||
<#form:input path="viewCode" maxlength="100" class="form-control width-90"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('公司名称')}:</label>
|
||||
<div class="control-inline">
|
||||
<#form:input path="companyName" maxlength="200" class="form-control width-120"/>
|
||||
<#form:input path="companyName" maxlength="200" class="form-control width-90"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('公司全称')}:</label>
|
||||
<div class="control-inline">
|
||||
<#form:input path="fullName" maxlength="200" class="form-control width-120"/>
|
||||
<#form:input path="fullName" maxlength="200" class="form-control width-90"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@@ -46,10 +46,10 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
</div>
|
||||
</div>
|
||||
@@ -58,7 +58,7 @@
|
||||
<script>
|
||||
//# // 初始化DataGrid对象
|
||||
$('#dataGrid').dataGrid({
|
||||
searchForm: $("#searchForm"),
|
||||
searchForm: $('#searchForm'),
|
||||
columnModel: [
|
||||
{header:'${text("公司名称")}', name:'companyName', index:'a.company_name', width:250, align:"left", frozen:true, formatter: function(val, obj, row, act){
|
||||
return '( '+row.viewCode+' ) '+'<a href="${ctx}/sys/company/form?companyCode='+row.companyCode+'" class="btnList" data-title="${text("编辑公司")}">'+(val||row.id)+'</a>';
|
||||
|
||||
@@ -89,8 +89,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -54,8 +54,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -34,8 +34,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -41,8 +41,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -51,8 +51,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -47,12 +47,6 @@
|
||||
<#form:input path="refName" maxlength="100" class="form-control width-90"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('手机')}:</label>
|
||||
<div class="control-inline">
|
||||
<#form:input path="mobile" maxlength="100" class="form-control width-90"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('状态')}:</label>
|
||||
<div class="control-inline width-90">
|
||||
@@ -61,11 +55,17 @@
|
||||
</div>
|
||||
<!-- <div class="form-row"></div> -->
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="button" class="btn btn-default btn-sm btnFormMore">${text('更多')}<i class="fa fa-angle-double-down"></i></button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
<button type="button" class="btn btn-default btn-sm btnFormMore"><i class="fa fa-angle-double-down"></i> ${text('更多')}</button>
|
||||
</div>
|
||||
<div class="form-more">
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('手机')}:</label>
|
||||
<div class="control-inline">
|
||||
<#form:input path="mobile" maxlength="100" class="form-control width-90"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('机构')}:</label>
|
||||
<div class="control-inline width-90">
|
||||
@@ -96,18 +96,20 @@
|
||||
<#form:input path="phone" maxlength="100" class="form-control width-90"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('岗位')}:</label>
|
||||
<div class="control-inline width-90">
|
||||
<#form:select name="employee.postCode" items="${postList}"
|
||||
itemLabel="postName" itemValue="postCode" blankOption="true" class="form-control isQuick"/>
|
||||
<div class="inline-block">
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('岗位')}:</label>
|
||||
<div class="control-inline width-90">
|
||||
<#form:select name="employee.postCode" items="${postList}"
|
||||
itemLabel="postName" itemValue="postCode" blankOption="true" class="form-control isQuick"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('角色')}:</label>
|
||||
<div class="control-inline width-120">
|
||||
<#form:select name="roleCode" items="${roleList}"
|
||||
itemLabel="roleName" itemValue="roleCode" blankOption="true" class="form-control isQuick"/>
|
||||
<div class="form-group">
|
||||
<label class="control-label">${text('角色')}:</label>
|
||||
<div class="control-inline width-90">
|
||||
<#form:select name="roleCode" items="${roleList}"
|
||||
itemLabel="roleName" itemValue="roleCode" blankOption="true" class="form-control isQuick"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -60,8 +60,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -40,8 +40,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<div class="row">
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-modules</artifactId>
|
||||
<version>5.5.0-SNAPSHOT</version>
|
||||
<version>5.5.2-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>JeeSite Modules</name>
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.7.14</version>
|
||||
<version>2.7.16</version>
|
||||
<relativePath />
|
||||
</parent>
|
||||
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.5.0-SNAPSHOT</version>
|
||||
<version>5.5.2-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>JeeSite Parent</name>
|
||||
@@ -76,8 +76,8 @@
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
|
||||
<!-- docker setting -->
|
||||
<docker.dockerHost>http://192.168.56.102:2375</docker.dockerHost>
|
||||
<docker.imageName>thinkgem/${project.artifactId}:5.0</docker.imageName>
|
||||
<docker.dockerHost>http://docker.local:2375</docker.dockerHost>
|
||||
<docker.imageName>thinkgem/${project.artifactId}:5.5</docker.imageName>
|
||||
<docker.run.port>8980:8980</docker.run.port>
|
||||
|
||||
</properties>
|
||||
@@ -354,11 +354,11 @@
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<!-- Docker 插件 https://github.com/fabric8io/docker-maven-plugin -->
|
||||
<!-- Docker 插件 https://dmp.fabric8.io - https://github.com/fabric8io/docker-maven-plugin -->
|
||||
<plugin>
|
||||
<groupId>io.fabric8</groupId>
|
||||
<artifactId>docker-maven-plugin</artifactId>
|
||||
<version>0.39.1</version>
|
||||
<version>0.43.4</version>
|
||||
<configuration>
|
||||
<dockerHost>${docker.dockerHost}</dockerHost>
|
||||
<verbose>true</verbose>
|
||||
|
||||
2
pom.xml
@@ -5,7 +5,7 @@
|
||||
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite</artifactId>
|
||||
<version>5.5.0-SNAPSHOT</version>
|
||||
<version>5.5.2-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>JeeSite</name>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-root</artifactId>
|
||||
<version>5.5.0-SNAPSHOT</version>
|
||||
<version>5.5.2-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>JeeSite Root</name>
|
||||
|
||||
@@ -12,7 +12,7 @@ echo [
|
||||
echo.
|
||||
echo [<5B><>Ϣ] <20><> v4.2 <20>汾<EFBFBD>Ժٷ<F3A3ACB9><D9B7><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>DZȽϰ<C8BD>ȫ<EFBFBD>ģ<EFBFBD><C4A3>ٷ<EFBFBD><D9B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĽű<C4BD><C5B1><EFBFBD>
|
||||
echo.
|
||||
echo [<5B><>Ϣ] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> v4.2 <20>Ժ<EFBFBD><D4BA>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
echo [<5B><>Ϣ] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ð汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
echo.
|
||||
pause
|
||||
|
||||
|
||||
@@ -13,9 +13,9 @@ echo "[信息] 本操作主要用于首次安装 JeeSite 或后安装 Module 的
|
||||
echo ""
|
||||
echo "[信息] 在 v4.2 版本以后,官方初始化数据库是比较安全的,官方代码中不会包含任何删除数据表及数据的脚本。"
|
||||
echo ""
|
||||
echo "[信息] 如果你是升级到 v4.2 以后的版本,无法排除你是否升级完整,为安全起见,建议先备份数据库后再操作。"
|
||||
echo "[信息] 如果你是升级到该版本,不排除你是否升级完整,为安全起见,建议先备份数据库后再操作。"
|
||||
echo ""
|
||||
echo -n "请按任意键继续 ... "
|
||||
echo "请按回车键继续 ... "
|
||||
read text
|
||||
|
||||
cd ..
|
||||
@@ -24,10 +24,12 @@ mvn clean compile -Dmaven.test.skip=true -U
|
||||
echo ""
|
||||
echo "[信息] 依赖下载完成,下面开始初始化数据库。"
|
||||
echo ""
|
||||
echo -n "请按任意键继续 ... "
|
||||
echo "请按回车键继续 ... "
|
||||
read text
|
||||
|
||||
MAVEN_OPTS="$MAVEN_OPTS -Xms512m -Xmx1024m"
|
||||
mvn test -Dmaven.test.skip=false -Dtest=com.jeesite.test.InitData
|
||||
|
||||
cd bin
|
||||
cd bin
|
||||
echo "请按回车键完成 ... "
|
||||
read text
|
||||
BIN
web-api/db/test.png
Normal file
|
After Width: | Height: | Size: 208 KiB |
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.5.0-SNAPSHOT</version>
|
||||
<version>5.5.2-SNAPSHOT</version>
|
||||
<relativePath>../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
*/
|
||||
package com.jeesite.modules;
|
||||
|
||||
import com.jeesite.common.config.Global;
|
||||
import com.jeesite.common.io.FileUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||
@@ -12,13 +16,21 @@ import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
|
||||
/**
|
||||
* Application
|
||||
* @author ThinkGem
|
||||
* @version 2018-10-13
|
||||
*/
|
||||
@SpringBootApplication
|
||||
public class ApiApplication extends SpringBootServletInitializer {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(ApiApplication.class);
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(ApiApplication.class, args);
|
||||
logger.info(
|
||||
"\r\n\r\n==============================================================\r\n"
|
||||
+ "\r\n 启动完成,接口地址:http://127.0.0.1:"
|
||||
+ Global.getProperty("server.port") + FileUtils.path("/"
|
||||
+ Global.getProperty("server.servlet.context-path"))
|
||||
+ "\r\n\r\n 默认管理账号: system 密码: admin"
|
||||
+ "\r\n\r\n==============================================================\r\n");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -117,6 +117,10 @@ jdbc:
|
||||
# 最大激活连接数
|
||||
maxActive: 20
|
||||
|
||||
# # 连接超时参数,单位毫秒 (v5.5.2+)
|
||||
# connectTimeout: ~
|
||||
# socketTimeout: ~
|
||||
#
|
||||
# # 获取连接等待超时时间,单位毫秒(1分钟)(4.0.6+)
|
||||
# maxWait: 60000
|
||||
#
|
||||
|
||||
@@ -9,6 +9,8 @@ echo ""
|
||||
echo "[信息] 运行Web工程。"
|
||||
echo ""
|
||||
|
||||
cd "$(cd "$(dirname "$0")"; pwd)"
|
||||
|
||||
# 设置JDK目录
|
||||
# JAVA_HOME="$PWD/jdk1.8.0_x64"
|
||||
|
||||
@@ -30,4 +32,4 @@ else
|
||||
RUN_JAVA="$JAVA_HOME"/bin/java
|
||||
fi
|
||||
|
||||
exec $RUN_JAVA -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.WarLauncher
|
||||
exec "$RUN_JAVA" -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.WarLauncher
|
||||
@@ -19,7 +19,7 @@ echo.
|
||||
echo.
|
||||
echo <20>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľű<C4BD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Docker <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>
|
||||
echo.
|
||||
echo "docker run -d -p 8980:8980 --name jeesite-web --restart unless-stopped -v /data:/data thinkgem/jeesite-web && docker logs -f jeesite-web"
|
||||
echo "docker run --name jeesite-web -p 8980:8980 -d --restart unless-stopped -v ~:/data thinkgem/jeesite-web && docker logs -f jeesite-web"
|
||||
echo.
|
||||
echo <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<C9BA><F3A3ACB7><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>http://127.0.0.1:8980/js/a/login <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>system <20><><EFBFBD>룺admin
|
||||
echo.
|
||||
|
||||
@@ -17,7 +17,7 @@ echo ""
|
||||
echo ""
|
||||
echo "参考下面的脚本,拷贝到 Docker 服务器上运行:"
|
||||
echo ""
|
||||
echo "docker run -d -p 8980:8980 --name jeesite-web --restart unless-stopped -v /data:/data thinkgem/jeesite-web && docker logs -f jeesite-web"
|
||||
echo "docker run --name jeesite-web -p 8980:8980 -d --restart unless-stopped -v ~:/data thinkgem/jeesite-web && docker logs -f jeesite-web"
|
||||
echo ""
|
||||
echo "启动完成后,访问项目:http://127.0.0.1:8980/js/a/login 用户名:system 密码:admin"
|
||||
echo ""
|
||||
|
||||
@@ -12,7 +12,7 @@ echo [
|
||||
echo.
|
||||
echo [<5B><>Ϣ] <20><> v4.2 <20>汾<EFBFBD>Ժٷ<F3A3ACB9><D9B7><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>DZȽϰ<C8BD>ȫ<EFBFBD>ģ<EFBFBD><C4A3>ٷ<EFBFBD><D9B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĽű<C4BD><C5B1><EFBFBD>
|
||||
echo.
|
||||
echo [<5B><>Ϣ] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> v4.2 <20>Ժ<EFBFBD><D4BA>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
echo [<5B><>Ϣ] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ð汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
echo.
|
||||
pause
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * No deletion without permission, or be held responsible to law.
|
||||
# *
|
||||
# * Author: ThinkGem@163.com
|
||||
# *
|
||||
# *
|
||||
# */
|
||||
echo ""
|
||||
echo "[信息] 初始化数据库。"
|
||||
@@ -13,9 +13,9 @@ echo "[信息] 本操作主要用于首次安装 JeeSite 或后安装 Module 的
|
||||
echo ""
|
||||
echo "[信息] 在 v4.2 版本以后,官方初始化数据库是比较安全的,官方代码中不会包含任何删除数据表及数据的脚本。"
|
||||
echo ""
|
||||
echo "[信息] 如果你是升级到 v4.2 以后的版本,无法排除你是否升级完整,为安全起见,建议先备份数据库后再操作。"
|
||||
echo "[信息] 如果你是升级到该版本,不排除你是否升级完整,为安全起见,建议先备份数据库后再操作。"
|
||||
echo ""
|
||||
echo -n "请按任意键继续 ... "
|
||||
echo "请按回车键继续 ... "
|
||||
read text
|
||||
|
||||
cd ..
|
||||
@@ -24,10 +24,12 @@ mvn clean compile -Dmaven.test.skip=true -U
|
||||
echo ""
|
||||
echo "[信息] 依赖下载完成,下面开始初始化数据库。"
|
||||
echo ""
|
||||
echo -n "请按任意键继续 ... "
|
||||
echo "请按回车键继续 ... "
|
||||
read text
|
||||
|
||||
MAVEN_OPTS="$MAVEN_OPTS -Xms512m -Xmx1024m"
|
||||
mvn test -Dmaven.test.skip=false -Dtest=com.jeesite.test.InitData
|
||||
|
||||
cd bin
|
||||
cd bin
|
||||
echo "请按回车键完成 ... "
|
||||
read text
|
||||
BIN
web-fast/db/test.png
Normal file
|
After Width: | Height: | Size: 208 KiB |
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.5.0-SNAPSHOT</version>
|
||||
<version>5.5.2-SNAPSHOT</version>
|
||||
<relativePath>../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -25,9 +25,9 @@
|
||||
<start-class>com.jeesite.modules.FastApplication</start-class>
|
||||
|
||||
<!-- docker setting -->
|
||||
<docker.dockerHost>http://192.168.56.102:2375</docker.dockerHost>
|
||||
<docker.imageName>thinkgem/jeesite-web:latest</docker.imageName>
|
||||
<docker.run.port>8980:8980</docker.run.port>
|
||||
<docker.dockerHost>http://docker.local:2375</docker.dockerHost>
|
||||
<docker.imageName>thinkgem/jeesite-web:latest</docker.imageName>
|
||||
<docker.run.port>8980:8980</docker.run.port>
|
||||
|
||||
</properties>
|
||||
|
||||
@@ -122,7 +122,6 @@
|
||||
<wtpContextName>${finalName}</wtpContextName>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
package com.jeesite.modules;
|
||||
|
||||
import com.jeesite.common.config.Global;
|
||||
import com.jeesite.common.io.FileUtils;
|
||||
import com.jeesite.common.web.BaseController;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -20,7 +21,6 @@ import java.net.UnknownHostException;
|
||||
/**
|
||||
* Application
|
||||
* @author ThinkGem
|
||||
* @version 2018-10-13
|
||||
*/
|
||||
@SpringBootApplication
|
||||
public class FastApplication extends SpringBootServletInitializer {
|
||||
@@ -38,9 +38,9 @@ public class FastApplication extends SpringBootServletInitializer {
|
||||
logger.info(
|
||||
"\r\n\r\n==============================================================\r\n"
|
||||
+ "\r\n 启动完成,访问地址:http://127.0.0.1:"
|
||||
+ Global.getProperty("server.port") + "/"
|
||||
+ Global.getProperty("server.servlet.context-path")
|
||||
+ "\r\n\r\n 默认用户名: system 密码: admin"
|
||||
+ Global.getProperty("server.port") + FileUtils.path("/"
|
||||
+ Global.getProperty("server.servlet.context-path"))
|
||||
+ "\r\n\r\n 默认管理账号: system 密码: admin"
|
||||
+ "\r\n\r\n==============================================================\r\n");
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ jdbc:
|
||||
# Mysql 数据库配置
|
||||
type: h2
|
||||
driver: org.h2.Driver
|
||||
url: jdbc:h2:/data/jeesite-db/jeesite501
|
||||
url: jdbc:h2:/data/jeesite-db/jeesite552
|
||||
username: jeesite
|
||||
password: jeesite
|
||||
testSql: SELECT 1
|
||||
|
||||
@@ -53,7 +53,7 @@ jdbc:
|
||||
# H2 数据库配置(请修改 /modules/core/pom.xml 文件,打开 H2 DB 依赖)
|
||||
type: h2
|
||||
driver: org.h2.Driver
|
||||
url: jdbc:h2:~/jeesite-db/jeesite501
|
||||
url: jdbc:h2:~/jeesite-db/jeesite552
|
||||
username: jeesite
|
||||
password: jeesite
|
||||
testSql: SELECT 1
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
"imageCompressBorder": 800, /* 图片压缩最大宽度限制 */
|
||||
"imageInsertAlign": "none", /* 插入的图片浮动方式 */
|
||||
"imageUrlPrefix": "", /* 图片访问路径前缀 */
|
||||
"imagePathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"imagePathFormat": "/userfiles/editor/{userid}/images/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
/* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */
|
||||
/* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */
|
||||
/* {time} 会替换成时间戳 */
|
||||
@@ -26,14 +26,14 @@
|
||||
/* 涂鸦图片上传配置项 */
|
||||
"scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */
|
||||
"scrawlFieldName": "upfile", /* 提交的图片表单名称 */
|
||||
"scrawlPathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"scrawlPathFormat": "/userfiles/editor/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"scrawlMaxSize": 2048000, /* 上传大小限制,单位B */
|
||||
"scrawlUrlPrefix": "", /* 图片访问路径前缀 */
|
||||
"scrawlInsertAlign": "none",
|
||||
|
||||
/* 截图工具上传 */
|
||||
"snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */
|
||||
"snapscreenPathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"snapscreenPathFormat": "/userfiles/editor/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"snapscreenUrlPrefix": "", /* 图片访问路径前缀 */
|
||||
"snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
"catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],
|
||||
"catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */
|
||||
"catcherFieldName": "source", /* 提交的图片列表表单名称 */
|
||||
"catcherPathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"catcherPathFormat": "/userfiles/editor/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"catcherUrlPrefix": "", /* 图片访问路径前缀 */
|
||||
"catcherMaxSize": 2048000, /* 上传大小限制,单位B */
|
||||
"catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */
|
||||
@@ -49,7 +49,7 @@
|
||||
/* 上传视频配置 */
|
||||
"videoActionName": "uploadvideo", /* 执行上传视频的action名称 */
|
||||
"videoFieldName": "upfile", /* 提交的视频表单名称 */
|
||||
"videoPathFormat": "/userfiles/{userid}/videos/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"videoPathFormat": "/userfiles/editor/{userid}/videos/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"videoUrlPrefix": "", /* 视频访问路径前缀 */
|
||||
"videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */
|
||||
"videoAllowFiles": [
|
||||
@@ -59,7 +59,7 @@
|
||||
/* 上传文件配置 */
|
||||
"fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */
|
||||
"fileFieldName": "upfile", /* 提交的文件表单名称 */
|
||||
"filePathFormat": "/userfiles/{userid}/files/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"filePathFormat": "/userfiles/editor/{userid}/files/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"fileUrlPrefix": "", /* 文件访问路径前缀 */
|
||||
"fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */
|
||||
"fileAllowFiles": [
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
/* 列出指定目录下的图片 */
|
||||
"imageManagerActionName": "listimage", /* 执行图片管理的action名称 */
|
||||
"imageManagerListPath": "/userfiles/{userid}/images/", /* 指定要列出图片的目录 */
|
||||
"imageManagerListPath": "/userfiles/editor/{userid}/images/", /* 指定要列出图片的目录 */
|
||||
"imageManagerListSize": 100, /* 每次列出文件数量 */
|
||||
"imageManagerUrlPrefix": "", /* 图片访问路径前缀 */
|
||||
"imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */
|
||||
@@ -80,7 +80,7 @@
|
||||
|
||||
/* 列出指定目录下的文件 */
|
||||
"fileManagerActionName": "listfile", /* 执行文件管理的action名称 */
|
||||
"fileManagerListPath": "/userfiles/{userid}/files/", /* 指定要列出文件的目录 */
|
||||
"fileManagerListPath": "/userfiles/editor/{userid}/files/", /* 指定要列出文件的目录 */
|
||||
"fileManagerListSize": 100, /* 每次列出文件数量 */
|
||||
"fileManagerUrlPrefix": "", /* 文件访问路径前缀 */
|
||||
"fileManagerAllowFiles": [
|
||||
|
||||
@@ -107,8 +107,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">查询</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">重置</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<#form:form id="inputForm" model="${testData}" action="${ctx}/test/testData/save" method="post" class="form-horizontal table-form">
|
||||
|
||||
@@ -109,8 +109,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">查询</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">重置</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize!3}"
|
||||
data-order-by="${parameter.orderBy!'post_code desc'}">
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<#form:input path="testInput" maxlength="200" class="form-control width-120"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-group hide">
|
||||
<label class="control-label">${text('多行文本')}:</label>
|
||||
<div class="control-inline">
|
||||
<#form:input path="testTextarea" maxlength="200" class="form-control width-120"/>
|
||||
@@ -46,9 +46,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="button" class="btn btn-default btn-sm btnFormMore">${text('更多')}<i class="fa fa-angle-double-down"></i></button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
<button type="button" class="btn btn-default btn-sm btnFormMore"><i class="fa fa-angle-double-down"></i> ${text('更多')}</button>
|
||||
</div>
|
||||
<div class="form-more">
|
||||
<div class="form-group">
|
||||
|
||||
@@ -38,8 +38,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -9,6 +9,8 @@ echo ""
|
||||
echo "[信息] 运行Web工程。"
|
||||
echo ""
|
||||
|
||||
cd "$(cd "$(dirname "$0")"; pwd)"
|
||||
|
||||
# 设置JDK目录
|
||||
# JAVA_HOME="$PWD/jdk1.8.0_x64"
|
||||
|
||||
@@ -30,4 +32,4 @@ else
|
||||
RUN_JAVA="$JAVA_HOME"/bin/java
|
||||
fi
|
||||
|
||||
exec $RUN_JAVA -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.WarLauncher
|
||||
exec "$RUN_JAVA" -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.WarLauncher
|
||||
@@ -15,7 +15,7 @@ echo "[信息] 在 v4.2 版本以后,官方初始化数据库是比较安全
|
||||
echo ""
|
||||
echo "[信息] 如果你是升级到该版本,不排除你是否升级完整,为安全起见,建议先备份数据库后再操作。"
|
||||
echo ""
|
||||
echo -n "请按任意键继续 ... "
|
||||
echo "请按回车键继续 ... "
|
||||
read text
|
||||
|
||||
cd ..
|
||||
@@ -24,10 +24,12 @@ mvn clean compile -Dmaven.test.skip=true -U
|
||||
echo ""
|
||||
echo "[信息] 依赖下载完成,下面开始初始化数据库。"
|
||||
echo ""
|
||||
echo -n "请按任意键继续 ... "
|
||||
echo "请按回车键继续 ... "
|
||||
read text
|
||||
|
||||
MAVEN_OPTS="$MAVEN_OPTS -Xms512m -Xmx1024m"
|
||||
mvn test -Dmaven.test.skip=false -Dtest=com.jeesite.test.InitData
|
||||
|
||||
cd bin
|
||||
cd bin
|
||||
echo "请按回车键完成 ... "
|
||||
read text
|
||||
280
web/db/test.erm
BIN
web/db/test.png
Normal file
|
After Width: | Height: | Size: 208 KiB |
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.5.0-SNAPSHOT</version>
|
||||
<version>5.5.2-SNAPSHOT</version>
|
||||
<relativePath>../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
*/
|
||||
package com.jeesite.modules;
|
||||
|
||||
import com.jeesite.common.config.Global;
|
||||
import com.jeesite.common.io.FileUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||
@@ -12,13 +16,21 @@ import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
|
||||
/**
|
||||
* Application
|
||||
* @author ThinkGem
|
||||
* @version 2018-10-13
|
||||
*/
|
||||
@SpringBootApplication
|
||||
public class Application extends SpringBootServletInitializer {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(Application.class);
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(Application.class, args);
|
||||
logger.info(
|
||||
"\r\n\r\n==============================================================\r\n"
|
||||
+ "\r\n 启动完成,访问地址:http://127.0.0.1:"
|
||||
+ Global.getProperty("server.port") + FileUtils.path("/"
|
||||
+ Global.getProperty("server.servlet.context-path"))
|
||||
+ "\r\n\r\n 默认管理账号: system 密码: admin"
|
||||
+ "\r\n\r\n==============================================================\r\n");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -117,6 +117,10 @@ jdbc:
|
||||
# 最大激活连接数
|
||||
maxActive: 20
|
||||
|
||||
# # 连接超时参数,单位毫秒 (v5.5.2+)
|
||||
# connectTimeout: ~
|
||||
# socketTimeout: ~
|
||||
#
|
||||
# # 获取连接等待超时时间,单位毫秒(1分钟)(4.0.6+)
|
||||
# maxWait: 60000
|
||||
#
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
"imageCompressBorder": 800, /* 图片压缩最大宽度限制 */
|
||||
"imageInsertAlign": "none", /* 插入的图片浮动方式 */
|
||||
"imageUrlPrefix": "", /* 图片访问路径前缀 */
|
||||
"imagePathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"imagePathFormat": "/userfiles/editor/{userid}/images/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
/* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */
|
||||
/* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */
|
||||
/* {time} 会替换成时间戳 */
|
||||
@@ -26,14 +26,14 @@
|
||||
/* 涂鸦图片上传配置项 */
|
||||
"scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */
|
||||
"scrawlFieldName": "upfile", /* 提交的图片表单名称 */
|
||||
"scrawlPathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"scrawlPathFormat": "/userfiles/editor/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"scrawlMaxSize": 2048000, /* 上传大小限制,单位B */
|
||||
"scrawlUrlPrefix": "", /* 图片访问路径前缀 */
|
||||
"scrawlInsertAlign": "none",
|
||||
|
||||
/* 截图工具上传 */
|
||||
"snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */
|
||||
"snapscreenPathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"snapscreenPathFormat": "/userfiles/editor/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"snapscreenUrlPrefix": "", /* 图片访问路径前缀 */
|
||||
"snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
"catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],
|
||||
"catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */
|
||||
"catcherFieldName": "source", /* 提交的图片列表表单名称 */
|
||||
"catcherPathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"catcherPathFormat": "/userfiles/editor/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"catcherUrlPrefix": "", /* 图片访问路径前缀 */
|
||||
"catcherMaxSize": 2048000, /* 上传大小限制,单位B */
|
||||
"catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */
|
||||
@@ -49,7 +49,7 @@
|
||||
/* 上传视频配置 */
|
||||
"videoActionName": "uploadvideo", /* 执行上传视频的action名称 */
|
||||
"videoFieldName": "upfile", /* 提交的视频表单名称 */
|
||||
"videoPathFormat": "/userfiles/{userid}/videos/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"videoPathFormat": "/userfiles/editor/{userid}/videos/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"videoUrlPrefix": "", /* 视频访问路径前缀 */
|
||||
"videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */
|
||||
"videoAllowFiles": [
|
||||
@@ -59,7 +59,7 @@
|
||||
/* 上传文件配置 */
|
||||
"fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */
|
||||
"fileFieldName": "upfile", /* 提交的文件表单名称 */
|
||||
"filePathFormat": "/userfiles/{userid}/files/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"filePathFormat": "/userfiles/editor/{userid}/files/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
|
||||
"fileUrlPrefix": "", /* 文件访问路径前缀 */
|
||||
"fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */
|
||||
"fileAllowFiles": [
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
/* 列出指定目录下的图片 */
|
||||
"imageManagerActionName": "listimage", /* 执行图片管理的action名称 */
|
||||
"imageManagerListPath": "/userfiles/{userid}/images/", /* 指定要列出图片的目录 */
|
||||
"imageManagerListPath": "/userfiles/editor/{userid}/images/", /* 指定要列出图片的目录 */
|
||||
"imageManagerListSize": 100, /* 每次列出文件数量 */
|
||||
"imageManagerUrlPrefix": "", /* 图片访问路径前缀 */
|
||||
"imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */
|
||||
@@ -80,7 +80,7 @@
|
||||
|
||||
/* 列出指定目录下的文件 */
|
||||
"fileManagerActionName": "listfile", /* 执行文件管理的action名称 */
|
||||
"fileManagerListPath": "/userfiles/{userid}/files/", /* 指定要列出文件的目录 */
|
||||
"fileManagerListPath": "/userfiles/editor/{userid}/files/", /* 指定要列出文件的目录 */
|
||||
"fileManagerListSize": 100, /* 每次列出文件数量 */
|
||||
"fileManagerUrlPrefix": "", /* 文件访问路径前缀 */
|
||||
"fileManagerAllowFiles": [
|
||||
|
||||
@@ -107,8 +107,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">查询</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">重置</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<#form:form id="inputForm" model="${testData}" action="${ctx}/test/testData/save" method="post" class="form-horizontal table-form">
|
||||
|
||||
@@ -109,8 +109,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">查询</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">重置</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize!3}"
|
||||
data-order-by="${parameter.orderBy!'post_code desc'}">
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<#form:input path="testInput" maxlength="200" class="form-control width-120"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-group hide">
|
||||
<label class="control-label">${text('多行文本')}:</label>
|
||||
<div class="control-inline">
|
||||
<#form:input path="testTextarea" maxlength="200" class="form-control width-120"/>
|
||||
@@ -46,9 +46,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="button" class="btn btn-default btn-sm btnFormMore">${text('更多')}<i class="fa fa-angle-double-down"></i></button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
<button type="button" class="btn btn-default btn-sm btnFormMore"><i class="fa fa-angle-double-down"></i> ${text('更多')}</button>
|
||||
</div>
|
||||
<div class="form-more">
|
||||
<div class="form-group">
|
||||
|
||||
@@ -38,8 +38,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-search"></i> ${text('查询')}</button>
|
||||
<button type="reset" class="btn btn-default btn-sm isQuick"><i class="glyphicon glyphicon-repeat"></i> ${text('重置')}</button>
|
||||
</div>
|
||||
</#form:form>
|
||||
<table id="dataGrid"></table>
|
||||
|
||||
@@ -9,6 +9,8 @@ echo ""
|
||||
echo "[信息] 运行Web工程。"
|
||||
echo ""
|
||||
|
||||
cd "$(cd "$(dirname "$0")"; pwd)"
|
||||
|
||||
# 设置JDK目录
|
||||
# JAVA_HOME="$PWD/jdk1.8.0_x64"
|
||||
|
||||
@@ -30,4 +32,4 @@ else
|
||||
RUN_JAVA="$JAVA_HOME"/bin/java
|
||||
fi
|
||||
|
||||
exec $RUN_JAVA -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.WarLauncher
|
||||
exec "$RUN_JAVA" -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.WarLauncher
|
||||