From 7dc30efc5346a64d82bdf2740305d55570045f30 Mon Sep 17 00:00:00 2001 From: "chen.ma" Date: Fri, 23 Sep 2022 21:30:06 +0800 Subject: [PATCH] Adapt to H2 database --- hippo4j-config/pom.xml | 2 + .../biz/impl/ThreadPoolServiceImpl.java | 2 +- .../service/impl/DashboardServiceImpl.java | 39 +-- hippo4j-server/pom.xml | 1 - .../server/config/DataBaseConfiguration.java | 42 +++ .../server/config/DataBaseProperties.java | 41 +++ .../server/init/LocalDataSourceLoader.java | 110 ++++++ .../main/resources/application-h2.properties | 9 +- .../resources/application-mysql.properties | 5 - .../src/main/resources/application.properties | 11 + .../sql-script/h2/hippo4j_manager.sql | 317 ++++++++---------- .../sql-script/mysql/hippo4j_manager.sql | 214 ++++++++++++ 12 files changed, 583 insertions(+), 210 deletions(-) create mode 100644 hippo4j-server/src/main/java/cn/hippo4j/server/config/DataBaseConfiguration.java create mode 100644 hippo4j-server/src/main/java/cn/hippo4j/server/config/DataBaseProperties.java create mode 100644 hippo4j-server/src/main/java/cn/hippo4j/server/init/LocalDataSourceLoader.java delete mode 100644 hippo4j-server/src/main/resources/application-mysql.properties create mode 100644 hippo4j-server/src/main/resources/sql-script/mysql/hippo4j_manager.sql diff --git a/hippo4j-config/pom.xml b/hippo4j-config/pom.xml index 79a9473f..61cd12de 100644 --- a/hippo4j-config/pom.xml +++ b/hippo4j-config/pom.xml @@ -11,6 +11,7 @@ true + 2.1.214 @@ -38,6 +39,7 @@ com.h2database h2 + ${h2.version} runtime diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolServiceImpl.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolServiceImpl.java index 9bb67cdf..b26016b9 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolServiceImpl.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolServiceImpl.java @@ -61,7 +61,7 @@ public class ThreadPoolServiceImpl implements ThreadPoolService { .eq(!StringUtils.isBlank(reqDTO.getTenantId()), ConfigAllInfo::getTenantId, reqDTO.getTenantId()) .eq(!StringUtils.isBlank(reqDTO.getItemId()), ConfigAllInfo::getItemId, reqDTO.getItemId()) .eq(!StringUtils.isBlank(reqDTO.getTpId()), ConfigAllInfo::getTpId, reqDTO.getTpId()) - .eq(ConfigAllInfo::getDelFlag, DelEnum.NORMAL) + .eq(ConfigAllInfo::getDelFlag, DelEnum.NORMAL.getIntCode()) .orderByDesc(reqDTO.getDesc() != null, ConfigAllInfo::getGmtCreate); return configInfoMapper.selectPage(reqDTO, wrapper).convert(each -> BeanUtil.convert(each, ThreadPoolRespDTO.class)); } diff --git a/hippo4j-console/src/main/java/cn/hippo4j/console/service/impl/DashboardServiceImpl.java b/hippo4j-console/src/main/java/cn/hippo4j/console/service/impl/DashboardServiceImpl.java index f2603a0c..09702b30 100644 --- a/hippo4j-console/src/main/java/cn/hippo4j/console/service/impl/DashboardServiceImpl.java +++ b/hippo4j-console/src/main/java/cn/hippo4j/console/service/impl/DashboardServiceImpl.java @@ -17,12 +17,6 @@ package cn.hippo4j.console.service.impl; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - import cn.hippo4j.common.enums.DelEnum; import cn.hippo4j.common.model.InstanceInfo; import cn.hippo4j.common.toolkit.GroupKey; @@ -30,17 +24,9 @@ import cn.hippo4j.config.mapper.ConfigInfoMapper; import cn.hippo4j.config.mapper.HisRunDataMapper; import cn.hippo4j.config.mapper.ItemInfoMapper; import cn.hippo4j.config.mapper.TenantInfoMapper; -import cn.hippo4j.config.model.CacheItem; -import cn.hippo4j.config.model.ConfigAllInfo; -import cn.hippo4j.config.model.ConfigInfoBase; -import cn.hippo4j.config.model.ItemInfo; -import cn.hippo4j.config.model.TenantInfo; +import cn.hippo4j.config.model.*; import cn.hippo4j.config.service.ConfigCacheService; -import cn.hippo4j.console.model.ChartInfo; -import cn.hippo4j.console.model.LineChartInfo; -import cn.hippo4j.console.model.PieChartInfo; -import cn.hippo4j.console.model.RankingChart; -import cn.hippo4j.console.model.TenantChart; +import cn.hippo4j.console.model.*; import cn.hippo4j.console.service.DashboardService; import cn.hippo4j.discovery.core.BaseInstanceRegistry; import cn.hippo4j.discovery.core.Lease; @@ -52,9 +38,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.google.common.collect.Lists; import lombok.AllArgsConstructor; - import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + import static cn.hippo4j.common.toolkit.ContentUtil.getGroupKey; /** @@ -76,9 +67,9 @@ public class DashboardServiceImpl implements DashboardService { @Override public ChartInfo getChartInfo() { - Integer tenantCount = tenantInfoMapper.selectCount(Wrappers.lambdaQuery(TenantInfo.class).eq(TenantInfo::getDelFlag, DelEnum.NORMAL.getCode())); + Integer tenantCount = tenantInfoMapper.selectCount(Wrappers.lambdaQuery(TenantInfo.class).eq(TenantInfo::getDelFlag, DelEnum.NORMAL.getIntCode())); Integer itemCount = itemInfoMapper.selectCount(Wrappers.lambdaQuery(ItemInfo.class).eq(ItemInfo::getDelFlag, DelEnum.NORMAL.getIntCode())); - Integer threadPoolCount = configInfoMapper.selectCount(Wrappers.lambdaQuery(ConfigAllInfo.class).eq(ConfigAllInfo::getDelFlag, DelEnum.NORMAL.getCode())); + Integer threadPoolCount = configInfoMapper.selectCount(Wrappers.lambdaQuery(ConfigAllInfo.class).eq(ConfigAllInfo::getDelFlag, DelEnum.NORMAL.getIntCode())); ChartInfo chartInfo = new ChartInfo(); chartInfo.setTenantCount(tenantCount) .setItemCount(itemCount) @@ -111,16 +102,16 @@ public class DashboardServiceImpl implements DashboardService { @Override public TenantChart getTenantChart() { List> tenantChartList = Lists.newArrayList(); - List tenantInfos = tenantInfoMapper.selectList(Wrappers.lambdaQuery(TenantInfo.class).eq(TenantInfo::getDelFlag, DelEnum.NORMAL)); + List tenantInfos = tenantInfoMapper.selectList(Wrappers.lambdaQuery(TenantInfo.class).eq(TenantInfo::getDelFlag, DelEnum.NORMAL.getIntCode())); for (TenantInfo tenant : tenantInfos) { int tenantThreadPoolNum = 0; LambdaQueryWrapper itemQueryWrapper = - Wrappers.lambdaQuery(ItemInfo.class).eq(ItemInfo::getTenantId, tenant.getTenantId()).eq(ItemInfo::getDelFlag, DelEnum.NORMAL).select(ItemInfo::getItemId); + Wrappers.lambdaQuery(ItemInfo.class).eq(ItemInfo::getTenantId, tenant.getTenantId()).eq(ItemInfo::getDelFlag, DelEnum.NORMAL.getIntCode()).select(ItemInfo::getItemId); List itemInfos = itemInfoMapper.selectList(itemQueryWrapper); for (ItemInfo item : itemInfos) { LambdaQueryWrapper threadPoolQueryWrapper = Wrappers.lambdaQuery(ConfigAllInfo.class) .eq(ConfigInfoBase::getItemId, item.getItemId()) - .eq(ConfigAllInfo::getDelFlag, DelEnum.NORMAL); + .eq(ConfigAllInfo::getDelFlag, DelEnum.NORMAL.getIntCode()); Integer threadPoolCount = configInfoMapper.selectCount(threadPoolQueryWrapper); tenantThreadPoolNum += threadPoolCount; } @@ -136,13 +127,13 @@ public class DashboardServiceImpl implements DashboardService { @Override public PieChartInfo getPieChart() { - LambdaQueryWrapper itemQueryWrapper = Wrappers.lambdaQuery(ItemInfo.class).eq(ItemInfo::getDelFlag, DelEnum.NORMAL).select(ItemInfo::getItemId); + LambdaQueryWrapper itemQueryWrapper = Wrappers.lambdaQuery(ItemInfo.class).eq(ItemInfo::getDelFlag, DelEnum.NORMAL.getIntCode()).select(ItemInfo::getItemId); List itemNameList = itemInfoMapper.selectObjs(itemQueryWrapper); List> pieDataList = Lists.newArrayList(); for (Object each : itemNameList) { LambdaQueryWrapper threadPoolQueryWrapper = Wrappers.lambdaQuery(ConfigAllInfo.class) .eq(ConfigInfoBase::getItemId, each) - .eq(ConfigAllInfo::getDelFlag, DelEnum.NORMAL); + .eq(ConfigAllInfo::getDelFlag, DelEnum.NORMAL.getIntCode()); Integer threadPoolCount = configInfoMapper.selectCount(threadPoolQueryWrapper); if (threadPoolCount != null) { Dict dict = Dict.create().set("name", each).set("value", threadPoolCount); diff --git a/hippo4j-server/pom.xml b/hippo4j-server/pom.xml index ebb19a0b..f6d2b20e 100644 --- a/hippo4j-server/pom.xml +++ b/hippo4j-server/pom.xml @@ -14,7 +14,6 @@ - cn.hippo4j hippo4j-console diff --git a/hippo4j-server/src/main/java/cn/hippo4j/server/config/DataBaseConfiguration.java b/hippo4j-server/src/main/java/cn/hippo4j/server/config/DataBaseConfiguration.java new file mode 100644 index 00000000..db8affd4 --- /dev/null +++ b/hippo4j-server/src/main/java/cn/hippo4j/server/config/DataBaseConfiguration.java @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.server.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * Database configuration. + * + * @see org.apache.shenyu.admin.config.DataBaseConfiguration + */ +@Configuration +public class DataBaseConfiguration { + + @Bean + @ConditionalOnMissingBean(value = DataBaseProperties.class) + public DataBaseProperties dataBaseProperties(@Value("${hippo4j.database.init_script:sql-script/h2/schema.sql}") String initScript, + @Value("${hippo4j.database.init_enable:true}") Boolean initEnable) { + DataBaseProperties dataSourceProperties = new DataBaseProperties(); + dataSourceProperties.setInitScript(initScript); + dataSourceProperties.setInitEnable(initEnable); + return dataSourceProperties; + } +} diff --git a/hippo4j-server/src/main/java/cn/hippo4j/server/config/DataBaseProperties.java b/hippo4j-server/src/main/java/cn/hippo4j/server/config/DataBaseProperties.java new file mode 100644 index 00000000..b6029999 --- /dev/null +++ b/hippo4j-server/src/main/java/cn/hippo4j/server/config/DataBaseProperties.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.server.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * Database properties. + * + * @see org.apache.shenyu.admin.config.properties.DataBaseProperties + */ +@Data +@ConfigurationProperties(prefix = "hippo4j.database") +public class DataBaseProperties { + + /** + * Init script + */ + private String initScript; + + /** + * Init enable + */ + private Boolean initEnable; +} diff --git a/hippo4j-server/src/main/java/cn/hippo4j/server/init/LocalDataSourceLoader.java b/hippo4j-server/src/main/java/cn/hippo4j/server/init/LocalDataSourceLoader.java new file mode 100644 index 00000000..1ecccf2b --- /dev/null +++ b/hippo4j-server/src/main/java/cn/hippo4j/server/init/LocalDataSourceLoader.java @@ -0,0 +1,110 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.hippo4j.server.init; + +import cn.hippo4j.server.config.DataBaseProperties; +import com.google.common.base.Splitter; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.io.Resources; +import org.apache.ibatis.jdbc.ScriptRunner; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; +import org.springframework.lang.NonNull; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.charset.StandardCharsets; +import java.sql.Connection; +import java.sql.DriverManager; +import java.util.List; + +/** + * Local datasource loader. + * + * @see org.apache.shenyu.admin.spring.LocalDataSourceLoader + */ +@Slf4j +@Component +@ConditionalOnExpression("'${hippo4j.database.dialect}' == 'mysql' or '${hippo4j.database.dialect}' == 'h2'") +public class LocalDataSourceLoader implements InstantiationAwareBeanPostProcessor { + + private static final String PRE_FIX = "file:"; + + @Resource + private DataBaseProperties dataBaseProperties; + + @Override + public Object postProcessAfterInitialization(@NonNull final Object bean, final String beanName) throws BeansException { + if ((bean instanceof DataSourceProperties) && dataBaseProperties.getInitEnable()) { + this.init((DataSourceProperties) bean); + } + return bean; + } + + protected void init(final DataSourceProperties properties) { + try { + // If jdbcUrl in the configuration file specifies the hippo4j database, it is removed, + // because the hippo4j database does not need to be specified when executing the SQL file, + // otherwise the hippo4j database will be disconnected when the hippo4j database does not exist + String jdbcUrl = StringUtils.replace(properties.getUrl(), "/hippo4j_manager?", "?"); + Connection connection = DriverManager.getConnection(jdbcUrl, properties.getUsername(), properties.getPassword()); + this.execute(connection, dataBaseProperties.getInitScript()); + } catch (Exception ex) { + log.error("Datasource init error.", ex); + throw new RuntimeException(ex.getMessage()); + } + } + + protected void execute(final Connection conn, final String script) throws Exception { + ScriptRunner runner = new ScriptRunner(conn); + try { + // Doesn't print logger + runner.setLogWriter(null); + runner.setAutoCommit(true); + Resources.setCharset(StandardCharsets.UTF_8); + List initScripts = Splitter.on(";").splitToList(script); + for (String sqlScript : initScripts) { + if (sqlScript.startsWith(PRE_FIX)) { + String sqlFile = sqlScript.substring(PRE_FIX.length()); + try (Reader fileReader = getResourceAsReader(sqlFile)) { + log.info("Execute hippo4j schema sql: {}", sqlFile); + runner.runScript(fileReader); + } + } else { + try (Reader fileReader = Resources.getResourceAsReader(sqlScript)) { + log.info("Execute hippo4j schema sql: {}", sqlScript); + runner.runScript(fileReader); + } + } + } + } finally { + conn.close(); + } + } + + private static Reader getResourceAsReader(final String resource) throws IOException { + return new InputStreamReader(new FileInputStream(resource), StandardCharsets.UTF_8); + } +} diff --git a/hippo4j-server/src/main/resources/application-h2.properties b/hippo4j-server/src/main/resources/application-h2.properties index 5859aa19..999857c8 100644 --- a/hippo4j-server/src/main/resources/application-h2.properties +++ b/hippo4j-server/src/main/resources/application-h2.properties @@ -1,6 +1,9 @@ -### Default database +### Data source customization section +hippo4j.database.dialect=h2 +hippo4j.database.init_enable=true +hippo4j.database.init_script=sql-script/h2/hippo4j_manager.sql + spring.datasource.driver-class-name=org.h2.Driver -spring.datasource.url=jdbc:h2:mem:hippo4j_manager;DB_CLOSE_DELAY=-1;MODE=MySQL; +spring.datasource.url=jdbc:h2:file:/Users/single/Desktop/temp/h2_hippo4j_test_file;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL; spring.datasource.username=sa spring.datasource.password=sa -spring.datasource.schema=classpath:sql-script/h2/hippo4j_manager.sql diff --git a/hippo4j-server/src/main/resources/application-mysql.properties b/hippo4j-server/src/main/resources/application-mysql.properties deleted file mode 100644 index 2940c413..00000000 --- a/hippo4j-server/src/main/resources/application-mysql.properties +++ /dev/null @@ -1,5 +0,0 @@ -### Data source customization section -spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -spring.datasource.url=jdbc:mysql://localhost:3306/hippo4j_manager?characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 -spring.datasource.username=root -spring.datasource.password=root diff --git a/hippo4j-server/src/main/resources/application.properties b/hippo4j-server/src/main/resources/application.properties index 69a499af..b14c92fd 100644 --- a/hippo4j-server/src/main/resources/application.properties +++ b/hippo4j-server/src/main/resources/application.properties @@ -21,10 +21,21 @@ tenant=hippo4j hippo4j.core.clean-history-data-period=30 hippo4j.core.clean-history-data-enable=true +### Initialize the database dialect class. +hippo4j.database.dialect=mysql +hippo4j.database.init_enable=true +hippo4j.database.init_script=sql-script/mysql/hippo4j_manager.sql + ### Use netty to report thread pool monitoring data. The default is http. # hippo4j.core.monitor.report-type=netty #*************** Config Module Related Configurations ***************# +### Default database +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.url=jdbc:mysql://localhost:3306/hippo4j_manager?characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 +spring.datasource.username=root +spring.datasource.password=root + ### Hikari Datasource spring.datasource.hikari.pool-name=Hikari spring.datasource.hikari.connectionTimeout=30000 diff --git a/hippo4j-server/src/main/resources/sql-script/h2/hippo4j_manager.sql b/hippo4j-server/src/main/resources/sql-script/h2/hippo4j_manager.sql index 2768fe2b..641791e8 100755 --- a/hippo4j-server/src/main/resources/sql-script/h2/hippo4j_manager.sql +++ b/hippo4j-server/src/main/resources/sql-script/h2/hippo4j_manager.sql @@ -2,234 +2,199 @@ /* 数据库全名 = hippo4j_manager */ /* 表名称 = tenant */ /******************************************/ -DROP TABLE IF EXISTS `tenant`, `tenant_info`; -CREATE TABLE `tenant` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', - `tenant_name` varchar(128) DEFAULT NULL COMMENT '租户名称', - `tenant_desc` varchar(256) DEFAULT NULL COMMENT '租户介绍', - `owner` varchar(32) DEFAULT '-' COMMENT '负责人', - `gmt_create` datetime DEFAULT NULL COMMENT '创建时间', - `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间', - `del_flag` tinyint(1) DEFAULT NULL COMMENT '是否删除', - PRIMARY KEY (`id`), - UNIQUE KEY `tenant_id` (`id`), - KEY `uk_tenantinfo_tenantid` (`tenant_id`,`del_flag`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='租户表'; +CREATE TABLE IF NOT EXISTS `tenant` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', + `tenant_name` varchar(128) DEFAULT NULL COMMENT '租户名称', + `tenant_desc` varchar(256) DEFAULT NULL COMMENT '租户介绍', + `owner` varchar(32) DEFAULT '-' COMMENT '负责人', + `gmt_create` datetime DEFAULT NULL COMMENT '创建时间', + `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间', + `del_flag` tinyint(1) DEFAULT NULL COMMENT '是否删除', + PRIMARY KEY (`id`) +); /******************************************/ /* 数据库全名 = hippo4j_manager */ /* 表名称 = item */ /******************************************/ -DROP TABLE IF EXISTS `item`, `item_info`; -CREATE TABLE `item` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', - `item_id` varchar(128) DEFAULT NULL COMMENT '项目ID', - `item_name` varchar(128) DEFAULT NULL COMMENT '项目名称', - `item_desc` varchar(256) DEFAULT NULL COMMENT '项目介绍', - `owner` varchar(32) DEFAULT NULL COMMENT '负责人', - `gmt_create` datetime DEFAULT NULL COMMENT '创建时间', - `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间', - `del_flag` tinyint(1) DEFAULT NULL COMMENT '是否删除', - PRIMARY KEY (`id`), - UNIQUE KEY `item_id` (`id`), - UNIQUE KEY `item_uk_iteminfo_tenantitem` (`tenant_id`,`item_id`,`del_flag`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='项目表'; +CREATE TABLE IF NOT EXISTS `item` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', + `item_id` varchar(128) DEFAULT NULL COMMENT '项目ID', + `item_name` varchar(128) DEFAULT NULL COMMENT '项目名称', + `item_desc` varchar(256) DEFAULT NULL COMMENT '项目介绍', + `owner` varchar(32) DEFAULT NULL COMMENT '负责人', + `gmt_create` datetime DEFAULT NULL COMMENT '创建时间', + `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间', + `del_flag` tinyint(1) DEFAULT NULL COMMENT '是否删除', + PRIMARY KEY (`id`) +); /******************************************/ /* 数据库全名 = hippo4j_manager */ /* 表名称 = config */ /******************************************/ -DROP TABLE IF EXISTS `config`, `config_info`; -CREATE TABLE `config` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', - `item_id` varchar(256) DEFAULT NULL COMMENT '项目ID', - `tp_id` varchar(56) DEFAULT NULL COMMENT '线程池ID', - `tp_name` varchar(56) DEFAULT NULL COMMENT '线程池名称', - `core_size` int(11) DEFAULT NULL COMMENT '核心线程数', - `max_size` int(11) DEFAULT NULL COMMENT '最大线程数', - `queue_type` int(11) DEFAULT NULL COMMENT '队列类型...', - `capacity` int(11) DEFAULT NULL COMMENT '队列大小', - `rejected_type` int(11) DEFAULT NULL COMMENT '拒绝策略', - `keep_alive_time` int(11) DEFAULT NULL COMMENT '线程存活时间', - `allow_core_thread_time_out` tinyint(1) DEFAULT NULL COMMENT '允许核心线程超时', - `content` longtext COMMENT '线程池内容', - `md5` varchar(32) NOT NULL COMMENT 'MD5', - `is_alarm` tinyint(1) DEFAULT NULL COMMENT '是否报警', - `capacity_alarm` int(11) DEFAULT NULL COMMENT '容量报警', - `liveness_alarm` int(11) DEFAULT NULL COMMENT '活跃度报警', - `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', - `del_flag` tinyint(1) DEFAULT NULL COMMENT '是否删除', - PRIMARY KEY (`id`), - UNIQUE KEY `config_id` (`id`), - UNIQUE KEY `config_uk_configinfo_datagrouptenant` (`tenant_id`,`item_id`,`tp_id`,`del_flag`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='线程池配置表'; +CREATE TABLE IF NOT EXISTS `config` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', + `item_id` varchar(256) DEFAULT NULL COMMENT '项目ID', + `tp_id` varchar(56) DEFAULT NULL COMMENT '线程池ID', + `tp_name` varchar(56) DEFAULT NULL COMMENT '线程池名称', + `core_size` int(11) DEFAULT NULL COMMENT '核心线程数', + `max_size` int(11) DEFAULT NULL COMMENT '最大线程数', + `queue_type` int(11) DEFAULT NULL COMMENT '队列类型...', + `capacity` int(11) DEFAULT NULL COMMENT '队列大小', + `rejected_type` int(11) DEFAULT NULL COMMENT '拒绝策略', + `keep_alive_time` int(11) DEFAULT NULL COMMENT '线程存活时间(秒)', + `execute_time_out` int(11) DEFAULT NULL COMMENT '执行超时时间(毫秒)', + `allow_core_thread_time_out` tinyint(1) DEFAULT NULL COMMENT '允许核心线程超时', + `content` longtext COMMENT '线程池内容', + `md5` varchar(32) NOT NULL COMMENT 'MD5', + `is_alarm` tinyint(1) DEFAULT NULL COMMENT '是否报警', + `capacity_alarm` int(11) DEFAULT NULL COMMENT '容量报警', + `liveness_alarm` int(11) DEFAULT NULL COMMENT '活跃度报警', + `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `del_flag` tinyint(1) DEFAULT NULL COMMENT '是否删除', + PRIMARY KEY (`id`) +); /******************************************/ /* 数据库全名 = hippo4j_manager */ /* 表名称 = inst_config */ /******************************************/ -DROP TABLE IF EXISTS `inst_config`; -CREATE TABLE `inst_config` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', - `item_id` varchar(256) DEFAULT NULL COMMENT '项目ID', - `tp_id` varchar(56) DEFAULT NULL COMMENT '线程池ID', - `instance_id` varchar(256) DEFAULT NULL COMMENT '实例ID', - `content` longtext COMMENT '线程池内容', - `md5` varchar(32) NOT NULL COMMENT 'MD5', - `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', - PRIMARY KEY (`id`), - UNIQUE KEY `inst_config_id` (`id`), - KEY `idx_config_instance` (`tenant_id`,`item_id`,`tp_id`,`instance_id`) USING BTREE, - KEY `idx_instance` (`instance_id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='线程池配置实例表'; +CREATE TABLE IF NOT EXISTS `inst_config` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', + `item_id` varchar(256) DEFAULT NULL COMMENT '项目ID', + `tp_id` varchar(56) DEFAULT NULL COMMENT '线程池ID', + `instance_id` varchar(256) DEFAULT NULL COMMENT '实例ID', + `content` longtext COMMENT '线程池内容', + `md5` varchar(32) NOT NULL COMMENT 'MD5', + `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`) +); /******************************************/ /* 数据库全名 = hippo4j_manager */ /* 表名称 = his_run_data */ /******************************************/ -DROP TABLE IF EXISTS `his_run_data`; -CREATE TABLE `his_run_data` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', - `item_id` varchar(256) DEFAULT NULL COMMENT '项目ID', - `tp_id` varchar(56) DEFAULT NULL COMMENT '线程池ID', - `instance_id` varchar(256) DEFAULT NULL COMMENT '实例ID', - `current_load` bigint(20) DEFAULT NULL COMMENT '当前负载', - `peak_load` bigint(20) DEFAULT NULL COMMENT '峰值负载', - `pool_size` bigint(20) DEFAULT NULL COMMENT '线程数', - `active_size` bigint(20) DEFAULT NULL COMMENT '活跃线程数', - `queue_capacity` bigint(20) DEFAULT NULL COMMENT '队列容量', - `queue_size` bigint(20) DEFAULT NULL COMMENT '队列元素', - `queue_remaining_capacity` bigint(20) DEFAULT NULL COMMENT '队列剩余容量', - `completed_task_count` bigint(20) DEFAULT NULL COMMENT '已完成任务计数', - `reject_count` bigint(20) DEFAULT NULL COMMENT '拒绝次数', - `timestamp` bigint(20) DEFAULT NULL COMMENT '时间戳', - `gmt_create` datetime DEFAULT NULL COMMENT '创建时间', - `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间', - PRIMARY KEY (`id`), - KEY `idx_group_key` (`tenant_id`,`item_id`,`tp_id`,`instance_id`) USING BTREE, - KEY `idx_timestamp` (`timestamp`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='历史运行数据表'; +CREATE TABLE IF NOT EXISTS `his_run_data` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', + `item_id` varchar(256) DEFAULT NULL COMMENT '项目ID', + `tp_id` varchar(56) DEFAULT NULL COMMENT '线程池ID', + `instance_id` varchar(256) DEFAULT NULL COMMENT '实例ID', + `current_load` bigint(20) DEFAULT NULL COMMENT '当前负载', + `peak_load` bigint(20) DEFAULT NULL COMMENT '峰值负载', + `pool_size` bigint(20) DEFAULT NULL COMMENT '线程数', + `active_size` bigint(20) DEFAULT NULL COMMENT '活跃线程数', + `queue_capacity` bigint(20) DEFAULT NULL COMMENT '队列容量', + `queue_size` bigint(20) DEFAULT NULL COMMENT '队列元素', + `queue_remaining_capacity` bigint(20) DEFAULT NULL COMMENT '队列剩余容量', + `completed_task_count` bigint(20) DEFAULT NULL COMMENT '已完成任务计数', + `reject_count` bigint(20) DEFAULT NULL COMMENT '拒绝次数', + `timestamp` bigint(20) DEFAULT NULL COMMENT '时间戳', + `gmt_create` datetime DEFAULT NULL COMMENT '创建时间', + `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间', + PRIMARY KEY (`id`) +); /******************************************/ /* 数据库全名 = hippo4j_manager */ /* 表名称 = log_record_info */ /******************************************/ -DROP TABLE IF EXISTS `log_record_info`; -CREATE TABLE `log_record_info` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant` varchar(128) NOT NULL DEFAULT '' COMMENT '租户标识', - `biz_key` varchar(128) NOT NULL DEFAULT '' COMMENT '日志业务标识', - `biz_no` varchar(128) NOT NULL DEFAULT '' COMMENT '业务码标识', - `operator` varchar(64) NOT NULL DEFAULT '' COMMENT '操作人', - `action` varchar(128) NOT NULL DEFAULT '' COMMENT '动作', - `category` varchar(128) NOT NULL DEFAULT '' COMMENT '种类', - `detail` varchar(2048) NOT NULL DEFAULT '' COMMENT '修改的详细信息,可以为json', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`), - KEY `idx_biz_key` (`biz_key`) -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='操作日志表'; +CREATE TABLE IF NOT EXISTS `log_record_info` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant` varchar(128) NOT NULL DEFAULT '' COMMENT '租户标识', + `biz_key` varchar(128) NOT NULL DEFAULT '' COMMENT '日志业务标识', + `biz_no` varchar(128) NOT NULL DEFAULT '' COMMENT '业务码标识', + `operator` varchar(64) NOT NULL DEFAULT '' COMMENT '操作人', + `action` varchar(128) NOT NULL DEFAULT '' COMMENT '动作', + `category` varchar(128) NOT NULL DEFAULT '' COMMENT '种类', + `detail` varchar(2048) NOT NULL DEFAULT '' COMMENT '修改的详细信息,可以为json', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`) +); /******************************************/ /* 数据库全名 = hippo4j_manager */ /* 表名称 = user */ /******************************************/ -DROP TABLE IF EXISTS `user`; -CREATE TABLE `user` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `user_name` varchar(64) NOT NULL COMMENT '用户名', - `password` varchar(512) NOT NULL COMMENT '用户密码', - `role` varchar(50) NOT NULL COMMENT '角色', - `gmt_create` datetime NOT NULL COMMENT '创建时间', - `gmt_modified` datetime NOT NULL COMMENT '修改时间', - `del_flag` tinyint(1) NOT NULL COMMENT '是否删除', - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; +CREATE TABLE IF NOT EXISTS `user` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `user_name` varchar(64) NOT NULL COMMENT '用户名', + `password` varchar(512) NOT NULL COMMENT '用户密码', + `role` varchar(50) NOT NULL COMMENT '角色', + `gmt_create` datetime NOT NULL COMMENT '创建时间', + `gmt_modified` datetime NOT NULL COMMENT '修改时间', + `del_flag` tinyint(1) NOT NULL COMMENT '是否删除', + PRIMARY KEY (`id`) +); /******************************************/ /* 数据库全名 = hippo4j_manager */ /* 表名称 = role */ /******************************************/ -DROP TABLE IF EXISTS `role`; -CREATE TABLE `role` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `role` varchar(64) NOT NULL COMMENT '角色', - `user_name` varchar(64) NOT NULL COMMENT '用户名', - `gmt_create` datetime NOT NULL COMMENT '创建时间', - `gmt_modified` datetime NOT NULL COMMENT '修改时间', - `del_flag` tinyint(1) NOT NULL COMMENT '是否删除', - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='角色表'; +CREATE TABLE IF NOT EXISTS `role` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `role` varchar(64) NOT NULL COMMENT '角色', + `user_name` varchar(64) NOT NULL COMMENT '用户名', + `gmt_create` datetime NOT NULL COMMENT '创建时间', + `gmt_modified` datetime NOT NULL COMMENT '修改时间', + `del_flag` tinyint(1) NOT NULL COMMENT '是否删除', + PRIMARY KEY (`id`) +); /******************************************/ /* 数据库全名 = hippo4j_manager */ /* 表名称 = permission */ /******************************************/ -DROP TABLE IF EXISTS `permission`; -CREATE TABLE `permission` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `role` varchar(512) NOT NULL COMMENT '角色', - `resource` varchar(512) NOT NULL COMMENT '资源', - `action` varchar(8) NOT NULL COMMENT '读写权限', - `gmt_create` datetime NOT NULL COMMENT '创建时间', - `gmt_modified` datetime NOT NULL COMMENT '修改时间', - `del_flag` tinyint(1) NOT NULL COMMENT '是否删除', - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='权限表'; +CREATE TABLE IF NOT EXISTS `permission` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `role` varchar(512) NOT NULL COMMENT '角色', + `resource` varchar(512) NOT NULL COMMENT '资源', + `action` varchar(8) NOT NULL COMMENT '读写权限', + `gmt_create` datetime NOT NULL COMMENT '创建时间', + `gmt_modified` datetime NOT NULL COMMENT '修改时间', + `del_flag` tinyint(1) NOT NULL COMMENT '是否删除', + PRIMARY KEY (`id`) +); /******************************************/ /* 数据库全名 = hippo4j_manager */ /* 表名称 = notify */ /******************************************/ -DROP TABLE IF EXISTS `alarm`, `notify`; -CREATE TABLE `notify` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT '租户ID', - `item_id` varchar(128) NOT NULL COMMENT '项目ID', - `tp_id` varchar(128) NOT NULL COMMENT '线程池ID', - `platform` varchar(32) NOT NULL COMMENT '通知平台', - `type` varchar(32) NOT NULL COMMENT '通知类型', - `secret_key` varchar(256) NOT NULL COMMENT '密钥', - `interval` int(11) DEFAULT NULL COMMENT '报警间隔', - `receives` varchar(512) NOT NULL COMMENT '接收者', - `enable` tinyint(1) DEFAULT NULL COMMENT '是否启用', - `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', - `del_flag` tinyint(1) NOT NULL COMMENT '是否删除', - PRIMARY KEY (`id`), - UNIQUE KEY `notify_uk_notify_biz_key` (`tenant_id`,`item_id`,`tp_id`,`platform`,`type`,`del_flag`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='通知表'; +CREATE TABLE IF NOT EXISTS `notify` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT '租户ID', + `item_id` varchar(128) NOT NULL COMMENT '项目ID', + `tp_id` varchar(128) NOT NULL COMMENT '线程池ID', + `platform` varchar(32) NOT NULL COMMENT '通知平台', + `type` varchar(32) NOT NULL COMMENT '通知类型', + `secret_key` varchar(256) NOT NULL COMMENT '密钥', + `interval` int(11) DEFAULT NULL COMMENT '报警间隔', + `receives` varchar(512) NOT NULL COMMENT '接收者', + `enable` tinyint(1) DEFAULT NULL COMMENT '是否启用', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `del_flag` tinyint(1) NOT NULL COMMENT '是否删除', + PRIMARY KEY (`id`) +); /* 租户 */ -INSERT INTO `tenant` (`id`, `tenant_id`, `tenant_name`, `tenant_desc`, `owner`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'prescription', '处方组', '负责维护处方服务, 包括不限于电子处方等业务', '谢良辰', '2021-10-24 13:42:11', '2021-10-24 13:42:11', '0'); +INSERT IGNORE INTO `tenant` (`id`, `tenant_id`, `tenant_name`, `tenant_desc`, `owner`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'prescription', '处方组', '负责维护处方服务, 包括不限于电子处方等业务', '谢良辰', '2021-10-24 13:42:11', '2021-10-24 13:42:11', '0'); /* 项目 */ -INSERT INTO `item` (`id`, `tenant_id`, `item_id`, `item_name`, `item_desc`, `owner`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'prescription', 'dynamic-threadpool-example', '动态线程池示例项目', '动态线程池示例项目,对应 Hippo 项目的 example 模块', '马称', '2021-10-24 16:11:00', '2021-10-24 16:11:00', '0'); +INSERT IGNORE INTO `item` (`id`, `tenant_id`, `item_id`, `item_name`, `item_desc`, `owner`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'prescription', 'dynamic-threadpool-example', '动态线程池示例项目', '动态线程池示例项目,对应 Hippo 项目的 example 模块', '马称', '2021-10-24 16:11:00', '2021-10-24 16:11:00', '0'); /* 线程池 */ -INSERT INTO `config` (`id`, `tenant_id`, `item_id`, `tp_id`, `tp_name`, `core_size`, `max_size`, `queue_type`, `capacity`, `rejected_type`, `keep_alive_time`, `allow_core_thread_time_out`, `content`, `md5`, `is_alarm`, `capacity_alarm`, `liveness_alarm`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'prescription', 'dynamic-threadpool-example', 'message-consume', '示例消费者线程池', '5', '10', '9', '1024', '2', '9999', '0', '{\"tenantId\":\"prescription\",\"itemId\":\"dynamic-threadpool-example\",\"tpId\":\"message-consume\",\"coreSize\":5,\"maxSize\":10,\"queueType\":9,\"capacity\":1024,\"keepAliveTime\":9999,\"rejectedType\":2,\"isAlarm\":0,\"capacityAlarm\":80,\"livenessAlarm\":80,\"allowCoreThreadTimeOut\":0}', 'f80ea89044889fb6cec20e1a517f2ec3', '0', '80', '80', '2021-10-24 10:24:00', '2021-12-22 08:58:55', '0'), - ('2', 'prescription', 'dynamic-threadpool-example', 'message-produce', '示例生产者线程池', '5', '15', '9', '1024', '1', '9999', '0', '{\"tenantId\":\"prescription\",\"itemId\":\"dynamic-threadpool-example\",\"tpId\":\"message-produce\",\"coreSize\":5,\"maxSize\":15,\"queueType\":9,\"capacity\":1024,\"keepAliveTime\":9999,\"rejectedType\":1,\"isAlarm\":0,\"capacityAlarm\":30,\"livenessAlarm\":30,\"allowCoreThreadTimeOut\":0}', '525e1429468bcfe98df7e70a75710051', '0', '30', '30', '2021-10-24 10:24:00', '2021-12-22 08:59:02', '0'); +INSERT IGNORE INTO `config` (`id`, `tenant_id`, `item_id`, `tp_id`, `tp_name`, `core_size`, `max_size`, `queue_type`, `capacity`, `rejected_type`, `keep_alive_time`, `allow_core_thread_time_out`, `content`, `md5`, `is_alarm`, `capacity_alarm`, `liveness_alarm`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'prescription', 'dynamic-threadpool-example', 'message-consume', '示例消费者线程池', '5', '10', '9', '1024', '2', '9999', '0', '{\"tenantId\":\"prescription\",\"itemId\":\"dynamic-threadpool-example\",\"tpId\":\"message-consume\",\"coreSize\":5,\"maxSize\":10,\"queueType\":9,\"capacity\":1024,\"keepAliveTime\":9999,\"rejectedType\":2,\"isAlarm\":0,\"capacityAlarm\":80,\"livenessAlarm\":80,\"allowCoreThreadTimeOut\":0}', 'f80ea89044889fb6cec20e1a517f2ec3', '0', '80', '80', '2021-10-24 10:24:00', '2021-12-22 08:58:55', '0'), ('2', 'prescription', 'dynamic-threadpool-example', 'message-produce', '示例生产者线程池', '5', '15', '9', '1024', '1', '9999', '0', '{\"tenantId\":\"prescription\",\"itemId\":\"dynamic-threadpool-example\",\"tpId\":\"message-produce\",\"coreSize\":5,\"maxSize\":15,\"queueType\":9,\"capacity\":1024,\"keepAliveTime\":9999,\"rejectedType\":1,\"isAlarm\":0,\"capacityAlarm\":30,\"livenessAlarm\":30,\"allowCoreThreadTimeOut\":0}', '525e1429468bcfe98df7e70a75710051', '0', '30', '30', '2021-10-24 10:24:00', '2021-12-22 08:59:02', '0'); /* 用户 */ -INSERT INTO `user` (`id`, `user_name`, `password`, `role`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'admin', '$2a$10$2KCqRbra0Yn2TwvkZxtfLuWuUP5KyCWsljO/ci5pLD27pqR3TV1vy', 'ROLE_ADMIN', '2021-11-04 21:35:17', '2021-11-15 23:04:59', '0'); +INSERT IGNORE INTO `user` (`id`, `user_name`, `password`, `role`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'admin', '$2a$10$2KCqRbra0Yn2TwvkZxtfLuWuUP5KyCWsljO/ci5pLD27pqR3TV1vy', 'ROLE_ADMIN', '2021-11-04 21:35:17', '2021-11-15 23:04:59', '0'); /* 通知表 */ -INSERT INTO `notify` (`id`, `tenant_id`, `item_id`, `tp_id`, `platform`, `type`, `secret_key`, `interval`, `receives`, `enable`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'prescription', 'dynamic-threadpool-example', 'message-produce', 'DING', 'CONFIG', '4a582a588a161d6e3a1bd1de7eea9ee9f562cdfcbe56b6e72029e7fd512b2eae', NULL, '15601166691', '0', '2021-11-18 22:49:50', '2021-11-18 22:49:50', '0'), - ('2', 'prescription', 'dynamic-threadpool-example', 'message-produce', 'DING', 'ALARM', '4a582a588a161d6e3a1bd1de7eea9ee9f562cdfcbe56b6e72029e7fd512b2eae', '30', '15601166691', '0', '2021-11-18 22:50:06', '2021-11-18 22:50:06', '0'); - -/* 1.1.0 Upgrade Start */ -ALTER TABLE `config` DROP INDEX `config_uk_configinfo_datagrouptenant`; -ALTER TABLE `item` DROP INDEX `item_uk_iteminfo_tenantitem`; -ALTER TABLE `tenant` DROP INDEX `uk_tenantinfo_tenantid`; -/* 1.1.0 Upgrade End */ - -/* 1.4.0 Upgrade Start */ -ALTER TABLE config Modify COLUMN keep_alive_time int(11) COMMENT '线程存活时间(秒)'; -ALTER TABLE config Add execute_time_out int(11) COMMENT '执行超时时间(毫秒)' AFTER keep_alive_time; -/* 1.4.0 Upgrade Start */ +INSERT IGNORE INTO `notify` (`id`, `tenant_id`, `item_id`, `tp_id`, `platform`, `type`, `secret_key`, `interval`, `receives`, `enable`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'prescription', 'dynamic-threadpool-example', 'message-produce', 'DING', 'CONFIG', '4a582a588a161d6e3a1bd1de7eea9ee9f562cdfcbe56b6e72029e7fd512b2eae', NULL, '15601166691', '0', '2021-11-18 22:49:50', '2021-11-18 22:49:50', '0'), ('2', 'prescription', 'dynamic-threadpool-example', 'message-produce', 'DING', 'ALARM', '4a582a588a161d6e3a1bd1de7eea9ee9f562cdfcbe56b6e72029e7fd512b2eae', '30', '15601166691', '0', '2021-11-18 22:50:06', '2021-11-18 22:50:06', '0'); diff --git a/hippo4j-server/src/main/resources/sql-script/mysql/hippo4j_manager.sql b/hippo4j-server/src/main/resources/sql-script/mysql/hippo4j_manager.sql new file mode 100644 index 00000000..348dc009 --- /dev/null +++ b/hippo4j-server/src/main/resources/sql-script/mysql/hippo4j_manager.sql @@ -0,0 +1,214 @@ +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `hippo4j_manager` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */; + +USE `hippo4j_manager`; + +/******************************************/ +/* 数据库全名 = hippo4j_manager */ +/* 表名称 = tenant */ +/******************************************/ +CREATE TABLE IF NOT EXISTS `tenant` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', + `tenant_name` varchar(128) DEFAULT NULL COMMENT '租户名称', + `tenant_desc` varchar(256) DEFAULT NULL COMMENT '租户介绍', + `owner` varchar(32) DEFAULT '-' COMMENT '负责人', + `gmt_create` datetime DEFAULT NULL COMMENT '创建时间', + `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间', + `del_flag` tinyint(1) DEFAULT NULL COMMENT '是否删除', + PRIMARY KEY (`id`), + UNIQUE KEY `id` (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='租户表'; + +/******************************************/ +/* 数据库全名 = hippo4j_manager */ +/* 表名称 = item */ +/******************************************/ +CREATE TABLE IF NOT EXISTS `item` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', + `item_id` varchar(128) DEFAULT NULL COMMENT '项目ID', + `item_name` varchar(128) DEFAULT NULL COMMENT '项目名称', + `item_desc` varchar(256) DEFAULT NULL COMMENT '项目介绍', + `owner` varchar(32) DEFAULT NULL COMMENT '负责人', + `gmt_create` datetime DEFAULT NULL COMMENT '创建时间', + `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间', + `del_flag` tinyint(1) DEFAULT NULL COMMENT '是否删除', + PRIMARY KEY (`id`), + UNIQUE KEY `id` (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='项目表'; + +/******************************************/ +/* 数据库全名 = hippo4j_manager */ +/* 表名称 = config */ +/******************************************/ +CREATE TABLE IF NOT EXISTS `config` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', + `item_id` varchar(256) DEFAULT NULL COMMENT '项目ID', + `tp_id` varchar(56) DEFAULT NULL COMMENT '线程池ID', + `tp_name` varchar(56) DEFAULT NULL COMMENT '线程池名称', + `core_size` int(11) DEFAULT NULL COMMENT '核心线程数', + `max_size` int(11) DEFAULT NULL COMMENT '最大线程数', + `queue_type` int(11) DEFAULT NULL COMMENT '队列类型...', + `capacity` int(11) DEFAULT NULL COMMENT '队列大小', + `rejected_type` int(11) DEFAULT NULL COMMENT '拒绝策略', + `keep_alive_time` int(11) DEFAULT NULL COMMENT '线程存活时间(秒)', + `execute_time_out` int(11) DEFAULT NULL COMMENT '执行超时时间(毫秒)', + `allow_core_thread_time_out` tinyint(1) DEFAULT NULL COMMENT '允许核心线程超时', + `content` longtext COMMENT '线程池内容', + `md5` varchar(32) NOT NULL COMMENT 'MD5', + `is_alarm` tinyint(1) DEFAULT NULL COMMENT '是否报警', + `capacity_alarm` int(11) DEFAULT NULL COMMENT '容量报警', + `liveness_alarm` int(11) DEFAULT NULL COMMENT '活跃度报警', + `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `del_flag` tinyint(1) DEFAULT NULL COMMENT '是否删除', + PRIMARY KEY (`id`), + UNIQUE KEY `id` (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='线程池配置表'; + +/******************************************/ +/* 数据库全名 = hippo4j_manager */ +/* 表名称 = inst_config */ +/******************************************/ +CREATE TABLE IF NOT EXISTS `inst_config` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', + `item_id` varchar(256) DEFAULT NULL COMMENT '项目ID', + `tp_id` varchar(56) DEFAULT NULL COMMENT '线程池ID', + `instance_id` varchar(256) DEFAULT NULL COMMENT '实例ID', + `content` longtext COMMENT '线程池内容', + `md5` varchar(32) NOT NULL COMMENT 'MD5', + `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`), + UNIQUE KEY `id` (`id`), + KEY `idx_config_instance` (`tenant_id`,`item_id`,`tp_id`,`instance_id`) USING BTREE, + KEY `idx_instance` (`instance_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='线程池配置实例表'; + +/******************************************/ +/* 数据库全名 = hippo4j_manager */ +/* 表名称 = his_run_data */ +/******************************************/ +CREATE TABLE IF NOT EXISTS `his_run_data` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `tenant_id` varchar(128) DEFAULT NULL COMMENT '租户ID', + `item_id` varchar(256) DEFAULT NULL COMMENT '项目ID', + `tp_id` varchar(56) DEFAULT NULL COMMENT '线程池ID', + `instance_id` varchar(256) DEFAULT NULL COMMENT '实例ID', + `current_load` bigint(20) DEFAULT NULL COMMENT '当前负载', + `peak_load` bigint(20) DEFAULT NULL COMMENT '峰值负载', + `pool_size` bigint(20) DEFAULT NULL COMMENT '线程数', + `active_size` bigint(20) DEFAULT NULL COMMENT '活跃线程数', + `queue_capacity` bigint(20) DEFAULT NULL COMMENT '队列容量', + `queue_size` bigint(20) DEFAULT NULL COMMENT '队列元素', + `queue_remaining_capacity` bigint(20) DEFAULT NULL COMMENT '队列剩余容量', + `completed_task_count` bigint(20) DEFAULT NULL COMMENT '已完成任务计数', + `reject_count` bigint(20) DEFAULT NULL COMMENT '拒绝次数', + `timestamp` bigint(20) DEFAULT NULL COMMENT '时间戳', + `gmt_create` datetime DEFAULT NULL COMMENT '创建时间', + `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间', + PRIMARY KEY (`id`), + KEY `idx_group_key` (`tenant_id`,`item_id`,`tp_id`,`instance_id`) USING BTREE, + KEY `idx_timestamp` (`timestamp`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='历史运行数据表'; + +/******************************************/ +/* 数据库全名 = hippo4j_manager */ +/* 表名称 = log_record_info */ +/******************************************/ +CREATE TABLE IF NOT EXISTS `log_record_info` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant` varchar(128) NOT NULL DEFAULT '' COMMENT '租户标识', + `biz_key` varchar(128) NOT NULL DEFAULT '' COMMENT '日志业务标识', + `biz_no` varchar(128) NOT NULL DEFAULT '' COMMENT '业务码标识', + `operator` varchar(64) NOT NULL DEFAULT '' COMMENT '操作人', + `action` varchar(128) NOT NULL DEFAULT '' COMMENT '动作', + `category` varchar(128) NOT NULL DEFAULT '' COMMENT '种类', + `detail` varchar(2048) NOT NULL DEFAULT '' COMMENT '修改的详细信息,可以为json', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`), + KEY `idx_biz_key` (`biz_key`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='操作日志表'; + +/******************************************/ +/* 数据库全名 = hippo4j_manager */ +/* 表名称 = user */ +/******************************************/ +CREATE TABLE IF NOT EXISTS `user` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `user_name` varchar(64) NOT NULL COMMENT '用户名', + `password` varchar(512) NOT NULL COMMENT '用户密码', + `role` varchar(50) NOT NULL COMMENT '角色', + `gmt_create` datetime NOT NULL COMMENT '创建时间', + `gmt_modified` datetime NOT NULL COMMENT '修改时间', + `del_flag` tinyint(1) NOT NULL COMMENT '是否删除', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; + +/******************************************/ +/* 数据库全名 = hippo4j_manager */ +/* 表名称 = role */ +/******************************************/ +CREATE TABLE IF NOT EXISTS `role` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `role` varchar(64) NOT NULL COMMENT '角色', + `user_name` varchar(64) NOT NULL COMMENT '用户名', + `gmt_create` datetime NOT NULL COMMENT '创建时间', + `gmt_modified` datetime NOT NULL COMMENT '修改时间', + `del_flag` tinyint(1) NOT NULL COMMENT '是否删除', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='角色表'; + +/******************************************/ +/* 数据库全名 = hippo4j_manager */ +/* 表名称 = permission */ +/******************************************/ +CREATE TABLE IF NOT EXISTS `permission` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `role` varchar(512) NOT NULL COMMENT '角色', + `resource` varchar(512) NOT NULL COMMENT '资源', + `action` varchar(8) NOT NULL COMMENT '读写权限', + `gmt_create` datetime NOT NULL COMMENT '创建时间', + `gmt_modified` datetime NOT NULL COMMENT '修改时间', + `del_flag` tinyint(1) NOT NULL COMMENT '是否删除', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='权限表'; + +/******************************************/ +/* 数据库全名 = hippo4j_manager */ +/* 表名称 = notify */ +/******************************************/ +CREATE TABLE IF NOT EXISTS `notify` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT '租户ID', + `item_id` varchar(128) NOT NULL COMMENT '项目ID', + `tp_id` varchar(128) NOT NULL COMMENT '线程池ID', + `platform` varchar(32) NOT NULL COMMENT '通知平台', + `type` varchar(32) NOT NULL COMMENT '通知类型', + `secret_key` varchar(256) NOT NULL COMMENT '密钥', + `interval` int(11) DEFAULT NULL COMMENT '报警间隔', + `receives` varchar(512) NOT NULL COMMENT '接收者', + `enable` tinyint(1) DEFAULT NULL COMMENT '是否启用', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `del_flag` tinyint(1) NOT NULL COMMENT '是否删除', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_notify_biz_key` (`tenant_id`,`item_id`,`tp_id`,`platform`,`type`,`del_flag`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='通知表'; + +/* 租户 */ +INSERT IGNORE INTO `tenant` (`id`, `tenant_id`, `tenant_name`, `tenant_desc`, `owner`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'prescription', '处方组', '负责维护处方服务, 包括不限于电子处方等业务', '谢良辰', '2021-10-24 13:42:11', '2021-10-24 13:42:11', '0'); + +/* 项目 */ +INSERT IGNORE INTO `item` (`id`, `tenant_id`, `item_id`, `item_name`, `item_desc`, `owner`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'prescription', 'dynamic-threadpool-example', '动态线程池示例项目', '动态线程池示例项目,对应 Hippo 项目的 example 模块', '马称', '2021-10-24 16:11:00', '2021-10-24 16:11:00', '0'); + +/* 线程池 */ +INSERT IGNORE INTO `config` (`id`, `tenant_id`, `item_id`, `tp_id`, `tp_name`, `core_size`, `max_size`, `queue_type`, `capacity`, `rejected_type`, `keep_alive_time`, `allow_core_thread_time_out`, `content`, `md5`, `is_alarm`, `capacity_alarm`, `liveness_alarm`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'prescription', 'dynamic-threadpool-example', 'message-consume', '示例消费者线程池', '5', '10', '9', '1024', '2', '9999', '0', '{\"tenantId\":\"prescription\",\"itemId\":\"dynamic-threadpool-example\",\"tpId\":\"message-consume\",\"coreSize\":5,\"maxSize\":10,\"queueType\":9,\"capacity\":1024,\"keepAliveTime\":9999,\"rejectedType\":2,\"isAlarm\":0,\"capacityAlarm\":80,\"livenessAlarm\":80,\"allowCoreThreadTimeOut\":0}', 'f80ea89044889fb6cec20e1a517f2ec3', '0', '80', '80', '2021-10-24 10:24:00', '2021-12-22 08:58:55', '0'), ('2', 'prescription', 'dynamic-threadpool-example', 'message-produce', '示例生产者线程池', '5', '15', '9', '1024', '1', '9999', '0', '{\"tenantId\":\"prescription\",\"itemId\":\"dynamic-threadpool-example\",\"tpId\":\"message-produce\",\"coreSize\":5,\"maxSize\":15,\"queueType\":9,\"capacity\":1024,\"keepAliveTime\":9999,\"rejectedType\":1,\"isAlarm\":0,\"capacityAlarm\":30,\"livenessAlarm\":30,\"allowCoreThreadTimeOut\":0}', '525e1429468bcfe98df7e70a75710051', '0', '30', '30', '2021-10-24 10:24:00', '2021-12-22 08:59:02', '0'); + +/* 用户 */ +INSERT IGNORE INTO `user` (`id`, `user_name`, `password`, `role`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'admin', '$2a$10$2KCqRbra0Yn2TwvkZxtfLuWuUP5KyCWsljO/ci5pLD27pqR3TV1vy', 'ROLE_ADMIN', '2021-11-04 21:35:17', '2021-11-15 23:04:59', '0'); + +/* 通知表 */ +INSERT IGNORE INTO `notify` (`id`, `tenant_id`, `item_id`, `tp_id`, `platform`, `type`, `secret_key`, `interval`, `receives`, `enable`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'prescription', 'dynamic-threadpool-example', 'message-produce', 'DING', 'CONFIG', '4a582a588a161d6e3a1bd1de7eea9ee9f562cdfcbe56b6e72029e7fd512b2eae', NULL, '15601166691', '0', '2021-11-18 22:49:50', '2021-11-18 22:49:50', '0'), ('2', 'prescription', 'dynamic-threadpool-example', 'message-produce', 'DING', 'ALARM', '4a582a588a161d6e3a1bd1de7eea9ee9f562cdfcbe56b6e72029e7fd512b2eae', '30', '15601166691', '0', '2021-11-18 22:50:06', '2021-11-18 22:50:06', '0');