diff --git a/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/ConfigInitStrategyApi.java b/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/ConfigInitStrategyApi.java new file mode 100644 index 000000000..8929ccb83 --- /dev/null +++ b/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/ConfigInitStrategyApi.java @@ -0,0 +1,48 @@ +/* + * 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.config.api; + +import cn.stylefeng.roses.kernel.config.api.pojo.ConfigInitItem; + +import java.util.List; + +/** + * 配置初始化的策略 + * + * @author fengshuonan + * @date 2021/7/8 17:33 + */ +public interface ConfigInitStrategyApi { + + /** + * 获取需要被初始化的配置集合 + * + * @return 需要被初始化的配置集合 + * @author fengshuonan + * @date 2021/7/8 17:40 + */ + List getInitConfigs(); + +} diff --git a/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/pojo/ConfigInitItem.java b/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/pojo/ConfigInitItem.java new file mode 100644 index 000000000..8f9134699 --- /dev/null +++ b/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/pojo/ConfigInitItem.java @@ -0,0 +1,38 @@ +package cn.stylefeng.roses.kernel.config.api.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 初始化系统配置参数 + * + * @author fengshuonan + * @date 2021/7/8 16:38 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ConfigInitItem { + + /** + * 配置中文名称 + */ + private String configName; + + /** + * 配置编码 + */ + private String configCode; + + /** + * 配置的初始化值 + */ + private String configValue; + + /** + * 配置的描述 + */ + private String configDescription; + +} diff --git a/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/controller/SysConfigController.java b/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/controller/SysConfigController.java index f34262d11..e3bcaebc9 100644 --- a/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/controller/SysConfigController.java +++ b/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/controller/SysConfigController.java @@ -145,6 +145,17 @@ public class SysConfigController { return new SuccessResponseData(); } + /** + * 获取需要初始化的配置列表 + * + * @author fengshuonan + * @date 2021/7/8 16:36 + */ + @GetResource(name = "获取需要初始化的配置列表", path = "/sysConfig/getInitConfigList") + public ResponseData getInitConfigList() { + return new SuccessResponseData(sysConfigService.getInitConfigs()); + } + } diff --git a/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/service/SysConfigService.java b/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/service/SysConfigService.java index b0070dbe0..cb1dbc315 100644 --- a/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/service/SysConfigService.java +++ b/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/service/SysConfigService.java @@ -24,6 +24,7 @@ */ package cn.stylefeng.roses.kernel.config.modular.service; +import cn.stylefeng.roses.kernel.config.api.pojo.ConfigInitItem; import cn.stylefeng.roses.kernel.config.api.pojo.ConfigInitRequest; import cn.stylefeng.roses.kernel.config.modular.entity.SysConfig; import cn.stylefeng.roses.kernel.config.modular.param.SysConfigParam; @@ -114,4 +115,12 @@ public interface SysConfigService extends IService { */ Boolean getInitConfigFlag(); + /** + * 获取初始化的配置列表 + * + * @author fengshuonan + * @date 2021/7/8 17:49 + */ + List getInitConfigs(); + } diff --git a/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/service/impl/SysConfigServiceImpl.java b/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/service/impl/SysConfigServiceImpl.java index 93af7af9f..a69071406 100644 --- a/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/service/impl/SysConfigServiceImpl.java +++ b/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/service/impl/SysConfigServiceImpl.java @@ -28,9 +28,11 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.stylefeng.roses.kernel.config.api.ConfigInitStrategyApi; import cn.stylefeng.roses.kernel.config.api.context.ConfigContext; import cn.stylefeng.roses.kernel.config.api.exception.ConfigException; import cn.stylefeng.roses.kernel.config.api.exception.enums.ConfigExceptionEnum; +import cn.stylefeng.roses.kernel.config.api.pojo.ConfigInitItem; import cn.stylefeng.roses.kernel.config.api.pojo.ConfigInitRequest; import cn.stylefeng.roses.kernel.config.modular.entity.SysConfig; import cn.stylefeng.roses.kernel.config.modular.mapper.SysConfigMapper; @@ -48,6 +50,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.List; import java.util.Map; @@ -60,6 +63,9 @@ import java.util.Map; @Service public class SysConfigServiceImpl extends ServiceImpl implements SysConfigService { + @Resource + private ConfigInitStrategyApi configInitStrategyApi; + @Override @Transactional(rollbackFor = Exception.class) public void add(SysConfigParam sysConfigParam) { @@ -189,6 +195,11 @@ public class SysConfigServiceImpl extends ServiceImpl getInitConfigs() { + return configInitStrategyApi.getInitConfigs(); + } + /** * 获取系统参数配置 * diff --git a/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/strategy/DefaultStrategyImpl.java b/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/strategy/DefaultStrategyImpl.java new file mode 100644 index 000000000..73dbf2363 --- /dev/null +++ b/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/strategy/DefaultStrategyImpl.java @@ -0,0 +1,28 @@ +package cn.stylefeng.roses.kernel.config.modular.strategy; + +import cn.hutool.core.util.RandomUtil; +import cn.stylefeng.roses.kernel.config.api.ConfigInitStrategyApi; +import cn.stylefeng.roses.kernel.config.api.pojo.ConfigInitItem; + +import java.util.ArrayList; +import java.util.List; + +/** + * 默认的初始化配置策略,初始化系统一些必要的参数 + * + * @author fengshuonan + * @date 2021/7/8 17:47 + */ +public class DefaultStrategyImpl implements ConfigInitStrategyApi { + + @Override + public List getInitConfigs() { + ArrayList configInitItems = new ArrayList<>(); + configInitItems.add(new ConfigInitItem("JWT安全码", "SYS_JWT_SECRET", RandomUtil.randomString(20), "jwt-spring-boot-starter模块的秘钥,非认证用的jwt秘钥,默认20位随机字符串")); + configInitItems.add(new ConfigInitItem("JWT过期时间", "SYS_JWT_TIMEOUT_SECONDS", "" + 60 * 60 * 24, "jwt-spring-boot-starter模块的秘钥过期时间,默认1天")); + configInitItems.add(new ConfigInitItem("Linux本地文件保存路径", "SYS_LOCAL_FILE_SAVE_PATH_LINUX", "/tmp/tempFilePath", "本地文件存储的路径,如果没有用本地文件存储,可忽略此配置")); + configInitItems.add(new ConfigInitItem("Windows本地文件保存路径", "SYS_JWT_SECRET", "D:\\tempFilePath", "本地文件存储的路径,如果没有用本地文件存储,可忽略此配置")); + return configInitItems; + } + +} diff --git a/kernel-d-config/config-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/config/starter/GunsSysConfigAutoConfiguration.java b/kernel-d-config/config-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/config/starter/GunsSysConfigAutoConfiguration.java index 65e9ad132..a97dbf2fa 100644 --- a/kernel-d-config/config-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/config/starter/GunsSysConfigAutoConfiguration.java +++ b/kernel-d-config/config-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/config/starter/GunsSysConfigAutoConfiguration.java @@ -24,6 +24,10 @@ */ package cn.stylefeng.roses.kernel.config.starter; +import cn.stylefeng.roses.kernel.config.api.ConfigInitStrategyApi; +import cn.stylefeng.roses.kernel.config.modular.strategy.DefaultStrategyImpl; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** @@ -35,5 +39,16 @@ import org.springframework.context.annotation.Configuration; @Configuration public class GunsSysConfigAutoConfiguration { + /** + * 默认的配置初始化api + * + * @author fengshuonan + * @date 2021/7/8 17:48 + */ + @Bean + @ConditionalOnMissingBean(ConfigInitStrategyApi.class) + public ConfigInitStrategyApi configInitStrategyApi() { + return new DefaultStrategyImpl(); + } }