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 b0ff2ca9ad..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,13 +1,15 @@ package cn.iocoder.yudao.adminserver.modules.infra.controller.config; -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; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; 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; +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; @@ -18,13 +20,15 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; 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; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; -import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.CONFIG_GET_VALUE_ERROR_IF_SENSITIVE; @Api(tags = "参数配置") @RestController @@ -67,13 +71,28 @@ public class InfConfigController { return success(InfConfigConvert.INSTANCE.convert(configService.getConfig(id))); } + + @PutMapping("/update-value-by-key") + @ApiOperation(value = "根据参数键名修改参数值") + @PreAuthorize("@ss.hasPermission('infra:config:updateValueByKey')") + public CommonResult updateValueByKey(@NotBlank(message = "key 不允许为空") String key, String value) { + configService.updateValueByKey(key,value); + return success(true); + } + + @GetMapping(value = "/get-value-by-key") @ApiOperation(value = "根据参数键名查询参数值", notes = "敏感配置,不允许返回给前端") @ApiImplicitParam(name = "key", value = "参数键", required = true, example = "yunai.biz.username", dataTypeClass = String.class) 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/dal/mysql/config/InfConfigMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/config/InfConfigMapper.java index 546ef843ac..59306dab22 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/config/InfConfigMapper.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/config/InfConfigMapper.java @@ -1,11 +1,11 @@ package cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.config; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; 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.dal.dataobject.config.InfConfigDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.apache.ibatis.annotations.Mapper; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/InfConfigService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/InfConfigService.java index 2430c329b0..e004f6b45a 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/InfConfigService.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/InfConfigService.java @@ -32,6 +32,13 @@ public interface InfConfigService { */ void updateConfig(@Valid InfConfigUpdateReqVO reqVO); + /** + * 根据key修改value + * @param key + * @param value + */ + void updateValueByKey(String key,String value); + /** * 删除参数配置 * @@ -72,4 +79,6 @@ public interface InfConfigService { List getConfigList(@Valid InfConfigExportReqVO reqVO); + + } 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 13bc2aafc0..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,25 +1,27 @@ 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; import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.*; @@ -61,6 +63,30 @@ public class InfConfigServiceImpl implements InfConfigService { configProducer.sendConfigRefreshMessage(); } + @Override + public void updateValueByKey(String key, String value) { + InfConfigDO config = configMapper.selectByKey(key); + if (Objects.isNull(config)) { + 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); + } + + // 发送刷新消息 + configProducer.sendConfigRefreshMessage(); + } + @Override public void deleteConfig(Long id) { // 校验配置存在 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/api/infra/config.js b/yudao-admin-ui/src/api/infra/config.js index eec1517796..284e5ec5ce 100644 --- a/yudao-admin-ui/src/api/infra/config.js +++ b/yudao-admin-ui/src/api/infra/config.js @@ -43,6 +43,15 @@ export function updateConfig(data) { }) } +// 修改参数配置 +export function updateValueByKey(data) { + return request({ + url: '/infra/config/update-value-by-key', + method: 'put', + data: data + }) +} + // 删除参数配置 export function delConfig(configId) { return request({ 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 d9978300cb..eaf5307013 100644 --- a/yudao-admin-ui/src/main.js +++ b/yudao-admin-ui/src/main.js @@ -33,11 +33,14 @@ 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' import {DICT_TYPE, getDictDataLabel, getDictDatas} from "@/utils/dict"; - +import { InfConfigKeyEnum } from '@/utils/constants'; // 全局方法挂载 Vue.prototype.getDicts = getDicts Vue.prototype.getConfigKey = getConfigKey @@ -49,6 +52,7 @@ Vue.prototype.selectDictLabel = selectDictLabel Vue.prototype.getDictDatas = getDictDatas Vue.prototype.getDictDataLabel = getDictDataLabel Vue.prototype.DICT_TYPE = DICT_TYPE +Vue.prototype.InfConfigKeyEnum = InfConfigKeyEnum Vue.prototype.download = download Vue.prototype.downloadExcel = downloadExcel Vue.prototype.downloadWord = downloadWord @@ -72,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 43bd9c4724..4c9ed5bdaa 100644 --- a/yudao-admin-ui/src/utils/constants.js +++ b/yudao-admin-ui/src/utils/constants.js @@ -66,3 +66,12 @@ export const InfApiErrorLogProcessStatusEnum = { DONE: 1, // 已处理 IGNORE: 2, // 已忽略 } + +/** + * + */ +export const InfConfigKeyEnum = { + API_LOG_KEY: 'yudao.web.api.log.enable', + 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 abe0fd44f6..d620e321b9 100644 --- a/yudao-admin-ui/src/views/infra/apiAccessLog/index.vue +++ b/yudao-admin-ui/src/views/infra/apiAccessLog/index.vue @@ -40,6 +40,10 @@ 导出 + + + @@ -114,11 +118,8 @@ + \ No newline at end of file diff --git a/yudao-admin-ui/src/views/infra/apiErrorLog/index.vue b/yudao-admin-ui/src/views/infra/apiErrorLog/index.vue index 97d6148219..f3f43afed6 100644 --- a/yudao-admin-ui/src/views/infra/apiErrorLog/index.vue +++ b/yudao-admin-ui/src/views/infra/apiErrorLog/index.vue @@ -40,6 +40,10 @@ 导出 + + + diff --git a/yudao-admin-ui/src/views/system/operatelog/index.vue b/yudao-admin-ui/src/views/system/operatelog/index.vue index 7131654bf5..739b3c4c16 100644 --- a/yudao-admin-ui/src/views/system/operatelog/index.vue +++ b/yudao-admin-ui/src/views/system/operatelog/index.vue @@ -36,6 +36,10 @@ 导出 + + + diff --git a/yudao-framework/yudao-common/pom.xml b/yudao-framework/yudao-common/pom.xml index ad84d6a24e..b335bfe970 100644 --- a/yudao-framework/yudao-common/pom.xml +++ b/yudao-framework/yudao-common/pom.xml @@ -32,6 +32,11 @@ spring-aop provided + + org.springframework + spring-context + provided + org.aspectj aspectjweaver diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/config/enums/ConfigGroupConstants.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/config/enums/ConfigGroupConstants.java new file mode 100644 index 0000000000..6b9cfdf910 --- /dev/null +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/config/enums/ConfigGroupConstants.java @@ -0,0 +1,13 @@ +package cn.iocoder.yudao.framework.common.config.enums; + +/** + * @author syidong@aliyun.com + * @date 2021/5/12 23:07 + */ +public interface ConfigGroupConstants { + /** + * log 开关组名 + */ + String CONFIG_LOG_SWITCH_KEY_GROUP = "config.log.switch.key.group"; + +} diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/config/enums/InfConfigEnum.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/config/enums/InfConfigEnum.java new file mode 100644 index 0000000000..a0d7e87769 --- /dev/null +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/config/enums/InfConfigEnum.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.framework.common.config.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + + +/** + * @author syidong@aliyun.com + * @date 2021/5/12 22:57 + */ +@AllArgsConstructor +@Getter +public enum InfConfigEnum { + + YUDAO_WEB_API_LOG_ENABLE_CONFIG("是否开启apiLog key" + ,"yudao.web.api.log.enable" + ,Boolean.TRUE.toString() + ,ConfigGroupConstants.CONFIG_LOG_SWITCH_KEY_GROUP + ,InfConfigTypeEnum.SYSTEM.getType() + ,Boolean.FALSE + ,"api log 是否开启配置") + ,YUDAO_WEB_API_ERROR_LOG_ENABLE_CONFIG("是否开启api error log 日志 key" + ,"yudao.web.api.error.log.enable" + ,Boolean.TRUE.toString() + ,ConfigGroupConstants.CONFIG_LOG_SWITCH_KEY_GROUP + ,InfConfigTypeEnum.SYSTEM.getType() + ,Boolean.FALSE + ,"api error log 是否开启配置") + ,YUDAO_OPERATE_LOG_ENABLE_CONFIG("是否开启operateLog key" + ,"yudao.operate.log.enable" + ,Boolean.TRUE.toString() + ,ConfigGroupConstants.CONFIG_LOG_SWITCH_KEY_GROUP + ,InfConfigTypeEnum.SYSTEM.getType() + ,Boolean.FALSE + ,"api error log 是否开启配置"); + + private final String name; + + private final String key; + + private final String value; + + private final String group; + + private Integer type; + + private Boolean sensitive; + + private String remark; +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/enums/config/InfConfigTypeEnum.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/config/enums/InfConfigTypeEnum.java similarity index 80% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/enums/config/InfConfigTypeEnum.java rename to yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/config/enums/InfConfigTypeEnum.java index 6e9fd4d35d..86c01bcc87 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/enums/config/InfConfigTypeEnum.java +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/config/enums/InfConfigTypeEnum.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.adminserver.modules.infra.enums.config; +package cn.iocoder.yudao.framework.common.config.enums; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/config/util/InfConfigUtil.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/config/util/InfConfigUtil.java new file mode 100644 index 0000000000..4d6f25fbbb --- /dev/null +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/config/util/InfConfigUtil.java @@ -0,0 +1,45 @@ +package cn.iocoder.yudao.framework.common.config.util; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.spring.SpringUtil; +import cn.iocoder.yudao.framework.common.config.enums.InfConfigEnum; + +import java.util.HashMap; + +import static cn.iocoder.yudao.framework.common.config.enums.InfConfigEnum.*; + +/** + * @author syidong@aliyun.com + * @date 2021/5/13 0:26 + */ +public class InfConfigUtil { + + private static final HashMap INIT_CONFIG = new HashMap<>(); + + static { + INIT_CONFIG.put(YUDAO_WEB_API_LOG_ENABLE_CONFIG.getKey(),YUDAO_WEB_API_LOG_ENABLE_CONFIG); + INIT_CONFIG.put(YUDAO_WEB_API_ERROR_LOG_ENABLE_CONFIG.getKey(),YUDAO_WEB_API_ERROR_LOG_ENABLE_CONFIG); + INIT_CONFIG.put(YUDAO_OPERATE_LOG_ENABLE_CONFIG.getKey(),YUDAO_OPERATE_LOG_ENABLE_CONFIG); + } + + public static InfConfigEnum getInitConfigEnum(String key) { + return INIT_CONFIG.get(key); + } + + public static boolean isEnable(String key) { + String enable = SpringUtil.getProperty(key); + return Boolean.parseBoolean(StrUtil.isBlank(enable)?Boolean.TRUE.toString():enable); + } + + public static boolean apiLogEnable() { + return isEnable(YUDAO_WEB_API_LOG_ENABLE_CONFIG.getKey()); + } + + public static boolean apiErrorLogEnable() { + return isEnable(YUDAO_WEB_API_ERROR_LOG_ENABLE_CONFIG.getKey()); + } + + public static boolean operateLogEnable() { + return isEnable(YUDAO_OPERATE_LOG_ENABLE_CONFIG.getKey()); + } +} diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/ConfigKeyConstants.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/ConfigKeyConstants.java new file mode 100644 index 0000000000..97bbd65b86 --- /dev/null +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/ConfigKeyConstants.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.framework.common.enums; + +/** + * @author syidong@aliyun.com + * @date 2021/5/10 23:40 + */ +public interface ConfigKeyConstants { + + /** + * 是否开启apiLog key + */ + String YUDAO_WEB_API_LOG_ENABLE_KEY = "yudao.web.api.log.enable"; + + /** + * 是否开启api error log 日志 key + */ + String YUDAO_WEB_API_ERROR_LOG_ENABLE_KEY = "yudao.web.api.error.og.enable"; + + /** + * 是否开启operateLog key + */ + String YUDAO_OPERATE_LOG_KEY = "yudao.operateLog.enable"; + + /** + * spring value Key + */ + String SPRING_YUDAO_OPERATE_LOG_KEY = "${"+YUDAO_OPERATE_LOG_KEY+":true}"; +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelog/core/aop/OperateLogAspect.java b/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelog/core/aop/OperateLogAspect.java index a7f23a3912..7d9bf50bf3 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelog/core/aop/OperateLogAspect.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelog/core/aop/OperateLogAspect.java @@ -4,6 +4,8 @@ import cn.hutool.core.exceptions.ExceptionUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.servlet.ServletUtil; +import cn.iocoder.yudao.framework.common.config.util.InfConfigUtil; +import cn.iocoder.yudao.framework.common.enums.ConfigKeyConstants; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO; @@ -21,6 +23,7 @@ import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.beans.factory.annotation.Value; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -86,6 +89,10 @@ public class OperateLogAspect { try { // 执行原有方法 Object result = joinPoint.proceed(); + // 是否记录操作日志 + if(!InfConfigUtil.operateLogEnable()){ + return result; + } // 记录正常执行时的操作日志 this.log(joinPoint, operateLog, apiOperation, startTime, result, null); return result; diff --git a/yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/internals/DBConfigRepository.java b/yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/internals/DBConfigRepository.java index c88038da97..03bc18a8dd 100644 --- a/yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/internals/DBConfigRepository.java +++ b/yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/internals/DBConfigRepository.java @@ -135,7 +135,8 @@ public class DBConfigRepository extends AbstractConfigRepository { private Properties buildProperties(List configs) { Properties properties = propertiesFactory.getPropertiesInstance(); - configs.stream().filter(ConfigRespDTO::getDeleted) // 过滤掉被删除的配置 + // 过滤掉被删除的配置 + configs.stream().filter(item -> !item.getDeleted()) .forEach(config -> properties.put(config.getKey(), config.getValue())); return properties; } diff --git a/yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/spring/boot/ApolloApplicationContextInitializer.java b/yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/spring/boot/ApolloApplicationContextInitializer.java index b68ca76d61..e30fc24c09 100644 --- a/yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/spring/boot/ApolloApplicationContextInitializer.java +++ b/yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/spring/boot/ApolloApplicationContextInitializer.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.framework.apollo.spring.boot; import cn.iocoder.yudao.framework.apollo.core.ConfigConsts; +import com.ctrip.framework.apollo.util.ConfigUtil; import com.google.common.base.Strings; import org.springframework.boot.SpringApplication; import org.springframework.boot.env.EnvironmentPostProcessor; diff --git a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/filter/ApiAccessLogFilter.java b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/filter/ApiAccessLogFilter.java index 49f54fe259..f8796a31b1 100644 --- a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/filter/ApiAccessLogFilter.java +++ b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/filter/ApiAccessLogFilter.java @@ -2,17 +2,21 @@ package cn.iocoder.yudao.framework.apilog.core.filter; import cn.hutool.core.exceptions.ExceptionUtil; import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.extra.servlet.ServletUtil; -import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.hutool.extra.spring.SpringUtil; import cn.iocoder.yudao.framework.apilog.core.service.ApiAccessLogFrameworkService; import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateDTO; -import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; -import cn.iocoder.yudao.framework.web.config.WebProperties; -import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; +import cn.iocoder.yudao.framework.common.config.util.InfConfigUtil; +import cn.iocoder.yudao.framework.common.enums.ConfigKeyConstants; +import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.util.date.DateUtils; import cn.iocoder.yudao.framework.common.util.json.JsonUtils; +import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; +import cn.iocoder.yudao.framework.web.config.WebProperties; +import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.filter.OncePerRequestFilter; @@ -25,6 +29,7 @@ import java.io.IOException; import java.util.Date; import java.util.Map; + /** * API 访问日志 Filter * @@ -57,11 +62,17 @@ public class ApiAccessLogFilter extends OncePerRequestFilter { try { // 继续过滤器 filterChain.doFilter(request, response); - // 正常执行,记录日志 - createApiAccessLog(request, beginTim, queryString, requestBody, null); + // api log 开关 + if(InfConfigUtil.apiLogEnable()){ + // 正常执行,记录日志 + createApiAccessLog(request, beginTim, queryString, requestBody, null); + } } catch (Exception ex) { - // 异常执行,记录日志 - createApiAccessLog(request, beginTim, queryString, requestBody, ex); + // api log异常日志开关 + if(InfConfigUtil.apiErrorLogEnable()){ + // 异常执行,记录日志 + createApiAccessLog(request, beginTim, queryString, requestBody, ex); + } throw ex; } }