From 0259e4ffe5d1620981a42e587dba73e2b3c373da Mon Sep 17 00:00:00 2001 From: shiyidong Date: Thu, 13 May 2021 02:47:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B2=A1=E6=9C=89=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E7=9A=84=E6=97=B6=E5=80=99=E6=8F=92=E5=85=A5=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/InfConfigController.java | 11 ++- .../convert/config/InfConfigConvert.java | 3 + .../dal/dataobject/config/InfConfigDO.java | 3 +- .../config/impl/InfConfigServiceImpl.java | 31 ++++++--- .../service/config/InfConfigServiceTest.java | 6 +- .../errorcode/SysErrorCodeServiceTest.java | 8 +-- .../src/components/LogSwitch/index.vue | 68 +++++++++++++++++++ yudao-admin-ui/src/main.js | 4 ++ yudao-admin-ui/src/utils/constants.js | 4 +- .../src/views/infra/apiAccessLog/index.vue | 14 ++-- .../src/views/infra/apiErrorLog/index.vue | 4 ++ .../src/views/system/operatelog/index.vue | 4 ++ yudao-framework/yudao-common/pom.xml | 5 ++ .../config/enums/ConfigGroupConstants.java | 13 ++++ .../common/config/enums/InfConfigEnum.java | 50 ++++++++++++++ .../config/enums}/InfConfigTypeEnum.java | 2 +- .../common/config/util/InfConfigUtil.java | 45 ++++++++++++ .../operatelog/core/aop/OperateLogAspect.java | 17 ++--- .../apollo/internals/DBConfigRepository.java | 3 +- .../core/filter/ApiAccessLogFilter.java | 10 +-- 20 files changed, 251 insertions(+), 54 deletions(-) create mode 100644 yudao-admin-ui/src/components/LogSwitch/index.vue create mode 100644 yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/config/enums/ConfigGroupConstants.java create mode 100644 yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/config/enums/InfConfigEnum.java rename {yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/enums/config => yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/config/enums}/InfConfigTypeEnum.java (80%) create mode 100644 yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/config/util/InfConfigUtil.java diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/InfConfigController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/InfConfigController.java index d23a64c6e8..fe2a22aded 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/InfConfigController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/InfConfigController.java @@ -1,10 +1,11 @@ package cn.iocoder.yudao.adminserver.modules.infra.controller.config; -import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.*; import cn.iocoder.yudao.adminserver.modules.infra.convert.config.InfConfigConvert; import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.config.InfConfigDO; import cn.iocoder.yudao.adminserver.modules.infra.service.config.InfConfigService; +import cn.iocoder.yudao.framework.common.config.enums.InfConfigEnum; +import cn.iocoder.yudao.framework.common.config.util.InfConfigUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; @@ -22,6 +23,7 @@ import javax.validation.Valid; import javax.validation.constraints.NotBlank; import java.io.IOException; import java.util.List; +import java.util.Objects; import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.CONFIG_GET_VALUE_ERROR_IF_SENSITIVE; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -85,7 +87,12 @@ public class InfConfigController { public CommonResult getConfigKey(@RequestParam("key") String key) { InfConfigDO config = configService.getConfigByKey(key); if (config == null) { - return null; + InfConfigEnum initConfigEnum = InfConfigUtil.getInitConfigEnum(key); + if(Objects.nonNull(initConfigEnum)){ + config = InfConfigConvert.INSTANCE.convert(initConfigEnum); + }else{ + return null; + } } if (config.getSensitive()) { throw exception(CONFIG_GET_VALUE_ERROR_IF_SENSITIVE); diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/config/InfConfigConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/config/InfConfigConvert.java index 0b076b6e0e..2002afe27f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/config/InfConfigConvert.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/config/InfConfigConvert.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.adminserver.modules.infra.convert.config; +import cn.iocoder.yudao.framework.common.config.enums.InfConfigEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigCreateReqVO; import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigExcelVO; @@ -24,6 +25,8 @@ public interface InfConfigConvert { InfConfigDO convert(InfConfigUpdateReqVO bean); + InfConfigDO convert(InfConfigEnum bean); + List convertList(List list); } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/config/InfConfigDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/config/InfConfigDO.java index 119d069d95..3bdc9d9039 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/config/InfConfigDO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/config/InfConfigDO.java @@ -1,7 +1,6 @@ package cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.config; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.adminserver.modules.infra.enums.config.InfConfigTypeEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -46,7 +45,7 @@ public class InfConfigDO extends BaseDO { /** * 参数类型 * - * 枚举 {@link InfConfigTypeEnum} + * 枚举 {@link cn.iocoder.yudao.framework.common.config.enums.InfConfigTypeEnum} */ @TableField("`type`") private Integer type; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/impl/InfConfigServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/impl/InfConfigServiceImpl.java index 7578e8d529..acd9d9a663 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/impl/InfConfigServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/impl/InfConfigServiceImpl.java @@ -1,24 +1,25 @@ package cn.iocoder.yudao.adminserver.modules.infra.service.config.impl; -import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigCreateReqVO; import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigExportReqVO; import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigPageReqVO; import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigUpdateReqVO; import cn.iocoder.yudao.adminserver.modules.infra.convert.config.InfConfigConvert; -import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.config.InfConfigMapper; import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.config.InfConfigDO; -import cn.iocoder.yudao.adminserver.modules.infra.enums.config.InfConfigTypeEnum; +import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.config.InfConfigMapper; import cn.iocoder.yudao.adminserver.modules.infra.mq.producer.config.InfConfigProducer; import cn.iocoder.yudao.adminserver.modules.infra.service.config.InfConfigService; +import cn.iocoder.yudao.framework.common.config.enums.InfConfigEnum; +import cn.iocoder.yudao.framework.common.config.enums.InfConfigTypeEnum; +import cn.iocoder.yudao.framework.common.config.util.InfConfigUtil; +import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; import com.google.common.annotations.VisibleForTesting; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; - import java.util.List; import java.util.Objects; @@ -66,12 +67,22 @@ public class InfConfigServiceImpl implements InfConfigService { public void updateValueByKey(String key, String value) { InfConfigDO config = configMapper.selectByKey(key); if (Objects.isNull(config)) { - throw ServiceExceptionUtil.exception(CONFIG_NOT_EXISTS); + InfConfigEnum initConfigEnum = InfConfigUtil.getInitConfigEnum(key); + if(Objects.isNull(initConfigEnum)){ + throw ServiceExceptionUtil.exception(CONFIG_NOT_EXISTS); + }else{ + //初始化配置 + InfConfigDO convert = InfConfigConvert.INSTANCE.convert(initConfigEnum); + convert.setValue(value); + configMapper.insert(convert); + } + }else { + InfConfigDO updateDo = new InfConfigDO(); + updateDo.setId(config.getId()); + updateDo.setValue(value); + configMapper.updateById(updateDo); } - InfConfigDO updateDo = new InfConfigDO(); - updateDo.setId(config.getId()); - updateDo.setValue(value); - configMapper.updateById(updateDo); + // 发送刷新消息 configProducer.sendConfigRefreshMessage(); } diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/InfConfigServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/InfConfigServiceTest.java index 4ef105df3f..9c35b24bc8 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/InfConfigServiceTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/InfConfigServiceTest.java @@ -1,16 +1,16 @@ package cn.iocoder.yudao.adminserver.modules.infra.service.config; import cn.iocoder.yudao.adminserver.BaseDbUnitTest; -import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigCreateReqVO; import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigExportReqVO; import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigPageReqVO; import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigUpdateReqVO; import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.config.InfConfigDO; import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.config.InfConfigMapper; -import cn.iocoder.yudao.adminserver.modules.infra.enums.config.InfConfigTypeEnum; import cn.iocoder.yudao.adminserver.modules.infra.mq.producer.config.InfConfigProducer; import cn.iocoder.yudao.adminserver.modules.infra.service.config.impl.InfConfigServiceImpl; +import cn.iocoder.yudao.framework.common.config.enums.InfConfigTypeEnum; +import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; import org.junit.jupiter.api.Test; @@ -23,9 +23,9 @@ import java.util.function.Consumer; import static cn.hutool.core.util.RandomUtil.randomEle; import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.*; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.times; diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/errorcode/SysErrorCodeServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/errorcode/SysErrorCodeServiceTest.java index f5dbc71089..9fb8880e5b 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/errorcode/SysErrorCodeServiceTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/errorcode/SysErrorCodeServiceTest.java @@ -1,9 +1,6 @@ package cn.iocoder.yudao.adminserver.modules.system.service.errorcode; import cn.iocoder.yudao.adminserver.BaseDbUnitTest; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO; -import cn.iocoder.yudao.adminserver.modules.infra.enums.config.InfConfigTypeEnum; import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeCreateReqVO; import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeExportReqVO; import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodePageReqVO; @@ -12,6 +9,9 @@ import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.errorcode.SysE import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.errorcode.SysErrorCodeMapper; import cn.iocoder.yudao.adminserver.modules.system.enums.errorcode.SysErrorCodeTypeEnum; import cn.iocoder.yudao.adminserver.modules.system.service.errorcode.impl.SysErrorCodeServiceImpl; +import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO; +import cn.iocoder.yudao.framework.common.config.enums.InfConfigTypeEnum; +import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; import org.assertj.core.util.Lists; @@ -27,9 +27,9 @@ import java.util.function.Consumer; import static cn.hutool.core.util.RandomUtil.randomEle; import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.ERROR_CODE_DUPLICATE; import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.ERROR_CODE_NOT_EXISTS; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; import static org.junit.jupiter.api.Assertions.*; diff --git a/yudao-admin-ui/src/components/LogSwitch/index.vue b/yudao-admin-ui/src/components/LogSwitch/index.vue new file mode 100644 index 0000000000..5d5836185d --- /dev/null +++ b/yudao-admin-ui/src/components/LogSwitch/index.vue @@ -0,0 +1,68 @@ + + + diff --git a/yudao-admin-ui/src/main.js b/yudao-admin-ui/src/main.js index 78ab14f775..eaf5307013 100644 --- a/yudao-admin-ui/src/main.js +++ b/yudao-admin-ui/src/main.js @@ -33,6 +33,9 @@ import { import Pagination from "@/components/Pagination"; // 自定义表格工具扩展 import RightToolbar from "@/components/RightToolbar" + +import LogSwitch from "@/components/LogSwitch"; + // 代码高亮插件 // import hljs from 'highlight.js' // import 'highlight.js/styles/github-gist.css' @@ -73,6 +76,7 @@ Vue.prototype.msgInfo = function (msg) { // 全局组件挂载 Vue.component('Pagination', Pagination) Vue.component('RightToolbar', RightToolbar) +Vue.component('LogSwitch', LogSwitch) Vue.use(permission) // Vue.use(hljs.vuePlugin); diff --git a/yudao-admin-ui/src/utils/constants.js b/yudao-admin-ui/src/utils/constants.js index 36f24907b2..4c9ed5bdaa 100644 --- a/yudao-admin-ui/src/utils/constants.js +++ b/yudao-admin-ui/src/utils/constants.js @@ -72,6 +72,6 @@ export const InfApiErrorLogProcessStatusEnum = { */ export const InfConfigKeyEnum = { API_LOG_KEY: 'yudao.web.api.log.enable', - DONE: 1, - IGNORE: 2, + API_ERROR_LOG_KEY: 'yudao.web.api.error.log.enable', + OPERATE_LOG_KEY: 'yudao.operate.log.enable', } \ No newline at end of file diff --git a/yudao-admin-ui/src/views/infra/apiAccessLog/index.vue b/yudao-admin-ui/src/views/infra/apiAccessLog/index.vue index 8fee22d00d..d620e321b9 100644 --- a/yudao-admin-ui/src/views/infra/apiAccessLog/index.vue +++ b/yudao-admin-ui/src/views/infra/apiAccessLog/index.vue @@ -36,16 +36,14 @@ - - - - 导出 + + + @@ -120,12 +118,8 @@