diff --git a/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/util/SqlExe.java b/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/util/SqlExe.java
similarity index 99%
rename from kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/util/SqlExe.java
rename to kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/util/SqlExe.java
index db99ca7ab..4e4c7d5df 100644
--- a/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/util/SqlExe.java
+++ b/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/util/SqlExe.java
@@ -22,7 +22,7 @@
* 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
* 6.若您的项目无法满足以上几点,可申请商业授权
*/
-package cn.stylefeng.roses.kernel.db.init.util;
+package cn.stylefeng.roses.kernel.db.api.util;
import cn.hutool.db.DbUtil;
import cn.hutool.db.handler.RsHandler;
diff --git a/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/util/SqlUtil.java b/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/util/SqlUtil.java
similarity index 98%
rename from kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/util/SqlUtil.java
rename to kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/util/SqlUtil.java
index 97b0ece39..3e6238678 100644
--- a/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/util/SqlUtil.java
+++ b/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/util/SqlUtil.java
@@ -22,7 +22,7 @@
* 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
* 6.若您的项目无法满足以上几点,可申请商业授权
*/
-package cn.stylefeng.roses.kernel.db.init.util;
+package cn.stylefeng.roses.kernel.db.api.util;
import lombok.extern.slf4j.Slf4j;
diff --git a/kernel-d-db/db-sdk-init/pom.xml b/kernel-d-db/db-sdk-init/pom.xml
deleted file mode 100644
index bf4b8f532..000000000
--- a/kernel-d-db/db-sdk-init/pom.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
- 4.0.0
-
-
- cn.stylefeng.roses
- kernel-d-db
- 7.6.0
- ../pom.xml
-
-
- db-sdk-init
-
- jar
-
-
-
-
-
- cn.stylefeng.roses
- db-api
- ${roses.version}
-
-
-
-
-
- cn.stylefeng.roses
- auth-api
- ${roses.version}
-
-
-
-
- cn.stylefeng.roses
- ds-container-api
- ${roses.version}
-
-
-
-
diff --git a/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/actuator/DbInitializer.java b/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/actuator/DbInitializer.java
deleted file mode 100644
index d5eb74628..000000000
--- a/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/actuator/DbInitializer.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Copyright [2020-2030] [https://www.stylefeng.cn]
- *
- * Licensed 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.
- *
- * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
- *
- * 1.请不要删除和修改根目录下的LICENSE文件。
- * 2.请不要删除和修改Guns源码头部的版权声明。
- * 3.请保留源码和相关描述文件的项目出处,作者声明等。
- * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
- * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
- * 6.若您的项目无法满足以上几点,可申请商业授权
- */
-package cn.stylefeng.roses.kernel.db.init.actuator;
-
-import cn.hutool.core.util.ClassUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.ReflectUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.stylefeng.roses.kernel.db.api.exception.enums.DbInitEnum;
-import cn.stylefeng.roses.kernel.db.api.pojo.db.TableFieldInfo;
-import cn.stylefeng.roses.kernel.db.api.pojo.db.TableInfo;
-import cn.stylefeng.roses.kernel.db.api.pojo.druid.DruidProperties;
-import cn.stylefeng.roses.kernel.db.api.util.DatabaseUtil;
-import cn.stylefeng.roses.kernel.db.init.util.SqlExe;
-import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
-import com.alibaba.fastjson.JSON;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.extern.slf4j.Slf4j;
-
-import javax.annotation.Resource;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.List;
-
-
-/**
- * 数据库初始化,可初始化表,校验字段,校验表名是否存在等
- *
- * @author fengshuonan
- * @since 2018-07-29 22:05
- */
-@Slf4j
-@Getter
-@Setter
-public abstract class DbInitializer {
-
- /**
- * 如果为true,则数据库校验失败会抛出异常
- */
- private Boolean fieldValidatorExceptionFlag = true;
-
- public DbInitializer() {
-
- }
-
- public DbInitializer(Boolean fieldValidatorExceptionFlag) {
- this.fieldValidatorExceptionFlag = fieldValidatorExceptionFlag;
- }
-
- @Resource
- @Getter
- private DruidProperties druidProperties;
-
- /**
- * 初始化数据库
- *
- * @author fengshuonan
- * @since 2018/7/30 上午10:30
- */
- public void dbInit() {
-
- // 初始化表
- initTable();
-
- // 校验实体和对应表结构是否有不一致的
- fieldsValidate();
- }
-
- /**
- * 初始化表结构
- *
- * @author fengshuonan
- * @since 2018/7/30 上午10:24
- */
- private void initTable() {
-
- // 校验参数
- String tableName = this.getTableName();
- String tableInitSql = this.getTableInitSql();
- if (ObjectUtil.isEmpty(tableName) || ObjectUtil.isEmpty(tableInitSql)) {
- if (fieldValidatorExceptionFlag) {
- throw new ServiceException(DbInitEnum.INIT_TABLE_EMPTY_PARAMS);
- }
- }
-
- // 列出数据库中所有的表
- List tableInfos = DatabaseUtil.selectTables(druidProperties);
- boolean haveSmsTableFlag = false;
- for (TableInfo tableInfo : tableInfos) {
- if (tableInfo.getTableName().equalsIgnoreCase(tableName)) {
- haveSmsTableFlag = true;
- break;
- }
- }
-
- // 判断数据库中是否有这张表,如果没有就初始化
- if (!haveSmsTableFlag) {
- SqlExe.update(tableInitSql);
- log.info("初始化" + getTableName() + "成功!");
- }
-
- }
-
- /**
- * 校验实体和对应表结构是否有不一致的
- *
- * @author fengshuonan
- * @since 2018/7/30 上午10:24
- */
- private void fieldsValidate() {
-
- //检查数据库中的字段,是否和实体字段一致
- List tableFields = DatabaseUtil.getTableFields(druidProperties, getTableName());
- if (tableFields != null && !tableFields.isEmpty()) {
-
- //用于保存实体中不存在的字段的名称集合
- List fieldsNotInClass = new ArrayList<>();
-
- //反射获取字段的所有字段名称
- List classFields = this.getClassFields();
- for (TableFieldInfo tableField : tableFields) {
- String fieldName = tableField.getColumnName();
- if (!classFields.contains(fieldName.toLowerCase())) {
- fieldsNotInClass.add(fieldName);
- }
- }
-
- //如果集合不为空,代表有实体和数据库不一致的数据
- if (!fieldsNotInClass.isEmpty()) {
- log.error("实体中和数据库字段不一致的字段如下:" + JSON.toJSONString(fieldsNotInClass));
- if (fieldValidatorExceptionFlag) {
- throw new ServiceException(DbInitEnum.FIELD_VALIDATE_ERROR);
- }
- }
- }
- }
-
- /**
- * 反射获取类的所有字段
- *
- * @author fengshuonan
- * @since 2018/7/30 上午10:06
- */
- private List getClassFields() {
- Class> entityClass = this.getEntityClass();
- Field[] declaredFields = ClassUtil.getDeclaredFields(entityClass);
- ArrayList filedNamesUnderlineCase = new ArrayList<>();
- for (Field declaredField : declaredFields) {
- String fieldName = StrUtil.toUnderlineCase(declaredField.getName());
- filedNamesUnderlineCase.add(fieldName);
- }
-
- // 获取父类的所有字段名称
- Field[] superfields = ReflectUtil.getFields(entityClass.getSuperclass());
- for (Field superfield : superfields) {
- String fieldName = StrUtil.toUnderlineCase(superfield.getName());
- filedNamesUnderlineCase.add(fieldName);
- }
-
- return filedNamesUnderlineCase;
- }
-
- /**
- * 获取表的初始化语句
- *
- * @author stylefeng
- * @since 2018/7/29 22:10
- */
- protected abstract String getTableInitSql();
-
- /**
- * 获取表的名称
- *
- * @author stylefeng
- * @since 2018/7/29 22:10
- */
- protected abstract String getTableName();
-
- /**
- * 获取表对应的实体
- *
- * @author stylefeng
- * @since 2018/7/29 22:49
- */
- protected abstract Class> getEntityClass();
-
-}
diff --git a/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/listener/InitTableListener.java b/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/listener/InitTableListener.java
deleted file mode 100644
index 0de4fce0c..000000000
--- a/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/listener/InitTableListener.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright [2020-2030] [https://www.stylefeng.cn]
- *
- * Licensed 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.
- *
- * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
- *
- * 1.请不要删除和修改根目录下的LICENSE文件。
- * 2.请不要删除和修改Guns源码头部的版权声明。
- * 3.请保留源码和相关描述文件的项目出处,作者声明等。
- * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
- * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
- * 6.若您的项目无法满足以上几点,可申请商业授权
- */
-package cn.stylefeng.roses.kernel.db.init.listener;
-
-import cn.stylefeng.roses.kernel.db.init.actuator.DbInitializer;
-import cn.stylefeng.roses.kernel.rule.listener.ApplicationReadyListener;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.context.event.ApplicationReadyEvent;
-import org.springframework.core.Ordered;
-
-import java.util.Map;
-
-/**
- * 初始化 创建字典表
- *
- * @author wangzhongqiang
- * @since 2018/4/23 9:57
- */
-@Slf4j
-public class InitTableListener extends ApplicationReadyListener implements Ordered {
-
- @Override
- public void eventCallback(ApplicationReadyEvent event) {
- Map beansOfType = event.getApplicationContext().getBeansOfType(DbInitializer.class);
- for (Map.Entry entry : beansOfType.entrySet()) {
- DbInitializer value = entry.getValue();
- value.dbInit();
- }
- }
-
- @Override
- public int getOrder() {
- return Ordered.LOWEST_PRECEDENCE - 200;
- }
-
-}
diff --git a/kernel-d-db/db-spring-boot-starter/pom.xml b/kernel-d-db/db-spring-boot-starter/pom.xml
index 1544482cb..f8489aa3d 100644
--- a/kernel-d-db/db-spring-boot-starter/pom.xml
+++ b/kernel-d-db/db-spring-boot-starter/pom.xml
@@ -24,13 +24,6 @@
${roses.version}
-
-
- cn.stylefeng.roses
- db-sdk-init
- ${roses.version}
-
-
cn.stylefeng.roses
diff --git a/kernel-d-db/pom.xml b/kernel-d-db/pom.xml
index f0b2d4544..424179bf2 100644
--- a/kernel-d-db/pom.xml
+++ b/kernel-d-db/pom.xml
@@ -18,7 +18,6 @@
db-api
db-sdk-flyway
- db-sdk-init
db-sdk-mp
db-spring-boot-starter
diff --git a/kernel-s-customer/customer-business/pom.xml b/kernel-s-customer/customer-business/pom.xml
index b2b4d30d6..e27fa6339 100644
--- a/kernel-s-customer/customer-business/pom.xml
+++ b/kernel-s-customer/customer-business/pom.xml
@@ -80,14 +80,6 @@
${roses.version}
-
-
-
- cn.stylefeng.roses
- db-sdk-init
- ${roses.version}
-
-
diff --git a/kernel-s-dict/dict-business/pom.xml b/kernel-s-dict/dict-business/pom.xml
index 7ec112018..b346d874b 100644
--- a/kernel-s-dict/dict-business/pom.xml
+++ b/kernel-s-dict/dict-business/pom.xml
@@ -44,15 +44,7 @@
cn.stylefeng.roses
- validator-api
- ${roses.version}
-
-
-
-
-
- cn.stylefeng.roses
- db-sdk-init
+ validator-api-table-unique
${roses.version}
diff --git a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/init/DictInitializer.java b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/init/DictInitializer.java
deleted file mode 100644
index 537bbe65a..000000000
--- a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/init/DictInitializer.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright [2020-2030] [https://www.stylefeng.cn]
- *
- * Licensed 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.
- *
- * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
- *
- * 1.请不要删除和修改根目录下的LICENSE文件。
- * 2.请不要删除和修改Guns源码头部的版权声明。
- * 3.请保留源码和相关描述文件的项目出处,作者声明等。
- * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
- * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
- * 6.若您的项目无法满足以上几点,可申请商业授权
- */
-package cn.stylefeng.roses.kernel.dict.modular.init;
-
-import cn.stylefeng.roses.kernel.db.api.pojo.druid.DruidProperties;
-import cn.stylefeng.roses.kernel.db.api.sqladapter.AbstractSql;
-import cn.stylefeng.roses.kernel.db.init.actuator.DbInitializer;
-import cn.stylefeng.roses.kernel.dict.modular.entity.SysDict;
-import cn.stylefeng.roses.kernel.dict.modular.sqladapter.DictSql;
-import org.springframework.stereotype.Component;
-
-/**
- * 字典数据库初始化程序
- *
- * @author majianguo
- * @since 2020/12/9 上午11:02
- * @see AbstractSql
- */
-@Component
-public class DictInitializer extends DbInitializer {
-
- @Override
- protected String getTableInitSql() {
- DruidProperties druidProperties = getDruidProperties();
- return new DictSql().getSql(druidProperties.getUrl());
- }
-
- @Override
- protected String getTableName() {
- return "sys_dict";
- }
-
- @Override
- protected Class> getEntityClass() {
- return SysDict.class;
- }
-}
diff --git a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/init/DictTypeInitializer.java b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/init/DictTypeInitializer.java
deleted file mode 100644
index f53b19ee7..000000000
--- a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/init/DictTypeInitializer.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright [2020-2030] [https://www.stylefeng.cn]
- *
- * Licensed 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.
- *
- * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
- *
- * 1.请不要删除和修改根目录下的LICENSE文件。
- * 2.请不要删除和修改Guns源码头部的版权声明。
- * 3.请保留源码和相关描述文件的项目出处,作者声明等。
- * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
- * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
- * 6.若您的项目无法满足以上几点,可申请商业授权
- */
-package cn.stylefeng.roses.kernel.dict.modular.init;
-
-import cn.stylefeng.roses.kernel.db.api.pojo.druid.DruidProperties;
-import cn.stylefeng.roses.kernel.db.api.sqladapter.AbstractSql;
-import cn.stylefeng.roses.kernel.db.init.actuator.DbInitializer;
-import cn.stylefeng.roses.kernel.dict.modular.entity.SysDictType;
-import cn.stylefeng.roses.kernel.dict.modular.sqladapter.DictTypeSql;
-import org.springframework.stereotype.Component;
-
-/**
- * 字典数据库初始化程序
- *
- * @author majianguo
- * @since 2020/12/9 上午11:02
- * @see AbstractSql
- */
-@Component
-public class DictTypeInitializer extends DbInitializer {
-
- @Override
- protected String getTableInitSql() {
- DruidProperties druidProperties = getDruidProperties();
- return new DictTypeSql().getSql(druidProperties.getUrl());
- }
-
- @Override
- protected String getTableName() {
- return "sys_dict_type";
- }
-
- @Override
- protected Class> getEntityClass() {
- return SysDictType.class;
- }
-}