diff --git a/hsweb-web-controller/src/main/java/org/hsweb/web/controller/classified/ClassifiedController.java b/hsweb-web-controller/src/main/java/org/hsweb/web/controller/classified/ClassifiedController.java index 40d9fcbf4..af274d47c 100644 --- a/hsweb-web-controller/src/main/java/org/hsweb/web/controller/classified/ClassifiedController.java +++ b/hsweb-web-controller/src/main/java/org/hsweb/web/controller/classified/ClassifiedController.java @@ -20,6 +20,7 @@ import org.hsweb.web.bean.common.QueryParam; import org.hsweb.web.bean.po.classified.Classified; import org.hsweb.web.controller.GenericController; import org.hsweb.web.core.authorize.annotation.Authorize; +import org.hsweb.web.core.logger.annotation.AccessLogger; import org.hsweb.web.core.message.ResponseMessage; import org.hsweb.web.service.classified.ClassifiedService; import org.springframework.web.bind.annotation.CrossOrigin; @@ -37,6 +38,7 @@ import javax.annotation.Resource; @RestController @RequestMapping(value = "/classified") @Authorize(module = "classified") +@AccessLogger("分类管理") public class ClassifiedController extends GenericController { @Resource @@ -57,6 +59,7 @@ public class ClassifiedController extends GenericController */ @RequestMapping(value = "/byType/{type}") @Deprecated + @AccessLogger(value = "根据类别请求", describe = "已弃用") public ResponseMessage listByTypeOld(@PathVariable("type") String type, QueryParam param) { param.where("type", type); return list(param); @@ -71,7 +74,7 @@ public class ClassifiedController extends GenericController * @return 查询结果 */ @RequestMapping(value = "/type/{type}") - @CrossOrigin + @AccessLogger("根据类别请求") public ResponseMessage listByType(@PathVariable("type") String type, QueryParam param) { param.where("type", type); return list(param); diff --git a/hsweb-web-controller/src/main/java/org/hsweb/web/controller/cli/CliController.java b/hsweb-web-controller/src/main/java/org/hsweb/web/controller/cli/CliController.java new file mode 100644 index 000000000..1bace82b9 --- /dev/null +++ b/hsweb-web-controller/src/main/java/org/hsweb/web/controller/cli/CliController.java @@ -0,0 +1,34 @@ +package org.hsweb.web.controller.cli; + +import org.hsweb.web.core.authorize.annotation.Authorize; +import org.hsweb.web.core.logger.annotation.AccessLogger; +import org.hsweb.web.core.message.ResponseMessage; +import org.springframework.web.bind.annotation.*; + +import static org.hsweb.web.core.message.ResponseMessage.*; + +/** + * @author zhouhao + */ +@RestController +@RequestMapping("/cli") +@AccessLogger("命令行工具") +@Authorize(module = "cli") +public class CliController { + + @RequestMapping(value = "/{language}", method = RequestMethod.POST) + @AccessLogger("执行脚本") + @Authorize(action = "exec") + public ResponseMessage exec(@PathVariable String language, + @RequestBody String script) { + return ok(); + } + + @RequestMapping(value = "/shell", method = RequestMethod.POST) + @AccessLogger("执行Shell脚本") + @Authorize(action = "exec") + public ResponseMessage execShell(@RequestBody String shell, @RequestParam(required = false) String messageHolder) { + + return ok(); + } +} diff --git a/hsweb-web-core/src/main/java/org/hsweb/web/core/CoreAutoConfiguration.java b/hsweb-web-core/src/main/java/org/hsweb/web/core/CoreAutoConfiguration.java index fa1cfa2ec..1bec194a3 100644 --- a/hsweb-web-core/src/main/java/org/hsweb/web/core/CoreAutoConfiguration.java +++ b/hsweb-web-core/src/main/java/org/hsweb/web/core/CoreAutoConfiguration.java @@ -1,14 +1,90 @@ package org.hsweb.web.core; +import org.hsweb.commons.StringUtils; +import org.hsweb.expands.script.engine.DynamicScriptEngine; +import org.hsweb.expands.script.engine.DynamicScriptEngineFactory; +import org.hsweb.web.bean.po.user.User; +import org.hsweb.web.core.authorize.ExpressionScopeBean; +import org.hsweb.web.core.utils.WebUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.util.StreamUtils; + +import javax.annotation.PostConstruct; +import java.io.IOException; +import java.nio.charset.Charset; +import java.util.HashMap; +import java.util.Map; +import java.util.function.Supplier; -/** - * Created by zhouhao on 16-5-6. - */ @Configuration @ComponentScan("org.hsweb.web.core") public class CoreAutoConfiguration { + @Autowired(required = false) + private Map expressionScopeBeanMap = new HashMap<>(); + protected Logger logger = LoggerFactory.getLogger(this.getClass()); + + private String initializeScript = "classpath*:scripts/startup/initialize."; + + @PostConstruct + public void init() { + initScript(); + } + + private void initScript() { + Map vars = new HashMap<>(expressionScopeBeanMap); + vars.put("LoginUser", (Supplier) () -> WebUtil.getLoginUser()); + vars.put("StringUtils", StringUtils.class); + vars.put("User", User.class); + + initScript("js", vars); + initScript("groovy", vars); + initScript("java", vars); + initScript("spel", vars); + initScript("ognl", vars); + initScript("ruby", vars); + initScript("python", vars); + //执行脚本 + } + + private void initScript(String language, Map vars) { + try { + DynamicScriptEngine engine = DynamicScriptEngineFactory.getEngine(language); + if (engine == null) return; + vars.put("logger", LoggerFactory.getLogger("org.hsweb.script.".concat(language))); + vars.put("scriptEngine", engine); + engine.addGlobalVariable(vars); + Resource[] resources = new PathMatchingResourcePatternResolver().getResources(initializeScript.concat(language)); + for (Resource resource : resources) { + String script = StreamUtils.copyToString(resource.getInputStream(), Charset.forName("utf-8")); + engine.compile("__tmp", script); + try { + engine.execute("__tmp"); + } finally { + engine.remove("__tmp"); + } + } + } catch (NullPointerException e) { + // + } catch (IOException e) { + logger.error("读取脚本文件失败", e); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + } + + public static void main(String[] args) throws Exception { + new CoreAutoConfiguration().init(); + DynamicScriptEngine e = DynamicScriptEngineFactory.getEngine("javascript"); + e.compile("test", "alert('aaa');"); + System.out.println(e.execute("test").getIfSuccess()); + + } } diff --git a/hsweb-web-core/src/main/resources/scripts/startup/initialize.js b/hsweb-web-core/src/main/resources/scripts/startup/initialize.js new file mode 100644 index 000000000..822d9b20f --- /dev/null +++ b/hsweb-web-core/src/main/resources/scripts/startup/initialize.js @@ -0,0 +1,12 @@ +var println = function (args) { + try { + logger.info(args); + } catch (e) { + java.lang.System.out.println(args); + } +} + +scriptEngine.addGlobalVariable({ + "println": println, + "alert": println +}); diff --git a/hsweb-web-dao/hsweb-web-dao-mybatis/src/main/java/org/hsweb/web/mybatis/builder/EasyOrmSqlBuilder.java b/hsweb-web-dao/hsweb-web-dao-mybatis/src/main/java/org/hsweb/web/mybatis/builder/EasyOrmSqlBuilder.java index e59c03698..4bb54e625 100644 --- a/hsweb-web-dao/hsweb-web-dao-mybatis/src/main/java/org/hsweb/web/mybatis/builder/EasyOrmSqlBuilder.java +++ b/hsweb-web-dao/hsweb-web-dao-mybatis/src/main/java/org/hsweb/web/mybatis/builder/EasyOrmSqlBuilder.java @@ -10,6 +10,7 @@ import org.hsweb.ezorm.core.param.Term; import org.hsweb.ezorm.rdb.meta.RDBColumnMetaData; import org.hsweb.ezorm.rdb.meta.RDBDatabaseMetaData; import org.hsweb.ezorm.rdb.meta.RDBTableMetaData; +import org.hsweb.ezorm.rdb.meta.converter.DateTimeConverter; import org.hsweb.ezorm.rdb.render.SqlAppender; import org.hsweb.ezorm.rdb.render.SqlRender; import org.hsweb.ezorm.rdb.render.dialect.Dialect; @@ -23,6 +24,7 @@ import org.hsweb.web.bean.common.UpdateParam; import org.hsweb.web.core.datasource.DataSourceHolder; import org.hsweb.web.core.datasource.DatabaseType; import org.hsweb.web.core.exception.BusinessException; +import org.hsweb.web.core.utils.WebUtil; import org.hsweb.web.mybatis.plgins.pager.Pager; import org.hsweb.web.mybatis.utils.ResultMapsUtils; @@ -113,6 +115,7 @@ public class EasyOrmSqlBuilder { if (cached != null) { return cached; } + WebUtil RDBTableMetaData rdbTableMetaData = new RDBTableMetaData(); rdbTableMetaData.setName(tableName); rdbTableMetaData.setDatabaseMetaData(active); diff --git a/hsweb-web-message/pom.xml b/hsweb-web-message/pom.xml new file mode 100644 index 000000000..cf4406dba --- /dev/null +++ b/hsweb-web-message/pom.xml @@ -0,0 +1,33 @@ + + + + hsweb-framework + org.hsweb + 2.2-SNAPSHOT + + 4.0.0 + + hsweb-web-message + + + + junit + junit + test + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-starter-activemq + + + + + + \ No newline at end of file diff --git a/hsweb-web-message/src/main/java/org/hsweb/web/message/Message.java b/hsweb-web-message/src/main/java/org/hsweb/web/message/Message.java new file mode 100644 index 000000000..d07de1755 --- /dev/null +++ b/hsweb-web-message/src/main/java/org/hsweb/web/message/Message.java @@ -0,0 +1,46 @@ +package org.hsweb.web.message; + +/** + * @author zhouhao + */ +public class Message { + private String callback; + + private String to; + + private String from; + + private String content; + + public String getTo() { + return to; + } + + public void setTo(String to) { + this.to = to; + } + + public String getFrom() { + return from; + } + + public void setFrom(String from) { + this.from = from; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getCallback() { + return callback; + } + + public void setCallback(String callback) { + this.callback = callback; + } +} diff --git a/hsweb-web-message/src/main/java/org/hsweb/web/message/MessageManager.java b/hsweb-web-message/src/main/java/org/hsweb/web/message/MessageManager.java new file mode 100644 index 000000000..162bbee76 --- /dev/null +++ b/hsweb-web-message/src/main/java/org/hsweb/web/message/MessageManager.java @@ -0,0 +1,10 @@ +package org.hsweb.web.message; + +/** + * @author zhouhao + */ +public interface MessageManager { + + void send(Message message, boolean discardIfUserOffline); + +} diff --git a/hsweb-web-message/src/test/java/org/hsweb/web/message/AmqpTests.java b/hsweb-web-message/src/test/java/org/hsweb/web/message/AmqpTests.java new file mode 100644 index 000000000..8a12028e6 --- /dev/null +++ b/hsweb-web-message/src/test/java/org/hsweb/web/message/AmqpTests.java @@ -0,0 +1,30 @@ +package org.hsweb.web.message; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.jms.annotation.EnableJms; +import org.springframework.jms.core.JmsMessagingTemplate; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.HashMap; + + +/** + * @author zhouhao + */ +@RunWith(SpringRunner.class) +@SpringBootTest(classes = SampleActiveMQApplication.class, properties = "application.yml") +@EnableJms +public class AmqpTests { + + @Autowired + private JmsMessagingTemplate jmsMessagingTemplate; + + @Test + public void testSend() { + jmsMessagingTemplate.convertAndSend("test", new HashMap<>()); + } + +} diff --git a/hsweb-web-message/src/test/java/org/hsweb/web/message/Consumer.java b/hsweb-web-message/src/test/java/org/hsweb/web/message/Consumer.java new file mode 100644 index 000000000..d90c47ce6 --- /dev/null +++ b/hsweb-web-message/src/test/java/org/hsweb/web/message/Consumer.java @@ -0,0 +1,14 @@ +package org.hsweb.web.message; + +import org.springframework.jms.annotation.JmsListener; +import org.springframework.stereotype.Component; + +@Component +public class Consumer { + + @JmsListener(destination = "test") + public void receiveQueue(String text) { + System.out.println(text); + } + +} \ No newline at end of file diff --git a/hsweb-web-message/src/test/java/org/hsweb/web/message/SampleActiveMQApplication.java b/hsweb-web-message/src/test/java/org/hsweb/web/message/SampleActiveMQApplication.java new file mode 100644 index 000000000..e8d1fc76b --- /dev/null +++ b/hsweb-web-message/src/test/java/org/hsweb/web/message/SampleActiveMQApplication.java @@ -0,0 +1,21 @@ +package org.hsweb.web.message; + +import javax.jms.Queue; + +import org.apache.activemq.command.ActiveMQQueue; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.jms.annotation.EnableJms; + +@SpringBootApplication +@EnableJms +public class SampleActiveMQApplication { + + @Bean + public Queue queue() { + return new ActiveMQQueue("test"); + } + +} \ No newline at end of file diff --git a/hsweb-web-message/src/test/resources/application.yml b/hsweb-web-message/src/test/resources/application.yml new file mode 100644 index 000000000..6ec489bb6 --- /dev/null +++ b/hsweb-web-message/src/test/resources/application.yml @@ -0,0 +1,3 @@ +spring: + activemq: + in-memory: true \ No newline at end of file diff --git a/hsweb-web-starter/src/main/resources/org.hsweb.start.scripts/initialize/initialize.groovy b/hsweb-web-starter/src/main/resources/org.hsweb.start.scripts/initialize/initialize.groovy new file mode 100644 index 000000000..bf7627942 --- /dev/null +++ b/hsweb-web-starter/src/main/resources/org.hsweb.start.scripts/initialize/initialize.groovy @@ -0,0 +1,9 @@ +package org.hsweb.start.scripts.initialize + +/** + * @TODO + * @author zhouhao + * @since + */ +class initialize { +} diff --git a/hsweb-web-starter/src/main/resources/org.hsweb.start.scripts/install/install.groovy b/hsweb-web-starter/src/main/resources/org.hsweb.start.scripts/install/install.groovy new file mode 100644 index 000000000..e69de29bb diff --git a/hsweb-web-starter/src/main/resources/org.hsweb.start.scripts/install/sql/h2/install.sql b/hsweb-web-starter/src/main/resources/org.hsweb.start.scripts/install/sql/h2/install.sql new file mode 100644 index 000000000..cac4c32df --- /dev/null +++ b/hsweb-web-starter/src/main/resources/org.hsweb.start.scripts/install/sql/h2/install.sql @@ -0,0 +1,605 @@ +CREATE TABLE "S_USER_PROFILE" ( + "U_ID" VARCHAR2(32) NOT NULL, + "CONTENT" CLOB NOT NULL, + "TYPE" VARCHAR2(512) NULL, + "USER_ID" VARCHAR2(32) NULL +); +COMMENT ON TABLE "S_USER_PROFILE" IS '用户配置表'; +COMMENT ON COLUMN "S_USER_PROFILE"."U_ID" IS 'UID'; +COMMENT ON COLUMN "S_USER_PROFILE"."CONTENT" IS '配置内容'; +COMMENT ON COLUMN "S_USER_PROFILE"."TYPE" IS '类型'; +COMMENT ON COLUMN "S_USER_PROFILE"."USER_ID" IS '用户ID'; + + +CREATE TABLE "S_CONFIG" ( + "U_ID" VARCHAR2(32) NOT NULL, + "CONTENT" CLOB NOT NULL, + "REMARK" VARCHAR2(512) NULL, + "CREATE_DATE" DATETIME NOT NULL, + "CLASSIFIED_ID" VARCHAR2(32) NULL, + "UPDATE_DATE" DATETIME NULL +); +COMMENT ON TABLE "S_CONFIG" IS '系统配置文件表'; +COMMENT ON COLUMN "S_CONFIG"."U_ID" IS 'UID'; +COMMENT ON COLUMN "S_CONFIG"."CONTENT" IS '配置内容'; +COMMENT ON COLUMN "S_CONFIG"."REMARK" IS '备注'; +COMMENT ON COLUMN "S_CONFIG"."CLASSIFIED_ID" IS '分类ID'; +COMMENT ON COLUMN "S_CONFIG"."CREATE_DATE" IS '创建日期'; +COMMENT ON COLUMN "S_CONFIG"."UPDATE_DATE" IS '修改日期'; +CREATE TABLE "S_FORM" ( + "U_ID" VARCHAR2(32) NOT NULL, + "CLASSIFIED_ID" VARCHAR2(32), + "NAME" VARCHAR2(256) NOT NULL, + "HTML" CLOB NULL, + "META" CLOB NULL, + "CONFIG" CLOB NULL, + "VERSION" NUMBER(32) NULL, + "REVISION" NUMBER(32) NULL, + "RELEASE" NUMBER(32) NULL, + "USING" NUMBER(4) NULL, + "CREATE_DATE" DATETIME NOT NULL, + "UPDATE_DATE" DATETIME NULL, + "REMARK" VARCHAR2(200) NULL +); +COMMENT ON COLUMN "S_FORM"."U_ID" IS 'UID'; +COMMENT ON COLUMN "S_FORM"."CLASSIFIED_ID" IS '分类ID'; +COMMENT ON COLUMN "S_FORM"."NAME" IS '名称'; +COMMENT ON COLUMN "S_FORM"."HTML" IS 'HTML内容'; +COMMENT ON COLUMN "S_FORM"."META" IS '结构定义'; +COMMENT ON COLUMN "S_FORM"."CONFIG" IS '配置'; +COMMENT ON COLUMN "S_FORM"."VERSION" IS '版本'; +COMMENT ON COLUMN "S_FORM"."REVISION" IS '修订版'; +COMMENT ON COLUMN "S_FORM"."RELEASE" IS '当前发布版本'; +COMMENT ON COLUMN "S_FORM"."USING" IS '是否使用中'; +COMMENT ON COLUMN "S_FORM"."CREATE_DATE" IS '创建日期'; +COMMENT ON COLUMN "S_FORM"."UPDATE_DATE" IS '修改日期'; +CREATE TABLE "S_TEMPLATE" ( + "U_ID" VARCHAR2(32) NOT NULL, + "NAME" VARCHAR2(256) NOT NULL, + "TEMPLATE" CLOB NULL, + "CLASSIFIED_ID" VARCHAR2(32) NULL, + "TYPE" VARCHAR2(64) NULL, + "SCRIPT" CLOB NULL, + "CSS" CLOB NULL, + "CSS_LINKS" CLOB NULL, + "SCRIPT_LINKS" CLOB NULL, + "VERSION" NUMBER(32) NULL, + "REVISION" NUMBER(32) NULL, + "RELEASE" NUMBER(32) NULL, + "USING" NUMBER(4) NULL, + "REMARK" VARCHAR2(200) NULL +); +COMMENT ON COLUMN "S_TEMPLATE"."U_ID" IS 'UID'; +COMMENT ON COLUMN "S_TEMPLATE"."NAME" IS '名称'; +COMMENT ON COLUMN "S_TEMPLATE"."TEMPLATE" IS '模板'; +COMMENT ON COLUMN "S_TEMPLATE"."CLASSIFIED_ID" IS '分类'; +COMMENT ON COLUMN "S_TEMPLATE"."TYPE" IS '类型'; +COMMENT ON COLUMN "S_TEMPLATE"."SCRIPT" IS '脚本'; +COMMENT ON COLUMN "S_TEMPLATE"."CSS" IS '样式'; +COMMENT ON COLUMN "S_TEMPLATE"."CSS_LINKS" IS '样式链接'; +COMMENT ON COLUMN "S_TEMPLATE"."SCRIPT_LINKS" IS '脚本链接'; +COMMENT ON COLUMN "S_TEMPLATE"."VERSION" IS '版本'; +COMMENT ON COLUMN "S_TEMPLATE"."REVISION" IS '修订版'; +COMMENT ON COLUMN "S_TEMPLATE"."RELEASE" IS '当前发布版本'; +COMMENT ON COLUMN "S_TEMPLATE"."USING" IS '是否使用中'; +CREATE TABLE "S_MODULES" ( + "U_ID" VARCHAR2(32) NOT NULL, + "NAME" VARCHAR2(256) NOT NULL, + "URI" VARCHAR2(1024) NULL, + "ICON" VARCHAR2(256) NULL, + "PARENT_ID" VARCHAR2(256) NOT NULL, + "REMARK" VARCHAR2(512) NULL, + "STATUS" NUMBER(4) NULL, + "OPTIONAL" CLOB NOT NULL, + "SORT_INDEX" NUMBER(32) NOT NULL +); +COMMENT ON TABLE "S_MODULES" IS '系统模块'; +COMMENT ON COLUMN "S_MODULES"."U_ID" IS 'UID'; +COMMENT ON COLUMN "S_MODULES"."NAME" IS '模块名称'; +COMMENT ON COLUMN "S_MODULES"."URI" IS 'URI'; +COMMENT ON COLUMN "S_MODULES"."ICON" IS '图标'; +COMMENT ON COLUMN "S_MODULES"."PARENT_ID" IS '上级菜单'; +COMMENT ON COLUMN "S_MODULES"."REMARK" IS '备注'; +COMMENT ON COLUMN "S_MODULES"."STATUS" IS '状态'; +COMMENT ON COLUMN "S_MODULES"."OPTIONAL" IS '可选权限'; +COMMENT ON COLUMN "S_MODULES"."SORT_INDEX" IS '排序'; +CREATE TABLE "S_MODULE_META" ( + "U_ID" VARCHAR2(32) NOT NULL, + "KEY" VARCHAR2(256) NOT NULL, + "MODULE_ID" VARCHAR2(32) NOT NULL, + "ROLE_ID" VARCHAR2(32) NULL, + "REMARK" VARCHAR2(1024) NULL, + "META" CLOB NULL, + "STATUS" NUMBER(4) NULL +); +COMMENT ON TABLE "S_MODULE_META" IS '系统模块配置'; +COMMENT ON COLUMN "S_MODULE_META"."U_ID" IS 'UID'; +COMMENT ON COLUMN "S_MODULE_META"."KEY" IS '名称'; +COMMENT ON COLUMN "S_MODULE_META"."MODULE_ID" IS '模块ID'; +COMMENT ON COLUMN "S_MODULE_META"."ROLE_ID" IS '角色ID'; +COMMENT ON COLUMN "S_MODULE_META"."META" IS '内容'; +COMMENT ON COLUMN "S_MODULE_META"."REMARK" IS '备注'; +COMMENT ON COLUMN "S_MODULE_META"."STATUS" IS '状态'; +CREATE TABLE "S_RESOURCES" ( + "U_ID" VARCHAR2(32) NOT NULL, + "NAME" VARCHAR2(256) NOT NULL, + "PATH" VARCHAR2(1024) NOT NULL, + "TYPE" VARCHAR2(256) NOT NULL, + "MD5" VARCHAR2(256) NOT NULL, + "SIZE" NUMBER(32) NULL, + "STATUS" NUMBER(4) NULL, + "CLASSIFIED" VARCHAR2(32) NULL, + "CREATE_DATE" DATETIME NOT NULL, + "CREATOR_ID" VARCHAR2(256) NOT NULL +); +COMMENT ON TABLE "S_RESOURCES" IS '资源表'; +COMMENT ON COLUMN "S_RESOURCES"."U_ID" IS 'UID'; +COMMENT ON COLUMN "S_RESOURCES"."NAME" IS '资源名称'; +COMMENT ON COLUMN "S_RESOURCES"."PATH" IS '路径'; +COMMENT ON COLUMN "S_RESOURCES"."TYPE" IS '类型'; +COMMENT ON COLUMN "S_RESOURCES"."MD5" IS 'MD5校验值'; +COMMENT ON COLUMN "S_RESOURCES"."STATUS" IS '状态'; +COMMENT ON COLUMN "S_RESOURCES"."SIZE" IS '资源大小'; +COMMENT ON COLUMN "S_RESOURCES"."CLASSIFIED" IS '分类'; +COMMENT ON COLUMN "S_RESOURCES"."CREATE_DATE" IS '创建时间'; +COMMENT ON COLUMN "S_RESOURCES"."CREATOR_ID" IS '创建人'; +CREATE TABLE "S_CLASSIFIED" ( + "U_ID" VARCHAR2(32) NOT NULL, + "NAME" VARCHAR2(256) NOT NULL, + "REMARK" VARCHAR2(1024) NULL, + "TYPE" VARCHAR2(256) NULL, + "PARENT_ID" VARCHAR2(32) NOT NULL, + "ICON" VARCHAR2(256) NULL, + "CONFIG" CLOB NULL, + "SORT_INDEX" NUMBER(32) NULL +); +COMMENT ON TABLE "S_CLASSIFIED" IS '数据分类表'; +COMMENT ON COLUMN "S_CLASSIFIED"."U_ID" IS 'UID'; +COMMENT ON COLUMN "S_CLASSIFIED"."NAME" IS '分类名称'; +COMMENT ON COLUMN "S_CLASSIFIED"."REMARK" IS '备注'; +COMMENT ON COLUMN "S_CLASSIFIED"."TYPE" IS '类型'; +COMMENT ON COLUMN "S_CLASSIFIED"."PARENT_ID" IS '父级分类'; +COMMENT ON COLUMN "S_CLASSIFIED"."ICON" IS '图标'; +COMMENT ON COLUMN "S_CLASSIFIED"."CONFIG" IS '分类配置'; +COMMENT ON COLUMN "S_CLASSIFIED"."SORT_INDEX" IS '排序'; +CREATE TABLE "S_ROLE" ( + "U_ID" VARCHAR2(32) NOT NULL, + "NAME" VARCHAR2(256) NOT NULL, + "TYPE" VARCHAR2(50) NULL, + "REMARK" VARCHAR2(512) NULL +); +COMMENT ON TABLE "S_ROLE" IS '角色表'; +COMMENT ON COLUMN "S_ROLE"."U_ID" IS 'UID'; +COMMENT ON COLUMN "S_ROLE"."NAME" IS '角色名称'; +COMMENT ON COLUMN "S_ROLE"."TYPE" IS '类型'; +COMMENT ON COLUMN "S_ROLE"."REMARK" IS '备注'; +CREATE TABLE "S_ROLE_MODULES" ( + "U_ID" VARCHAR2(32) NOT NULL, + "MODULE_ID" VARCHAR2(256) NOT NULL, + "ROLE_ID" VARCHAR2(256) NOT NULL, + "ACTIONS" CLOB NULL +); +COMMENT ON TABLE "S_ROLE_MODULES" IS '角色模块绑定表'; +COMMENT ON COLUMN "S_ROLE_MODULES"."U_ID" IS 'UID'; +COMMENT ON COLUMN "S_ROLE_MODULES"."MODULE_ID" IS '模块ID'; +COMMENT ON COLUMN "S_ROLE_MODULES"."ROLE_ID" IS '角色ID'; +COMMENT ON COLUMN "S_ROLE_MODULES"."ACTIONS" IS '可操作权限'; +CREATE TABLE "S_SCRIPT" ( + "U_ID" VARCHAR2(32) NOT NULL, + "NAME" VARCHAR2(256) NOT NULL, + "CLASSIFIED_ID" VARCHAR2(1024) NOT NULL, + "TYPE" VARCHAR2(256) NOT NULL, + "CONTENT" CLOB NOT NULL, + "REMARK" VARCHAR2(512) NULL, + "STATUS" NUMBER(4) NULL +); +COMMENT ON TABLE "S_SCRIPT" IS '脚本'; +COMMENT ON COLUMN "S_SCRIPT"."U_ID" IS 'UID'; +COMMENT ON COLUMN "S_SCRIPT"."NAME" IS '脚本名称'; +COMMENT ON COLUMN "S_SCRIPT"."CLASSIFIED_ID" IS '路径'; +COMMENT ON COLUMN "S_SCRIPT"."TYPE" IS '类型'; +COMMENT ON COLUMN "S_SCRIPT"."CONTENT" IS '内容'; +COMMENT ON COLUMN "S_SCRIPT"."REMARK" IS '备注'; +COMMENT ON COLUMN "S_SCRIPT"."STATUS" IS '状态'; +CREATE TABLE "S_USER" ( + "U_ID" VARCHAR2(64) NOT NULL, + "USERNAME" VARCHAR2(64) NOT NULL, + "PASSWORD" VARCHAR2(64) NOT NULL, + "NAME" VARCHAR2(64) NULL, + "EMAIL" VARCHAR2(512) NULL, + "PHONE" VARCHAR2(64) NULL, + "STATUS" NUMBER(4) NULL, + "CREATE_DATE" DATETIME NOT NULL, + "UPDATE_DATE" DATETIME NULL +); +COMMENT ON TABLE "S_USER" IS '用户表'; +COMMENT ON COLUMN "S_USER"."U_ID" IS 'ID'; +COMMENT ON COLUMN "S_USER"."USERNAME" IS '用户名'; +COMMENT ON COLUMN "S_USER"."PASSWORD" IS '密码'; +COMMENT ON COLUMN "S_USER"."NAME" IS '姓名'; +COMMENT ON COLUMN "S_USER"."EMAIL" IS '邮箱'; +COMMENT ON COLUMN "S_USER"."PHONE" IS '联系电话'; +COMMENT ON COLUMN "S_USER"."STATUS" IS '状态'; +COMMENT ON COLUMN "S_USER"."CREATE_DATE" IS '创建日期'; +COMMENT ON COLUMN "S_USER"."UPDATE_DATE" IS '修改日期'; +CREATE TABLE "S_USER_ROLE" ( + "U_ID" VARCHAR2(32) NOT NULL, + "USER_ID" VARCHAR2(256) NOT NULL, + "ROLE_ID" VARCHAR2(256) NOT NULL +); +COMMENT ON TABLE "S_USER_ROLE" IS '用户角色关联表'; +COMMENT ON COLUMN "S_USER_ROLE"."U_ID" IS 'UID'; +COMMENT ON COLUMN "S_USER_ROLE"."USER_ID" IS '用户ID'; +COMMENT ON COLUMN "S_USER_ROLE"."ROLE_ID" IS '角色ID'; +CREATE TABLE "S_HISTORY" +( + "U_ID" VARCHAR2(32) NOT NULL, + "TYPE" VARCHAR2(64) NOT NULL, + "DESCRIBE" VARCHAR2(512), + "PRIMARY_KEY_NAME" VARCHAR2(32), + "PRIMARY_KEY_VALUE" VARCHAR2(64), + "CHANGE_BEFORE" CLOB, + "CHANGE_AFTER" CLOB, + "CREATE_DATE" DATETIME NOT NULL, + "CREATOR_ID" VARCHAR2(32) +); + +CREATE TABLE "S_QUERY_PLAN" ( + "U_ID" VARCHAR2(32) NOT NULL, + "NAME" VARCHAR2(256) NOT NULL, + "TYPE" VARCHAR2(256) NOT NULL, + "CONFIG" CLOB, + "SHARING" NUMBER(4), + "CREATOR_ID" VARCHAR2(32) NOT NULL, + "CREATE_DATE" DATETIME NOT NULL +); +COMMENT ON TABLE "S_QUERY_PLAN" IS '查询方案表'; +COMMENT ON COLUMN "S_QUERY_PLAN"."U_ID" IS '主键'; +COMMENT ON COLUMN "S_QUERY_PLAN"."NAME" IS '方案名称'; +COMMENT ON COLUMN "S_QUERY_PLAN"."TYPE" IS '方案分类'; +COMMENT ON COLUMN "S_QUERY_PLAN"."CONFIG" IS '方案配置'; +COMMENT ON COLUMN "S_QUERY_PLAN"."SHARING" IS '是否共享方案'; +COMMENT ON COLUMN "S_QUERY_PLAN"."CREATOR_ID" IS '创建人ID'; +COMMENT ON COLUMN "S_QUERY_PLAN"."CREATE_DATE" IS '创建日期'; + +CREATE TABLE S_DATA_SOURCE +( + U_ID VARCHAR(32) PRIMARY KEY NOT NULL, + NAME VARCHAR(64) NOT NULL, + DRIVER VARCHAR(128) NOT NULL, + URL VARCHAR(512) NOT NULL, + USERNAME VARCHAR(128) NOT NULL, + PASSWORD VARCHAR(128) NOT NULL, + ENABLED DECIMAL(4) NOT NULL, + CREATE_DATE DATE NOT NULL, + PROPERTIES CLOB, + COMMENT VARCHAR(512), + TEST_SQL VARCHAR(512) +); +COMMENT ON COLUMN S_DATA_SOURCE.U_ID IS 'ID'; +COMMENT ON COLUMN S_DATA_SOURCE.NAME IS '数据源名称'; +COMMENT ON COLUMN S_DATA_SOURCE.DRIVER IS '驱动'; +COMMENT ON COLUMN S_DATA_SOURCE.URL IS 'URL'; +COMMENT ON COLUMN S_DATA_SOURCE.USERNAME IS '用户名'; +COMMENT ON COLUMN S_DATA_SOURCE.PASSWORD IS '密码'; +COMMENT ON COLUMN S_DATA_SOURCE.ENABLED IS '是否启用'; +COMMENT ON COLUMN S_DATA_SOURCE.CREATE_DATE IS '创建日期'; +COMMENT ON COLUMN S_DATA_SOURCE.PROPERTIES IS '其他配置'; +COMMENT ON COLUMN S_DATA_SOURCE.COMMENT IS '备注'; +COMMENT ON COLUMN S_DATA_SOURCE.TEST_SQL IS '测试链接时使用的sql'; + +ALTER TABLE "S_QUERY_PLAN" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE "S_USER_PROFILE" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE "S_CLASSIFIED" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE "S_CONFIG" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE "S_MODULES" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE "S_MODULE_META" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE "S_RESOURCES" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE "S_ROLE" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE "S_ROLE_MODULES" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE "S_SCRIPT" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE "S_USER" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE "S_USER_ROLE" + ADD PRIMARY KEY ("U_ID"); + +--定时任务 +CREATE TABLE S_QUARTZ_JOB_HIS ( + u_id VARCHAR(32) NOT NULL PRIMARY KEY, + job_id VARCHAR(32) NOT NULL, + start_time DATETIME NOT NULL, + end_time DATETIME, + result CLOB, + status NUMBER(4) +); +COMMENT ON COLUMN S_QUARTZ_JOB_HIS.u_id IS '主键'; +COMMENT ON COLUMN S_QUARTZ_JOB_HIS.job_id IS '任务ID'; +COMMENT ON COLUMN S_QUARTZ_JOB_HIS.start_time IS '开始时间'; +COMMENT ON COLUMN S_QUARTZ_JOB_HIS.end_time IS '结束时间'; +COMMENT ON COLUMN S_QUARTZ_JOB_HIS.result IS '执行结果'; +COMMENT ON COLUMN S_QUARTZ_JOB_HIS.status IS '状态'; + + +CREATE TABLE S_QUARTZ_JOB ( + u_id VARCHAR(32) NOT NULL PRIMARY KEY, + name VARCHAR(128) NOT NULL, + remark VARCHAR(512), + cron VARCHAR(512) NOT NULL, + script CLOB NOT NULL, + language VARCHAR(32) NOT NULL, + enabled NUMBER(4), + parameters CLOB, + type NUMBER(4) +); +COMMENT ON COLUMN S_QUARTZ_JOB.u_id IS '主键'; +COMMENT ON COLUMN S_QUARTZ_JOB.name IS '任务名称'; +COMMENT ON COLUMN S_QUARTZ_JOB.remark IS '备注'; +COMMENT ON COLUMN S_QUARTZ_JOB.cron IS 'cron表达式'; +COMMENT ON COLUMN S_QUARTZ_JOB.script IS '执行脚本'; +COMMENT ON COLUMN S_QUARTZ_JOB.language IS '脚本语言'; +COMMENT ON COLUMN S_QUARTZ_JOB.enabled IS '是否启用'; +COMMENT ON COLUMN S_QUARTZ_JOB.parameters IS '启动参数'; +COMMENT ON COLUMN S_QUARTZ_JOB.type IS '任务类型'; + + +CREATE TABLE QRTZ_CALENDARS ( + SCHED_NAME VARCHAR(120) NOT NULL, + CALENDAR_NAME VARCHAR(200) NOT NULL, + CALENDAR IMAGE NOT NULL +); + +CREATE TABLE QRTZ_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) +); + +CREATE TABLE QRTZ_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 NOT NULL, + SCHED_TIME BIGINT NOT NULL, + PRIORITY INTEGER NOT NULL, + STATE VARCHAR(16) NOT NULL, + JOB_NAME VARCHAR(200) NULL, + JOB_GROUP VARCHAR(200) NULL, + IS_NONCONCURRENT BOOLEAN NULL, + REQUESTS_RECOVERY BOOLEAN NULL +); + +CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL +); + +CREATE TABLE QRTZ_SCHEDULER_STATE ( + SCHED_NAME VARCHAR(120) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + LAST_CHECKIN_TIME BIGINT NOT NULL, + CHECKIN_INTERVAL BIGINT NOT NULL +); + +CREATE TABLE QRTZ_LOCKS ( + SCHED_NAME VARCHAR(120) NOT NULL, + LOCK_NAME VARCHAR(40) NOT NULL +); + +CREATE TABLE QRTZ_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 BOOLEAN NOT NULL, + IS_NONCONCURRENT BOOLEAN NOT NULL, + IS_UPDATE_DATA BOOLEAN NOT NULL, + REQUESTS_RECOVERY BOOLEAN NOT NULL, + JOB_DATA IMAGE NULL +); + +CREATE TABLE QRTZ_SIMPLE_TRIGGERS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + REPEAT_COUNT BIGINT NOT NULL, + REPEAT_INTERVAL BIGINT NOT NULL, + TIMES_TRIGGERED BIGINT NOT NULL +); + +CREATE TABLE qrtz_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 QRTZ_BLOB_TRIGGERS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + BLOB_DATA IMAGE NULL +); + +CREATE TABLE QRTZ_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 NULL, + PREV_FIRE_TIME BIGINT NULL, + PRIORITY INTEGER NULL, + TRIGGER_STATE VARCHAR(16) NOT NULL, + TRIGGER_TYPE VARCHAR(8) NOT NULL, + START_TIME BIGINT NOT NULL, + END_TIME BIGINT NULL, + CALENDAR_NAME VARCHAR(200) NULL, + MISFIRE_INSTR SMALLINT NULL, + JOB_DATA IMAGE NULL +); + +ALTER TABLE QRTZ_CALENDARS + ADD + CONSTRAINT PK_QRTZ_CALENDARS PRIMARY KEY + ( + SCHED_NAME, + CALENDAR_NAME + ); + +ALTER TABLE QRTZ_CRON_TRIGGERS + ADD + CONSTRAINT PK_QRTZ_CRON_TRIGGERS PRIMARY KEY + ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ); + +ALTER TABLE QRTZ_FIRED_TRIGGERS + ADD + CONSTRAINT PK_QRTZ_FIRED_TRIGGERS PRIMARY KEY + ( + SCHED_NAME, + ENTRY_ID + ); + +ALTER TABLE QRTZ_PAUSED_TRIGGER_GRPS + ADD + CONSTRAINT PK_QRTZ_PAUSED_TRIGGER_GRPS PRIMARY KEY + ( + SCHED_NAME, + TRIGGER_GROUP + ); + +ALTER TABLE QRTZ_SCHEDULER_STATE + ADD + CONSTRAINT PK_QRTZ_SCHEDULER_STATE PRIMARY KEY + ( + SCHED_NAME, + INSTANCE_NAME + ); + +ALTER TABLE QRTZ_LOCKS + ADD + CONSTRAINT PK_QRTZ_LOCKS PRIMARY KEY + ( + SCHED_NAME, + LOCK_NAME + ); + +ALTER TABLE QRTZ_JOB_DETAILS + ADD + CONSTRAINT PK_QRTZ_JOB_DETAILS PRIMARY KEY + ( + SCHED_NAME, + JOB_NAME, + JOB_GROUP + ); + +ALTER TABLE QRTZ_SIMPLE_TRIGGERS + ADD + CONSTRAINT PK_QRTZ_SIMPLE_TRIGGERS PRIMARY KEY + ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ); + +ALTER TABLE QRTZ_SIMPROP_TRIGGERS + ADD + CONSTRAINT PK_QRTZ_SIMPROP_TRIGGERS PRIMARY KEY + ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ); + +ALTER TABLE QRTZ_TRIGGERS + ADD + CONSTRAINT PK_QRTZ_TRIGGERS PRIMARY KEY + ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ); + +ALTER TABLE QRTZ_CRON_TRIGGERS + ADD + CONSTRAINT FK_QRTZ_CRON_TRIGGERS_QRTZ_TRIGGERS FOREIGN KEY + ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ) REFERENCES QRTZ_TRIGGERS ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ) ON DELETE CASCADE; + + +ALTER TABLE QRTZ_SIMPLE_TRIGGERS + ADD + CONSTRAINT FK_QRTZ_SIMPLE_TRIGGERS_QRTZ_TRIGGERS FOREIGN KEY + ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ) REFERENCES QRTZ_TRIGGERS ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ) ON DELETE CASCADE; + +ALTER TABLE QRTZ_SIMPROP_TRIGGERS + ADD + CONSTRAINT FK_QRTZ_SIMPROP_TRIGGERS_QRTZ_TRIGGERS FOREIGN KEY + ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ) REFERENCES QRTZ_TRIGGERS ( + SCHED_NAME, + TRIGGER_NAME, + TRIGGER_GROUP + ) ON DELETE CASCADE; + + +ALTER TABLE QRTZ_TRIGGERS + ADD + CONSTRAINT FK_QRTZ_TRIGGERS_QRTZ_JOB_DETAILS FOREIGN KEY + ( + SCHED_NAME, + JOB_NAME, + JOB_GROUP + ) REFERENCES QRTZ_JOB_DETAILS ( + SCHED_NAME, + JOB_NAME, + JOB_GROUP + ); \ No newline at end of file diff --git a/hsweb-web-starter/src/main/resources/org.hsweb.start.scripts/install/sql/mysql/install.sql b/hsweb-web-starter/src/main/resources/org.hsweb.start.scripts/install/sql/mysql/install.sql new file mode 100644 index 000000000..abc1d5389 --- /dev/null +++ b/hsweb-web-starter/src/main/resources/org.hsweb.start.scripts/install/sql/mysql/install.sql @@ -0,0 +1,459 @@ +CREATE TABLE `s_user_profile` ( + `u_id` VARCHAR(32) NOT NULL PRIMARY KEY + COMMENT 'UID', + `content` TEXT NOT NULL + COMMENT '配置内容', + `type` VARCHAR(512) + COMMENT '类型', + `user_id` VARCHAR(32) + COMMENT '用户ID' +); + +CREATE TABLE `s_config` ( + `u_id` VARCHAR(32) NOT NULL PRIMARY KEY + COMMENT 'UID', + `content` TEXT NOT NULL + COMMENT '配置内容', + `remark` VARCHAR(512) + COMMENT '备注', + `classified_id` VARCHAR(32) + COMMENT '分类ID', + `create_date` DATETIME NOT NULL + COMMENT '创建日期', + `update_date` DATETIME + COMMENT '修改日期' +); +ALTER TABLE `s_config` + COMMENT '系统配置文件表'; +CREATE TABLE `s_form` ( + `u_id` VARCHAR(32) NOT NULL PRIMARY KEY + COMMENT 'uid', + `classified_id` VARCHAR(32) COMMENT '分类ID', + `name` VARCHAR(256) NOT NULL + COMMENT '名称', + `html` TEXT COMMENT 'html内容', + `meta` TEXT COMMENT '结构定义', + `config` TEXT COMMENT '配置', + `version` INT COMMENT '版本', + `revision` INT COMMENT '修订版', + `release` INT COMMENT '发布版', + `using` TINYINT COMMENT '是否使用中', + `create_date` DATETIME NOT NULL + COMMENT '创建日期', + `update_date` DATETIME COMMENT '修改日期', + `remark` VARCHAR(200) +); +ALTER TABLE `s_form` + COMMENT '动态表单'; +CREATE TABLE `s_template` ( + `u_id` VARCHAR(32) NOT NULL PRIMARY KEY + COMMENT 'uid', + `name` VARCHAR(256) NOT NULL + COMMENT '名称', + `template` TEXT COMMENT '模板内容', + `classified_id` VARCHAR(32) COMMENT '分类', + `type` VARCHAR(64) COMMENT '类型', + `script` TEXT COMMENT '脚本', + `script_links` TEXT COMMENT '外部脚本', + `css` TEXT COMMENT '样式', + `css_links` TEXT COMMENT '外部样式', + `version` INT COMMENT '版本', + `revision` INT COMMENT '修订版', + `release` INT COMMENT '发布版', + `using` TINYINT COMMENT '是否使用中', + `remark` VARCHAR(200) +); +ALTER TABLE `s_template` + COMMENT '模板'; +CREATE TABLE `s_modules` ( + `u_id` VARCHAR(32) NOT NULL PRIMARY KEY + COMMENT 'uid', + `name` VARCHAR(256) NOT NULL + COMMENT '模块名称', + `uri` VARCHAR(1024) NULL + COMMENT 'uri', + `icon` VARCHAR(256) NULL + COMMENT '图标', + `parent_id` VARCHAR(256) NOT NULL + COMMENT '上级菜单', + `remark` VARCHAR(512) NULL + COMMENT '备注', + `status` INT(4) NULL + COMMENT '状态', + `optional` TEXT NOT NULL + COMMENT '可选权限', + `sort_index` INT(32) NOT NULL + COMMENT '排序' +); +ALTER TABLE `s_modules` + COMMENT '系统模块'; +CREATE TABLE `s_module_meta` ( + `u_id` VARCHAR(32) NOT NULL PRIMARY KEY + COMMENT 'uid', + `key` VARCHAR(256) NOT NULL + COMMENT '标识', + `module_id` VARCHAR(1024) NOT NULL + COMMENT '模块ID', + `remark` VARCHAR(1024) NULL + COMMENT '备注', + `role_id` VARCHAR(256) NULL + COMMENT '图标', + `status` INT(4) NULL + COMMENT '状态', + `meta` TEXT NULL + COMMENT '定义内容' +); +ALTER TABLE `s_modules` + COMMENT '系统模块配置'; +CREATE TABLE `s_resources` ( + `u_id` VARCHAR(32) NOT NULL PRIMARY KEY + COMMENT 'uid', + `name` VARCHAR(256) NOT NULL + COMMENT '资源名称', + `path` VARCHAR(1024) NOT NULL + COMMENT '路径', + `type` VARCHAR(256) NOT NULL + COMMENT '类型', + `md5` VARCHAR(256) NOT NULL + COMMENT 'md5校验值', + `status` INT(4) NULL + COMMENT '状态', + `size` LONG NULL + COMMENT '资源大小', + `create_date` DATETIME NOT NULL + COMMENT '创建时间', + `creator_id` VARCHAR(256) NOT NULL + COMMENT '创建人' +); +ALTER TABLE `s_resources` + COMMENT '资源表'; +CREATE TABLE `s_classified` ( + `u_id` VARCHAR(32) NOT NULL PRIMARY KEY + COMMENT 'uid', + `name` VARCHAR(256) NOT NULL + COMMENT '名称', + `remark` VARCHAR(1024) NULL + COMMENT '备注', + `type` VARCHAR(256) NULL + COMMENT '类型', + `parent_id` VARCHAR(32) NOT NULL + COMMENT '父级分类', + `icon` VARCHAR(256) NULL + COMMENT '图标', + `config` TEXT NULL + COMMENT '配置', + `sort_index` INT NULL + COMMENT '排序' +); +ALTER TABLE `s_classified` + COMMENT '分类表'; +CREATE TABLE `s_role` ( + `u_id` VARCHAR(32) NOT NULL PRIMARY KEY + COMMENT 'uid', + `name` VARCHAR(256) NOT NULL + COMMENT '角色名称', + `type` VARCHAR(50) NULL + COMMENT '类型', + `remark` VARCHAR(512) NULL + COMMENT '备注' +); +ALTER TABLE `s_role` + COMMENT '角色表'; +CREATE TABLE `s_role_modules` ( + `u_id` VARCHAR(32) NOT NULL PRIMARY KEY + COMMENT 'uid', + `module_id` VARCHAR(256) NOT NULL + COMMENT '模块id', + `role_id` VARCHAR(256) NOT NULL + COMMENT '角色id', + `actions` TEXT NULL + COMMENT '可操作权限' +); +ALTER TABLE `s_role_modules` + COMMENT '角色模块绑定表'; +CREATE TABLE `s_script` ( + `u_id` VARCHAR(32) NOT NULL PRIMARY KEY + COMMENT 'uid', + `name` VARCHAR(256) NOT NULL + COMMENT '脚本名称', + `classified_id` VARCHAR(1024) NOT NULL + COMMENT '路径', + `type` VARCHAR(256) NOT NULL + COMMENT '类型', + `content` TEXT NOT NULL + COMMENT '内容', + `remark` VARCHAR(512) NULL + COMMENT '备注', + `status` INT(4) NULL + COMMENT '状态' +); +ALTER TABLE `s_script` + COMMENT '脚本'; +CREATE TABLE `s_user` ( + `u_id` VARCHAR(32) NOT NULL PRIMARY KEY + COMMENT 'ID', + `username` VARCHAR(64) NOT NULL + COMMENT '用户名', + `password` VARCHAR(64) NOT NULL + COMMENT '密码', + `name` VARCHAR(64) NULL + COMMENT '姓名', + `email` VARCHAR(512) NULL + COMMENT '邮箱', + `phone` VARCHAR(64) NULL + COMMENT '联系电话', + `status` INT(4) NULL + COMMENT '状态', + `create_date` DATETIME NOT NULL + COMMENT '创建日期', + `update_date` DATETIME NULL + COMMENT '修改日期' +); +ALTER TABLE `s_user` + COMMENT '用户表'; +CREATE TABLE `s_user_role` ( + `u_id` VARCHAR(32) NOT NULL PRIMARY KEY + COMMENT 'UID', + `user_id` VARCHAR(256) NOT NULL + COMMENT '用户ID', + `role_id` VARCHAR(256) NOT NULL + COMMENT '角色ID' +); +ALTER TABLE `s_user_role` + COMMENT '用户角色关联表'; +CREATE TABLE s_history +( + `u_id` VARCHAR(32) NOT NULL PRIMARY KEY + COMMENT 'UID', + `type` VARCHAR(64) NOT NULL + COMMENT '类型', + `describe` VARCHAR(512) COMMENT '描述', + `primary_key_name` VARCHAR(32) COMMENT '主键名称', + `primary_key_value` VARCHAR(64) COMMENT '主键值', + `change_before` TEXT COMMENT '修改前的值', + `change_after` TEXT COMMENT '修改后的值', + `create_date` DATETIME NOT NULL + COMMENT '创建日期', + `creator_id` VARCHAR(32) COMMENT '创建人' +); +ALTER TABLE `s_history` + COMMENT '操作记录表'; + +CREATE TABLE s_query_plan +( + `u_id` VARCHAR(32) NOT NULL PRIMARY KEY + COMMENT 'UID', + `name` VARCHAR(256) NOT NULL + COMMENT '名称', + `type` VARCHAR(256) NOT NULL + COMMENT '类型', + `CONFIG` TEXT COMMENT '方案配置内容', + `SHARING` TINYINT COMMENT '是否共享', + `CREATOR_ID` VARCHAR(32) NOT NULL + COMMENT '创建人ID', + `CREATE_DATE` DATETIME NOT NULL + COMMENT '创建日期' +); +ALTER TABLE `s_query_plan` + COMMENT '查询方案'; + +CREATE TABLE s_data_source +( + u_id VARCHAR(32) PRIMARY KEY NOT NULL + COMMENT 'ID', + name VARCHAR(64) NOT NULL + COMMENT '名称', + driver VARCHAR(128) NOT NULL + COMMENT 'driver', + url VARCHAR(512) NOT NULL + COMMENT 'url', + username VARCHAR(128) NOT NULL + COMMENT '用户名', + password VARCHAR(128) NOT NULL + COMMENT '密码', + enabled TINYINT NOT NULL + COMMENT '是否启用', + create_date DATETIME NOT NULL + COMMENT '创建日期', + properties TEXT COMMENT '其他配置', + comment VARCHAR(512) COMMENT '备注', + test_sql VARCHAR(512) COMMENT '测试sql' +); +ALTER TABLE s_data_source + COMMENT '数据源'; + + +CREATE TABLE S_QUARTZ_JOB_HIS ( + u_id VARCHAR(32) NOT NULL PRIMARY KEY + COMMENT '主键', + job_id VARCHAR(32) NOT NULL + COMMENT '任务ID', + start_time DATETIME NOT NULL + COMMENT '开始时间', + end_time DATETIME COMMENT '结束时间', + result TEXT COMMENT '执行结果', + status TINYINT COMMENT '状态' +); + +CREATE TABLE S_QUARTZ_JOB ( + u_id VARCHAR(32) NOT NULL PRIMARY KEY + COMMENT '主键', + name VARCHAR(128) NOT NULL + COMMENT '主键', + remark VARCHAR(512) COMMENT '主键', + cron VARCHAR(512) NOT NULL + COMMENT '主键', + script TEXT NOT NULL + COMMENT '主键', + language VARCHAR(32) NOT NULL + COMMENT '主键', + enabled TINYINT COMMENT '主键', + parameters TEXT COMMENT '主键', + type TINYINT +); + + +CREATE TABLE QRTZ_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) +); + +CREATE TABLE QRTZ_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 QRTZ_JOB_DETAILS (SCHED_NAME, JOB_NAME, JOB_GROUP) +); + +CREATE TABLE QRTZ_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 QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_CRON_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + CRON_EXPRESSION VARCHAR(200) NOT NULL, + TIME_ZONE_ID VARCHAR(80), + PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_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, + PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_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), + FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_CALENDARS +( + SCHED_NAME VARCHAR(120) NOT NULL, + CALENDAR_NAME VARCHAR(200) NOT NULL, + CALENDAR BLOB NOT NULL, + PRIMARY KEY (SCHED_NAME, CALENDAR_NAME) +); + +CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + PRIMARY KEY (SCHED_NAME, TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_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) +); + +CREATE TABLE QRTZ_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) +); + +CREATE TABLE QRTZ_LOCKS +( + SCHED_NAME VARCHAR(120) NOT NULL, + LOCK_NAME VARCHAR(40) NOT NULL, + PRIMARY KEY (SCHED_NAME, LOCK_NAME) +); + diff --git a/hsweb-web-starter/src/main/resources/org.hsweb.start.scripts/install/sql/oracle/install.sql b/hsweb-web-starter/src/main/resources/org.hsweb.start.scripts/install/sql/oracle/install.sql new file mode 100644 index 000000000..7c5b8f905 --- /dev/null +++ b/hsweb-web-starter/src/main/resources/org.hsweb.start.scripts/install/sql/oracle/install.sql @@ -0,0 +1,531 @@ +CREATE TABLE ${jdbc.username}."S_USER_PROFILE" ( + "U_ID" VARCHAR2(32) NOT NULL, + "CONTENT" CLOB NOT NULL, + "TYPE" VARCHAR2(512) NULL, + "USER_ID" VARCHAR2(32) NULL +); +COMMENT ON TABLE ${jdbc.username}."S_USER_PROFILE" IS '用户配置表'; +COMMENT ON COLUMN ${jdbc.username}."S_USER_PROFILE"."U_ID" IS 'UID'; +COMMENT ON COLUMN ${jdbc.username}."S_USER_PROFILE"."CONTENT" IS '配置内容'; +COMMENT ON COLUMN ${jdbc.username}."S_USER_PROFILE"."TYPE" IS '类型'; +COMMENT ON COLUMN ${jdbc.username}."S_USER_PROFILE"."USER_ID" IS '用户ID'; + +CREATE TABLE ${jdbc.username}."S_CONFIG" ( + "U_ID" VARCHAR2(32) NOT NULL, + "CONTENT" CLOB NOT NULL, + "REMARK" VARCHAR2(512) NULL, + "CLASSIFIED_ID" VARCHAR2(32) NULL, + "CREATE_DATE" DATE NOT NULL, + "UPDATE_DATE" DATE NULL +); +COMMENT ON TABLE ${jdbc.username}."S_CONFIG" IS '系统配置文件表'; +COMMENT ON COLUMN ${jdbc.username}."S_CONFIG"."U_ID" IS 'UID'; +COMMENT ON COLUMN ${jdbc.username}."S_CONFIG"."CONTENT" IS '配置内容'; +COMMENT ON COLUMN ${jdbc.username}."S_CONFIG"."REMARK" IS '备注'; +COMMENT ON COLUMN ${jdbc.username}."S_CONFIG"."CLASSIFIED_ID" IS '分类ID'; +COMMENT ON COLUMN ${jdbc.username}."S_CONFIG"."CREATE_DATE" IS '创建日期'; +COMMENT ON COLUMN ${jdbc.username}."S_CONFIG"."UPDATE_DATE" IS '修改日期'; +CREATE TABLE ${jdbc.username}."S_FORM" ( + "U_ID" VARCHAR2(32) NOT NULL, + "CLASSIFIED_ID" VARCHAR2(32), + "NAME" VARCHAR2(256) NOT NULL, + "HTML" CLOB NULL, + "META" CLOB NULL, + "CONFIG" CLOB NULL, + "VERSION" NUMBER(32) NULL, + "REVISION" NUMBER(32) NULL, + "RELEASE" NUMBER(32) NULL, + "USING" NUMBER(4) NULL, + "CREATE_DATE" DATE NOT NULL, + "UPDATE_DATE" DATE NULL, + "REMARK" VARCHAR2(200) NULL +); +COMMENT ON TABLE ${jdbc.username}."S_FORM" IS '动态表单'; +COMMENT ON COLUMN ${jdbc.username}."S_FORM"."U_ID" IS 'UID'; +COMMENT ON COLUMN ${jdbc.username}."S_FORM"."CLASSIFIED_ID" IS '分类ID'; +COMMENT ON COLUMN ${jdbc.username}."S_FORM"."NAME" IS '名称'; +COMMENT ON COLUMN ${jdbc.username}."S_FORM"."HTML" IS 'HTML内容'; +COMMENT ON COLUMN ${jdbc.username}."S_FORM"."META" IS '结构定义'; +COMMENT ON COLUMN ${jdbc.username}."S_FORM"."CONFIG" IS '配置'; +COMMENT ON COLUMN ${jdbc.username}."S_FORM"."VERSION" IS '版本'; +COMMENT ON COLUMN ${jdbc.username}."S_FORM"."REVISION" IS '修订版'; +COMMENT ON COLUMN ${jdbc.username}."S_FORM"."RELEASE" IS '当前发布版本'; +COMMENT ON COLUMN ${jdbc.username}."S_FORM"."USING" IS '是否使用中'; +COMMENT ON COLUMN ${jdbc.username}."S_FORM"."CREATE_DATE" IS '创建日期'; +COMMENT ON COLUMN ${jdbc.username}."S_FORM"."UPDATE_DATE" IS '修改日期'; +CREATE TABLE ${jdbc.username}."S_TEMPLATE" ( + "U_ID" VARCHAR2(32) NOT NULL, + "NAME" VARCHAR2(256) NOT NULL, + "TEMPLATE" CLOB NULL, + "CLASSIFIED_ID" VARCHAR2(32) NULL, + "TYPE" VARCHAR2(64) NULL, + "SCRIPT" CLOB NULL, + "CSS" CLOB NULL, + "CSS_LINKS" CLOB NULL, + "SCRIPT_LINKS" CLOB NULL, + "VERSION" NUMBER(32) NULL, + "REVISION" NUMBER(32) NULL, + "RELEASE" NUMBER(32) NULL, + "USING" NUMBER(4) NULL, + "REMARK" VARCHAR2(200) NULL +); +COMMENT ON TABLE ${jdbc.username}."S_TEMPLATE" IS '模板'; +COMMENT ON COLUMN ${jdbc.username}."S_TEMPLATE"."U_ID" IS 'UID'; +COMMENT ON COLUMN ${jdbc.username}."S_TEMPLATE"."NAME" IS '名称'; +COMMENT ON COLUMN ${jdbc.username}."S_TEMPLATE"."TEMPLATE" IS '模板'; +COMMENT ON COLUMN ${jdbc.username}."S_TEMPLATE"."CLASSIFIED_ID" IS '分类'; +COMMENT ON COLUMN ${jdbc.username}."S_TEMPLATE"."TYPE" IS '类型'; +COMMENT ON COLUMN ${jdbc.username}."S_TEMPLATE"."SCRIPT" IS '脚本'; +COMMENT ON COLUMN ${jdbc.username}."S_TEMPLATE"."CSS" IS '样式'; +COMMENT ON COLUMN ${jdbc.username}."S_TEMPLATE"."CSS_LINKS" IS '样式链接'; +COMMENT ON COLUMN ${jdbc.username}."S_TEMPLATE"."SCRIPT_LINKS" IS '脚本链接'; +COMMENT ON COLUMN ${jdbc.username}."S_TEMPLATE"."VERSION" IS '版本'; +COMMENT ON COLUMN ${jdbc.username}."S_TEMPLATE"."REVISION" IS '修订版'; +COMMENT ON COLUMN ${jdbc.username}."S_TEMPLATE"."RELEASE" IS '当前发布版本'; +COMMENT ON COLUMN ${jdbc.username}."S_TEMPLATE"."USING" IS '是否使用中'; +CREATE TABLE ${jdbc.username}."S_MODULES" ( + "U_ID" VARCHAR2(32) NOT NULL, + "NAME" VARCHAR2(256) NOT NULL, + "URI" VARCHAR2(1024) NULL, + "ICON" VARCHAR2(256) NULL, + "PARENT_ID" VARCHAR2(256) NOT NULL, + "REMARK" VARCHAR2(512) NULL, + "STATUS" NUMBER(4) NULL, + "OPTIONAL" CLOB NOT NULL, + "SORT_INDEX" NUMBER(32) NOT NULL +); +COMMENT ON TABLE ${jdbc.username}."S_MODULES" IS '系统模块'; +COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."U_ID" IS 'UID'; +COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."NAME" IS '模块名称'; +COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."URI" IS 'URI'; +COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."ICON" IS '图标'; +COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."PARENT_ID" IS '上级菜单'; +COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."REMARK" IS '备注'; +COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."STATUS" IS '状态'; +COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."OPTIONAL" IS '可选权限'; +COMMENT ON COLUMN ${jdbc.username}."S_MODULES"."SORT_INDEX" IS '排序'; +CREATE TABLE ${jdbc.username}."S_CLASSIFIED" ( + "U_ID" VARCHAR2(32) NOT NULL, + "NAME" VARCHAR2(256) NOT NULL, + "REMARK" VARCHAR2(1024) NULL, + "TYPE" VARCHAR2(256) NULL, + "PARENT_ID" VARCHAR2(32) NOT NULL, + "ICON" VARCHAR2(256) NULL, + "CONFIG" CLOB NULL, + "SORT_INDEX" NUMBER(32) NULL +); +COMMENT ON TABLE ${jdbc.username}."S_CLASSIFIED" IS '数据分类表'; +COMMENT ON COLUMN ${jdbc.username}."S_CLASSIFIED"."U_ID" IS 'UID'; +COMMENT ON COLUMN ${jdbc.username}."S_CLASSIFIED"."NAME" IS '分类名称'; +COMMENT ON COLUMN ${jdbc.username}."S_CLASSIFIED"."REMARK" IS '备注'; +COMMENT ON COLUMN ${jdbc.username}."S_CLASSIFIED"."TYPE" IS '类型'; +COMMENT ON COLUMN ${jdbc.username}."S_CLASSIFIED"."PARENT_ID" IS '父级分类'; +COMMENT ON COLUMN ${jdbc.username}."S_CLASSIFIED"."ICON" IS '图标'; +COMMENT ON COLUMN ${jdbc.username}."S_CLASSIFIED"."CONFIG" IS '分类配置'; +COMMENT ON COLUMN ${jdbc.username}."S_CLASSIFIED"."SORT_INDEX" IS '排序'; +CREATE TABLE ${jdbc.username}."S_MODULE_META" ( + "U_ID" VARCHAR2(32) NOT NULL, + "KEY" VARCHAR2(256) NOT NULL, + "MODULE_ID" VARCHAR2(32) NOT NULL, + "ROLE_ID" VARCHAR2(32) NULL, + "REMARK" VARCHAR2(1024) NULL, + "META" CLOB NULL, + "STATUS" NUMBER(4) NULL +); +COMMENT ON TABLE ${jdbc.username}."S_MODULE_META" IS '系统模块配置'; +COMMENT ON COLUMN ${jdbc.username}."S_MODULE_META"."U_ID" IS 'UID'; +COMMENT ON COLUMN ${jdbc.username}."S_MODULE_META"."KEY" IS '名称'; +COMMENT ON COLUMN ${jdbc.username}."S_MODULE_META"."MODULE_ID" IS '模块ID'; +COMMENT ON COLUMN ${jdbc.username}."S_MODULE_META"."ROLE_ID" IS '角色ID'; +COMMENT ON COLUMN ${jdbc.username}."S_MODULE_META"."META" IS '定义内容'; +COMMENT ON COLUMN ${jdbc.username}."S_MODULE_META"."REMARK" IS '备注'; +COMMENT ON COLUMN ${jdbc.username}."S_MODULE_META"."STATUS" IS '状态'; +CREATE TABLE ${jdbc.username}."S_RESOURCES" ( + "U_ID" VARCHAR2(32) NOT NULL, + "NAME" VARCHAR2(256) NOT NULL, + "PATH" VARCHAR2(1024) NOT NULL, + "TYPE" VARCHAR2(256) NOT NULL, + "CLASSIFIED" VARCHAR2(32) NULL, + "MD5" VARCHAR2(256) NOT NULL, + "SIZE" NUMBER(32) NULL, + "STATUS" NUMBER(4) NULL, + "CREATE_DATE" DATE NOT NULL, + "CREATOR_ID" VARCHAR2(256) NOT NULL +); +COMMENT ON TABLE ${jdbc.username}."S_RESOURCES" IS '资源表'; +COMMENT ON COLUMN ${jdbc.username}."S_RESOURCES"."U_ID" IS 'UID'; +COMMENT ON COLUMN ${jdbc.username}."S_RESOURCES"."NAME" IS '资源名称'; +COMMENT ON COLUMN ${jdbc.username}."S_RESOURCES"."PATH" IS '路径'; +COMMENT ON COLUMN ${jdbc.username}."S_RESOURCES"."TYPE" IS '类型'; +COMMENT ON COLUMN ${jdbc.username}."S_RESOURCES"."CLASSIFIED" IS '分类'; +COMMENT ON COLUMN ${jdbc.username}."S_RESOURCES"."MD5" IS 'MD5校验值'; +COMMENT ON COLUMN ${jdbc.username}."S_RESOURCES"."SIZE" IS '资源大小'; +COMMENT ON COLUMN ${jdbc.username}."S_RESOURCES"."STATUS" IS '状态'; +COMMENT ON COLUMN ${jdbc.username}."S_RESOURCES"."CREATE_DATE" IS '创建时间'; +COMMENT ON COLUMN ${jdbc.username}."S_RESOURCES"."CREATOR_ID" IS '创建人'; +CREATE TABLE ${jdbc.username}."S_ROLE" ( + "U_ID" VARCHAR2(32) NOT NULL, + "NAME" VARCHAR2(256) NOT NULL, + "TYPE" VARCHAR2(50) NULL, + "REMARK" VARCHAR2(512) NULL +); +COMMENT ON TABLE ${jdbc.username}."S_ROLE" IS '角色表'; +COMMENT ON COLUMN ${jdbc.username}."S_ROLE"."U_ID" IS 'UID'; +COMMENT ON COLUMN ${jdbc.username}."S_ROLE"."NAME" IS '角色名称'; +COMMENT ON COLUMN ${jdbc.username}."S_ROLE"."TYPE" IS '类型'; +COMMENT ON COLUMN ${jdbc.username}."S_ROLE"."REMARK" IS '备注'; +CREATE TABLE ${jdbc.username}."S_ROLE_MODULES" ( + "U_ID" VARCHAR2(23) NOT NULL, + "MODULE_ID" VARCHAR2(256) NOT NULL, + "ROLE_ID" VARCHAR2(256) NOT NULL, + "ACTIONS" CLOB NULL +); +COMMENT ON TABLE ${jdbc.username}."S_ROLE_MODULES" IS '角色模块绑定表'; +COMMENT ON COLUMN ${jdbc.username}."S_ROLE_MODULES"."U_ID" IS 'UID'; +COMMENT ON COLUMN ${jdbc.username}."S_ROLE_MODULES"."MODULE_ID" IS '模块ID'; +COMMENT ON COLUMN ${jdbc.username}."S_ROLE_MODULES"."ROLE_ID" IS '角色ID'; +COMMENT ON COLUMN ${jdbc.username}."S_ROLE_MODULES"."ACTIONS" IS '可操作权限'; +CREATE TABLE ${jdbc.username}."S_SCRIPT" ( + "U_ID" VARCHAR2(32) NOT NULL, + "NAME" VARCHAR2(256) NOT NULL, + "CLASSIFIED_ID" VARCHAR2(1024) NOT NULL, + "TYPE" VARCHAR2(256) NOT NULL, + "CONTENT" CLOB NOT NULL, + "REMARK" VARCHAR2(512) NULL, + "STATUS" NUMBER(4) NULL +); +COMMENT ON TABLE ${jdbc.username}."S_SCRIPT" IS '脚本'; +COMMENT ON COLUMN ${jdbc.username}."S_SCRIPT"."U_ID" IS 'UID'; +COMMENT ON COLUMN ${jdbc.username}."S_SCRIPT"."NAME" IS '脚本名称'; +COMMENT ON COLUMN ${jdbc.username}."S_SCRIPT"."CLASSIFIED_ID" IS '路径'; +COMMENT ON COLUMN ${jdbc.username}."S_SCRIPT"."TYPE" IS '类型'; +COMMENT ON COLUMN ${jdbc.username}."S_SCRIPT"."CONTENT" IS '内容'; +COMMENT ON COLUMN ${jdbc.username}."S_SCRIPT"."REMARK" IS '备注'; +COMMENT ON COLUMN ${jdbc.username}."S_SCRIPT"."STATUS" IS '状态'; +CREATE TABLE ${jdbc.username}."S_USER" ( + "U_ID" VARCHAR2(32) NOT NULL, + "USERNAME" VARCHAR2(64) NOT NULL, + "PASSWORD" VARCHAR2(64) NOT NULL, + "NAME" VARCHAR2(64) NULL, + "EMAIL" VARCHAR2(512) NULL, + "PHONE" VARCHAR2(64) NULL, + "STATUS" NUMBER(4) NULL, + "CREATE_DATE" DATE NOT NULL, + "UPDATE_DATE" DATE NULL +); +COMMENT ON TABLE ${jdbc.username}."S_USER" IS '用户表'; +COMMENT ON COLUMN ${jdbc.username}."S_USER"."U_ID" IS 'ID'; +COMMENT ON COLUMN ${jdbc.username}."S_USER"."USERNAME" IS '用户名'; +COMMENT ON COLUMN ${jdbc.username}."S_USER"."PASSWORD" IS '密码'; +COMMENT ON COLUMN ${jdbc.username}."S_USER"."NAME" IS '姓名'; +COMMENT ON COLUMN ${jdbc.username}."S_USER"."EMAIL" IS '邮箱'; +COMMENT ON COLUMN ${jdbc.username}."S_USER"."PHONE" IS '联系电话'; +COMMENT ON COLUMN ${jdbc.username}."S_USER"."STATUS" IS '状态'; +COMMENT ON COLUMN ${jdbc.username}."S_USER"."CREATE_DATE" IS '创建日期'; +COMMENT ON COLUMN ${jdbc.username}."S_USER"."UPDATE_DATE" IS '修改日期'; +CREATE TABLE ${jdbc.username}."S_USER_ROLE" ( + "U_ID" VARCHAR2(32) NOT NULL, + "USER_ID" VARCHAR2(256) NOT NULL, + "ROLE_ID" VARCHAR2(256) NOT NULL +); +CREATE TABLE ${jdbc.username}."S_HISTORY" +( + "U_ID" VARCHAR2(32) NOT NULL, + "TYPE" VARCHAR2(64) NOT NULL, + "DESCRIBE" VARCHAR2(512), + "PRIMARY_KEY_NAME" VARCHAR2(32), + "PRIMARY_KEY_VALUE" VARCHAR2(64), + "CHANGE_BEFORE" CLOB, + "CHANGE_AFTER" CLOB, + "CREATE_DATE" DATE NOT NULL, + "CREATOR_ID" VARCHAR2(32) +); +COMMENT ON TABLE ${jdbc.username}."S_HISTORY" IS '历史记录'; +COMMENT ON COLUMN ${jdbc.username}."S_USER_ROLE"."U_ID" IS 'UID'; +COMMENT ON COLUMN ${jdbc.username}."S_USER_ROLE"."USER_ID" IS '用户ID'; +COMMENT ON COLUMN ${jdbc.username}."S_USER_ROLE"."ROLE_ID" IS '角色ID'; + +CREATE TABLE ${jdbc.username}."S_QUERY_PLAN" ( + "U_ID" VARCHAR2(32) NOT NULL, + "NAME" VARCHAR2(256) NOT NULL, + "TYPE" VARCHAR2(256) NOT NULL, + "CONFIG" CLOB, + "SHARING" NUMBER(4), + "CREATOR_ID" VARCHAR2(32) NOT NULL, + "CREATE_DATE" DATE NOT NULL +); +COMMENT ON TABLE ${jdbc.username}."S_QUERY_PLAN" IS '查询方案表'; +COMMENT ON COLUMN ${jdbc.username}."S_QUERY_PLAN"."U_ID" IS '主键'; +COMMENT ON COLUMN ${jdbc.username}."S_QUERY_PLAN"."NAME" IS '方案名称'; +COMMENT ON COLUMN ${jdbc.username}."S_QUERY_PLAN"."TYPE" IS '方案分类'; +COMMENT ON COLUMN ${jdbc.username}."S_QUERY_PLAN"."CONFIG" IS '方案配置'; +COMMENT ON COLUMN ${jdbc.username}."S_QUERY_PLAN"."SHARING" IS '是否共享方案'; +COMMENT ON COLUMN ${jdbc.username}."S_QUERY_PLAN"."CREATOR_ID" IS '创建人ID'; +COMMENT ON COLUMN ${jdbc.username}."S_QUERY_PLAN"."CREATE_DATE" IS '创建日期'; + +CREATE TABLE ${jdbc.username}.S_DATA_SOURCE +( + U_ID VARCHAR2(32) PRIMARY KEY NOT NULL, + NAME VARCHAR2(64) NOT NULL, + DRIVER VARCHAR2(128) NOT NULL, + URL VARCHAR2(512) NOT NULL, + USERNAME VARCHAR2(128) NOT NULL, + PASSWORD VARCHAR2(128) NOT NULL, + ENABLED NUMBER(4) NOT NULL, + CREATE_DATE DATE NOT NULL, + PROPERTIES CLOB, + COMMENT VARCHAR2(512), + TEST_SQL VARCHAR2(512) +); +COMMENT ON COLUMN ${jdbc.username}.S_DATA_SOURCE.U_ID IS 'ID'; +COMMENT ON COLUMN ${jdbc.username}.S_DATA_SOURCE.NAME IS '数据源名称'; +COMMENT ON COLUMN ${jdbc.username}.S_DATA_SOURCE.DRIVER IS '驱动'; +COMMENT ON COLUMN ${jdbc.username}.S_DATA_SOURCE.URL IS 'URL'; +COMMENT ON COLUMN ${jdbc.username}.S_DATA_SOURCE.USERNAME IS '用户名'; +COMMENT ON COLUMN ${jdbc.username}.S_DATA_SOURCE.PASSWORD IS '密码'; +COMMENT ON COLUMN ${jdbc.username}.S_DATA_SOURCE.ENABLED IS '是否启用'; +COMMENT ON COLUMN ${jdbc.username}.S_DATA_SOURCE.CREATE_DATE IS '创建日期'; +COMMENT ON COLUMN ${jdbc.username}.S_DATA_SOURCE.PROPERTIES IS '其他配置'; +COMMENT ON COLUMN ${jdbc.username}.S_DATA_SOURCE.COMMENT IS '备注'; +COMMENT ON COLUMN ${jdbc.username}.S_DATA_SOURCE.TEST_SQL IS '测试链接时使用的sql'; + +ALTER TABLE ${jdbc.username}."S_QUERY_PLAN" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE ${jdbc.username}."S_USER_PROFILE" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE ${jdbc.username}."S_CLASSIFIED" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE ${jdbc.username}."S_CONFIG" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE ${jdbc.username}."S_MODULES" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE ${jdbc.username}."S_MODULE_META" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE ${jdbc.username}."S_RESOURCES" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE ${jdbc.username}."S_ROLE" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE ${jdbc.username}."S_ROLE_MODULES" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE ${jdbc.username}."S_SCRIPT" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE ${jdbc.username}."S_USER" + ADD PRIMARY KEY ("U_ID"); +ALTER TABLE ${jdbc.username}."S_USER_ROLE" + ADD PRIMARY KEY ("U_ID"); + +--定时任务 +CREATE TABLE ${jdbc.username}.S_QUARTZ_JOB_HIS ( + u_id VARCHAR(32) NOT NULL PRIMARY KEY, + job_id VARCHAR(32) NOT NULL, + start_time DATE NOT NULL, + end_time DATE, + result CLOB, + status NUMBER(4) +); +COMMENT ON COLUMN ${jdbc.username}.S_QUARTZ_JOB_HIS.u_id IS '主键'; +COMMENT ON COLUMN ${jdbc.username}.S_QUARTZ_JOB_HIS.job_id IS '任务ID'; +COMMENT ON COLUMN ${jdbc.username}.S_QUARTZ_JOB_HIS.start_time IS '开始时间'; +COMMENT ON COLUMN ${jdbc.username}.S_QUARTZ_JOB_HIS.end_time IS '结束时间'; +COMMENT ON COLUMN ${jdbc.username}.S_QUARTZ_JOB_HIS.result IS '执行结果'; +COMMENT ON COLUMN ${jdbc.username}.S_QUARTZ_JOB_HIS.status IS '状态'; + + +CREATE TABLE ${jdbc.username}.S_QUARTZ_JOB ( + u_id VARCHAR(32) NOT NULL PRIMARY KEY, + name VARCHAR(128) NOT NULL, + remark VARCHAR(512), + cron ${jdbc.username}. VARCHAR(512) NOT NULL, + script CLOB NOT NULL, + language VARCHAR(32) NOT NULL, + enabled NUMBER(4), + parameters CLOB, + type NUMBER(4) +); +COMMENT ON COLUMN ${jdbc.username}.S_QUARTZ_JOB.u_id IS '主键'; +COMMENT ON COLUMN ${jdbc.username}.S_QUARTZ_JOB.name IS '任务名称'; +COMMENT ON COLUMN ${jdbc.username}.S_QUARTZ_JOB.remark IS '备注'; +COMMENT ON COLUMN ${jdbc.username}.S_QUARTZ_JOB.cron ${jdbc.username}.IS 'cron表达式'; +COMMENT ON COLUMN ${jdbc.username}.S_QUARTZ_JOB.script IS '执行脚本'; +COMMENT ON COLUMN ${jdbc.username}.S_QUARTZ_JOB.language IS '脚本语言'; +COMMENT ON COLUMN ${jdbc.username}.S_QUARTZ_JOB.enabled IS '是否启用'; +COMMENT ON COLUMN ${jdbc.username}.S_QUARTZ_JOB.parameters IS '启动参数'; +COMMENT ON COLUMN ${jdbc.username}.S_QUARTZ_JOB.type IS '任务类型'; + + +CREATE TABLE ${jdbc.username}.qrtz_job_details +( + SCHED_NAME VARCHAR2(120) NOT NULL, + JOB_NAME VARCHAR2(200) NOT NULL, + JOB_GROUP VARCHAR2(200) NOT NULL, + DESCRIPTION VARCHAR2(250) NULL, + JOB_CLASS_NAME VARCHAR2(250) NOT NULL, + IS_DURABLE VARCHAR2(1) NOT NULL, + IS_NONCONCURRENT VARCHAR2(1) NOT NULL, + IS_UPDATE_DATA VARCHAR2(1) NOT NULL, + REQUESTS_RECOVERY VARCHAR2(1) NOT NULL, + JOB_DATA BLOB NULL, + CONSTRAINT QRTZ_JOB_DETAILS_PK PRIMARY KEY (SCHED_NAME, JOB_NAME, JOB_GROUP) +); +CREATE TABLE ${jdbc.username}.qrtz_triggers +( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + JOB_NAME VARCHAR2(200) NOT NULL, + JOB_GROUP VARCHAR2(200) NOT NULL, + DESCRIPTION VARCHAR2(250) NULL, + NEXT_FIRE_TIME NUMBER(13) NULL, + PREV_FIRE_TIME NUMBER(13) NULL, + PRIORITY NUMBER(13) NULL, + TRIGGER_STATE VARCHAR2(16) NOT NULL, + TRIGGER_TYPE VARCHAR2(8) NOT NULL, + START_TIME NUMBER(13) NOT NULL, + END_TIME NUMBER(13) NULL, + CALENDAR_NAME VARCHAR2(200) NULL, + MISFIRE_INSTR NUMBER(2) NULL, + JOB_DATA BLOB NULL, + CONSTRAINT QRTZ_TRIGGERS_PK PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + CONSTRAINT QRTZ_TRIGGER_TO_JOBS_FK FOREIGN KEY (SCHED_NAME, JOB_NAME, JOB_GROUP) + REFERENCES QRTZ_JOB_DETAILS (SCHED_NAME, JOB_NAME, JOB_GROUP) +); +CREATE TABLE ${jdbc.username}.qrtz_simple_triggers +( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + REPEAT_COUNT NUMBER(7) NOT NULL, + REPEAT_INTERVAL NUMBER(12) NOT NULL, + TIMES_TRIGGERED NUMBER(10) NOT NULL, + CONSTRAINT QRTZ_SIMPLE_TRIG_PK PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + CONSTRAINT QRTZ_SIMPLE_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); +CREATE TABLE ${jdbc.username}.qrtz_cron_triggers +( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + CRON_EXPRESSION VARCHAR2(120) NOT NULL, + TIME_ZONE_ID VARCHAR2(80), + CONSTRAINT QRTZ_CRON_TRIG_PK PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + CONSTRAINT QRTZ_CRON_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); +CREATE TABLE ${jdbc.username}.qrtz_simprop_triggers +( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + STR_PROP_1 VARCHAR2(512) NULL, + STR_PROP_2 VARCHAR2(512) NULL, + STR_PROP_3 VARCHAR2(512) NULL, + INT_PROP_1 NUMBER(10) NULL, + INT_PROP_2 NUMBER(10) NULL, + LONG_PROP_1 NUMBER(13) NULL, + LONG_PROP_2 NUMBER(13) NULL, + DEC_PROP_1 NUMERIC(13, 4) NULL, + DEC_PROP_2 NUMERIC(13, 4) NULL, + BOOL_PROP_1 VARCHAR2(1) NULL, + BOOL_PROP_2 VARCHAR2(1) NULL, + CONSTRAINT QRTZ_SIMPROP_TRIG_PK PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + CONSTRAINT QRTZ_SIMPROP_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); +CREATE TABLE ${jdbc.username}.qrtz_blob_triggers +( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + BLOB_DATA BLOB NULL, + CONSTRAINT QRTZ_BLOB_TRIG_PK PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + CONSTRAINT QRTZ_BLOB_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); +CREATE TABLE ${jdbc.username}.qrtz_calendars +( + SCHED_NAME VARCHAR2(120) NOT NULL, + CALENDAR_NAME VARCHAR2(200) NOT NULL, + CALENDAR BLOB NOT NULL, + CONSTRAINT QRTZ_CALENDARS_PK PRIMARY KEY (SCHED_NAME, CALENDAR_NAME) +); +CREATE TABLE ${jdbc.username}.qrtz_paused_trigger_grps +( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + CONSTRAINT QRTZ_PAUSED_TRIG_GRPS_PK PRIMARY KEY (SCHED_NAME, TRIGGER_GROUP) +); +CREATE TABLE ${jdbc.username}.qrtz_fired_triggers +( + SCHED_NAME VARCHAR2(120) NOT NULL, + ENTRY_ID VARCHAR2(95) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + INSTANCE_NAME VARCHAR2(200) NOT NULL, + FIRED_TIME NUMBER(13) NOT NULL, + SCHED_TIME NUMBER(13) NOT NULL, + PRIORITY NUMBER(13) NOT NULL, + STATE VARCHAR2(16) NOT NULL, + JOB_NAME VARCHAR2(200) NULL, + JOB_GROUP VARCHAR2(200) NULL, + IS_NONCONCURRENT VARCHAR2(1) NULL, + REQUESTS_RECOVERY VARCHAR2(1) NULL, + CONSTRAINT QRTZ_FIRED_TRIGGER_PK PRIMARY KEY (SCHED_NAME, ENTRY_ID) +); +CREATE TABLE ${jdbc.username}.qrtz_scheduler_state +( + SCHED_NAME VARCHAR2(120) NOT NULL, + INSTANCE_NAME VARCHAR2(200) NOT NULL, + LAST_CHECKIN_TIME NUMBER(13) NOT NULL, + CHECKIN_INTERVAL NUMBER(13) NOT NULL, + CONSTRAINT QRTZ_SCHEDULER_STATE_PK PRIMARY KEY (SCHED_NAME, INSTANCE_NAME) +); +CREATE TABLE ${jdbc.username}.qrtz_locks +( + SCHED_NAME VARCHAR2(120) NOT NULL, + LOCK_NAME VARCHAR2(40) NOT NULL, + CONSTRAINT QRTZ_LOCKS_PK PRIMARY KEY (SCHED_NAME, LOCK_NAME) +); + +CREATE INDEX idx_qrtz_j_req_recovery + ON ${jdbc.username}.${jdbc.username}.qrtz_job_details (SCHED_NAME, REQUESTS_RECOVERY); +CREATE INDEX idx_qrtz_j_grp + ON ${jdbc.username}.${jdbc.username}.qrtz_job_details (SCHED_NAME, JOB_GROUP); + +CREATE INDEX idx_qrtz_t_j + ON ${jdbc.username}.${jdbc.username}.qrtz_triggers (SCHED_NAME, JOB_NAME, JOB_GROUP); +CREATE INDEX idx_qrtz_t_jg + ON ${jdbc.username}.qrtz_triggers (SCHED_NAME, JOB_GROUP); +CREATE INDEX idx_qrtz_t_c + ON ${jdbc.username}.qrtz_triggers (SCHED_NAME, CALENDAR_NAME); +CREATE INDEX idx_qrtz_t_g + ON ${jdbc.username}.qrtz_triggers (SCHED_NAME, TRIGGER_GROUP); +CREATE INDEX idx_qrtz_t_state + ON ${jdbc.username}.qrtz_triggers (SCHED_NAME, TRIGGER_STATE); +CREATE INDEX idx_qrtz_t_n_state + ON ${jdbc.username}.qrtz_triggers (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP, TRIGGER_STATE); +CREATE INDEX idx_qrtz_t_n_g_state + ON ${jdbc.username}.qrtz_triggers (SCHED_NAME, TRIGGER_GROUP, TRIGGER_STATE); +CREATE INDEX idx_qrtz_t_next_fire_time + ON ${jdbc.username}.qrtz_triggers (SCHED_NAME, NEXT_FIRE_TIME); +CREATE INDEX idx_qrtz_t_nft_st + ON ${jdbc.username}.qrtz_triggers (SCHED_NAME, TRIGGER_STATE, NEXT_FIRE_TIME); +CREATE INDEX idx_qrtz_t_nft_misfire + ON ${jdbc.username}.qrtz_triggers (SCHED_NAME, MISFIRE_INSTR, NEXT_FIRE_TIME); +CREATE INDEX idx_qrtz_t_nft_st_misfire + ON ${jdbc.username}.qrtz_triggers (SCHED_NAME, MISFIRE_INSTR, NEXT_FIRE_TIME, TRIGGER_STATE); +CREATE INDEX idx_qrtz_t_nft_st_misfire_grp + ON ${jdbc.username}.qrtz_triggers (SCHED_NAME, MISFIRE_INSTR, NEXT_FIRE_TIME, TRIGGER_GROUP, TRIGGER_STATE); + +CREATE INDEX idx_qrtz_ft_trig_inst_name + ON ${jdbc.username}.qrtz_fired_triggers (SCHED_NAME, INSTANCE_NAME); +CREATE INDEX idx_qrtz_ft_inst_job_req_rcvry + ON ${jdbc.username}.qrtz_fired_triggers (SCHED_NAME, INSTANCE_NAME, REQUESTS_RECOVERY); +CREATE INDEX idx_qrtz_ft_j_g + ON ${jdbc.username}.qrtz_fired_triggers (SCHED_NAME, JOB_NAME, JOB_GROUP); +CREATE INDEX idx_qrtz_ft_jg + ON ${jdbc.username}.qrtz_fired_triggers (SCHED_NAME, JOB_GROUP); +CREATE INDEX idx_qrtz_ft_t_g + ON ${jdbc.username}.qrtz_fired_triggers (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP); +CREATE INDEX idx_qrtz_ft_tg + ON ${jdbc.username}.qrtz_fired_triggers (SCHED_NAME, TRIGGER_GROUP); \ No newline at end of file diff --git a/hsweb-web-starter/src/main/resources/org.hsweb.start.scripts/upgrade/2.2.groovy b/hsweb-web-starter/src/main/resources/org.hsweb.start.scripts/upgrade/2.2.groovy new file mode 100644 index 000000000..e69de29bb diff --git a/pom.xml b/pom.xml index 3d00946eb..14c664335 100644 --- a/pom.xml +++ b/pom.xml @@ -50,6 +50,7 @@ hsweb-web-oauth2 hsweb-web-datasource hsweb-web-starter + hsweb-web-message @@ -61,7 +62,8 @@ 3.20.0-GA ${java.version} - 1.3.7.RELEASE + 1.4.2.RELEASE + 5.19.0.2 1.2.6