From 07162f2528292501035db60c919b45d75be474cf Mon Sep 17 00:00:00 2001 From: lijiahang Date: Mon, 16 Oct 2023 18:24:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E6=88=90=E6=95=B0=E6=8D=AE=E5=AD=97?= =?UTF-8?q?=E5=85=B8=E4=BB=A3=E7=A0=81.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/ErrorMessage.java | 2 + .../ops/launch/generator/CodeGenerator.java | 31 ++- .../engine/VelocityTemplateEngine.java | 2 +- ...-server-module-operator-key-define.java.vm | 2 +- .../orion-server-provider-api-impl.java.vm | 2 + .../orion-server-provider-api.java.vm | 2 + .../ops/module/infra/api/HistoryValueApi.java | 53 +++++ .../dto/history/HistoryValueCreateDTO.java | 40 ++++ .../entity/dto/history/HistoryValueDTO.java | 55 +++++ .../infra/enums/HistoryValueTypeEnum.java | 31 +++ .../infra/api/impl/HistoryValueApiImpl.java | 69 +++++++ .../infra/controller/DictKeyController.http | 44 ++++ .../infra/controller/DictKeyController.java | 84 ++++++++ .../infra/controller/DictValueController.http | 107 ++++++++++ .../infra/controller/DictValueController.java | 105 ++++++++++ .../controller/HistoryValueController.http | 14 ++ .../controller/HistoryValueController.java | 51 +++++ .../controller/OperatorLogController.java | 2 +- .../module/infra/convert/DictKeyConvert.java | 37 ++++ .../infra/convert/DictValueConvert.java | 40 ++++ .../infra/convert/HistoryValueConvert.java | 32 +++ .../convert/HistoryValueProviderConvert.java | 30 +++ .../infra/convert/OperatorLogConvert.java | 2 +- .../ops/module/infra/dao/DictKeyDAO.java | 17 ++ .../ops/module/infra/dao/DictValueDAO.java | 17 ++ .../ops/module/infra/dao/HistoryValueDAO.java | 48 +++++ .../define/cache/DictCacheKeyDefine.java | 33 +++ .../define/operator/DictKeyOperatorType.java | 34 ++++ .../operator/DictValueOperatorType.java | 34 ++++ .../module/infra/entity/domain/DictKeyDO.java | 49 +++++ .../infra/entity/domain/DictValueDO.java | 61 ++++++ .../infra/entity/domain/HistoryValueDO.java | 59 ++++++ .../infra/entity/dto/DictKeyCacheDTO.java | 55 +++++ .../infra/entity/dto/DictValueCacheDTO.java | 64 ++++++ .../request/dict/DictKeyCreateRequest.java | 46 +++++ .../request/dict/DictKeyUpdateRequest.java | 51 +++++ .../request/dict/DictValueCreateRequest.java | 55 +++++ .../request/dict/DictValueQueryRequest.java | 39 ++++ .../request/dict/DictValueUpdateRequest.java | 64 ++++++ .../history/HistoryValueCreateRequest.java | 45 ++++ .../history/HistoryValueQueryRequest.java | 37 ++++ .../{log => }/OperatorLogQueryRequest.java | 2 +- .../ops/module/infra/entity/vo/DictKeyVO.java | 55 +++++ .../module/infra/entity/vo/DictValueVO.java | 64 ++++++ .../infra/entity/vo/HistoryValueVO.java | 43 ++++ .../module/infra/service/DictKeyService.java | 57 ++++++ .../infra/service/DictValueService.java | 83 ++++++++ .../infra/service/HistoryValueService.java | 62 ++++++ .../infra/service/OperatorLogService.java | 2 +- .../service/impl/DictKeyServiceImpl.java | 144 +++++++++++++ .../service/impl/DictValueServiceImpl.java | 192 ++++++++++++++++++ .../service/impl/HistoryValueServiceImpl.java | 95 +++++++++ .../service/impl/OperatorLogServiceImpl.java | 2 +- .../main/resources/mapper/DictKeyMapper.xml | 24 +++ .../main/resources/mapper/DictValueMapper.xml | 27 +++ .../resources/mapper/HistoryValueMapper.xml | 22 ++ 56 files changed, 2504 insertions(+), 15 deletions(-) create mode 100644 orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/api/HistoryValueApi.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/history/HistoryValueCreateDTO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/history/HistoryValueDTO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/enums/HistoryValueTypeEnum.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/HistoryValueApiImpl.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/DictKeyController.http create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/DictKeyController.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/DictValueController.http create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/DictValueController.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/HistoryValueController.http create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/HistoryValueController.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DictKeyConvert.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DictValueConvert.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/HistoryValueConvert.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/HistoryValueProviderConvert.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/DictKeyDAO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/DictValueDAO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/HistoryValueDAO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/cache/DictCacheKeyDefine.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/operator/DictKeyOperatorType.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/operator/DictValueOperatorType.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/domain/DictKeyDO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/domain/DictValueDO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/domain/HistoryValueDO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/dto/DictKeyCacheDTO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/dto/DictValueCacheDTO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictKeyCreateRequest.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictKeyUpdateRequest.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictValueCreateRequest.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictValueQueryRequest.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictValueUpdateRequest.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/history/HistoryValueCreateRequest.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/history/HistoryValueQueryRequest.java rename orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/operator/{log => }/OperatorLogQueryRequest.java (95%) create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/vo/DictKeyVO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/vo/DictValueVO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/vo/HistoryValueVO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DictKeyService.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DictValueService.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/HistoryValueService.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DictKeyServiceImpl.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DictValueServiceImpl.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/HistoryValueServiceImpl.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/DictKeyMapper.xml create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/DictValueMapper.xml create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/HistoryValueMapper.xml diff --git a/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/ErrorMessage.java b/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/ErrorMessage.java index 8c660ce8..845753de 100644 --- a/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/ErrorMessage.java +++ b/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/ErrorMessage.java @@ -27,6 +27,8 @@ public interface ErrorMessage { String CONFIG_ABSENT = "配置不存在"; + String CONFIG_PRESENT = "配置已存在"; + String DATA_PRESENT = "数据已存在"; String NAME_PRESENT = "名称已存在"; diff --git a/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/CodeGenerator.java b/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/CodeGenerator.java index 9012051a..c56b3a7a 100644 --- a/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/CodeGenerator.java +++ b/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/CodeGenerator.java @@ -9,7 +9,6 @@ import com.baomidou.mybatisplus.generator.config.rules.DateType; import com.baomidou.mybatisplus.generator.config.rules.DbColumnType; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import com.orion.lang.constant.Const; -import com.orion.lang.utils.Strings; import com.orion.lang.utils.ansi.AnsiAppender; import com.orion.lang.utils.ansi.style.AnsiFont; import com.orion.lang.utils.ansi.style.color.AnsiForeground; @@ -26,6 +25,7 @@ import java.io.File; import java.sql.Types; import java.util.Arrays; import java.util.List; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -53,13 +53,29 @@ public class CodeGenerator { // .vue("user", "preference") // .enums("type") // .names("APP", "HOST") - // .values("label", "应用", "主机") + // // 同 .value(1, 2) // .values("value", 1, 2) + // // 同 .label("应用", "主机") + // .values("label", "应用", "主机") // .color("blue", "green") // .build(), - Template.create("operator_log", "操作日志", "operator.log") - .disableUnitTest() - .build() + Template.create("history_value", "历史归档", "history") + .enableProviderApi() + .vue("meta", "history-value") + .build(), + Template.create("dict_key", "字典配置项", "dict") + .cache("dict:keys", "字典配置项") + .expire(1, TimeUnit.HOURS) + .vue("system", "dict-key") + .enums("value_type") + .names("STRING", "NUMBER", "BOOLEAN", "COLOR") + .label("字符串", "数值", "布尔值", "颜色") + .build(), + Template.create("dict_value", "字典配置值", "dict") + .cache("dict:value:{}", "字典配置值 ${key}") + .expire(1, TimeUnit.HOURS) + .vue("system", "dict-value") + .build(), }; // jdbc 配置 - 使用配置文件 File yamlFile = new File("orion-ops-launch/src/main/resources/application-dev.yaml"); @@ -124,7 +140,7 @@ public class CodeGenerator { ag.execute(engine); // 打印提示信息 - printTips(module); + printTips(); } /** @@ -406,13 +422,12 @@ public class CodeGenerator { /** * 打印提示信息 */ - private static void printTips(String module) { + private static void printTips() { String line = AnsiAppender.create() .append(AnsiForeground.BRIGHT_GREEN.and(AnsiFont.BOLD), "\n:: 代码生成完毕 ^_^ ::\n") .append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- 后端代码复制后请先 clean 模块父工程\n") .append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- 后端代码需要自行修改缓存逻辑\n") .append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- 后端代码修改完成后请先执行单元测试检测是否正常\n") - .append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- 需要在 " + Strings.firstUpper(module) + "OperatorTypeRunner 添加 xxxOperatorType.init() 来初始化操作日志类型 \n") .append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- vue 代码需要注意同一模块的 router 需要自行合并\n") .append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- vue 枚举需要自行更改数据类型\n") .append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- 菜单 sql 执行完成后 需要在菜单页面刷新缓存\n") diff --git a/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/engine/VelocityTemplateEngine.java b/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/engine/VelocityTemplateEngine.java index 34adf250..c7c5e38e 100644 --- a/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/engine/VelocityTemplateEngine.java +++ b/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/engine/VelocityTemplateEngine.java @@ -200,7 +200,7 @@ public class VelocityTemplateEngine extends AbstractTemplateEngine { // 类型脊柱名称 objectMap.put("typeHyphen", mappingHyphen.substring(0, mappingHyphen.length() - 3)); // 类型常量 - objectMap.put("typeConst", VariableStyles.BIG_HUMP.toSpine(entityName).toUpperCase()); + objectMap.put("typeConst", VariableStyles.BIG_HUMP.toSerpentine(entityName).toUpperCase()); } /** diff --git a/orion-ops-launch/src/main/resources/templates/orion-server-module-operator-key-define.java.vm b/orion-ops-launch/src/main/resources/templates/orion-server-module-operator-key-define.java.vm index f75bdd20..0bdf42bd 100644 --- a/orion-ops-launch/src/main/resources/templates/orion-server-module-operator-key-define.java.vm +++ b/orion-ops-launch/src/main/resources/templates/orion-server-module-operator-key-define.java.vm @@ -14,7 +14,7 @@ import static com.orion.ops.framework.biz.operator.log.core.enums.OperatorRiskLe * @since ${date} */ @Module("${package.ModuleName}:${typeHyphen}") -public class ${type}OperatorType { +public class ${type}OperatorType extends InitializingOperatorTypes { public static final String CREATE = "${typeHyphen}:create"; diff --git a/orion-ops-launch/src/main/resources/templates/orion-server-provider-api-impl.java.vm b/orion-ops-launch/src/main/resources/templates/orion-server-provider-api-impl.java.vm index 58561c80..13af9dc0 100644 --- a/orion-ops-launch/src/main/resources/templates/orion-server-provider-api-impl.java.vm +++ b/orion-ops-launch/src/main/resources/templates/orion-server-provider-api-impl.java.vm @@ -106,6 +106,7 @@ public class ${type}ApiImpl implements ${type}Api { return ${typeLower}DAO.of(wrapper).list(${type}ProviderConvert.MAPPER::to); } + #if($cacheMeta.enableCache) @Override public List<${type}DTO> get${type}ListByCache() { return ${typeLower}Service.get${type}ListByCache() @@ -114,6 +115,7 @@ public class ${type}ApiImpl implements ${type}Api { .collect(Collectors.toList()); } + #end @Override public Long get${type}Count(${type}QueryDTO dto) { log.info("${type}Api.get${type}Count dto: {}", JSON.toJSONString(dto)); diff --git a/orion-ops-launch/src/main/resources/templates/orion-server-provider-api.java.vm b/orion-ops-launch/src/main/resources/templates/orion-server-provider-api.java.vm index eb4d5ef4..f20bf104 100644 --- a/orion-ops-launch/src/main/resources/templates/orion-server-provider-api.java.vm +++ b/orion-ops-launch/src/main/resources/templates/orion-server-provider-api.java.vm @@ -64,6 +64,7 @@ public interface ${type}Api { */ List<${type}DTO> get${type}List(${type}QueryDTO dto); + #if($cacheMeta.enableCache) /** * ${apiComment.queryListByCache} * @@ -71,6 +72,7 @@ public interface ${type}Api { */ List<${type}DTO> get${type}ListByCache(); + #end /** * ${apiComment.queryCount} * diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/api/HistoryValueApi.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/api/HistoryValueApi.java new file mode 100644 index 00000000..4227a0cb --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/api/HistoryValueApi.java @@ -0,0 +1,53 @@ +package com.orion.ops.module.infra.api; + +import com.orion.ops.module.infra.entity.dto.history.HistoryValueCreateDTO; +import com.orion.ops.module.infra.entity.dto.history.HistoryValueDTO; +import com.orion.ops.module.infra.enums.HistoryValueTypeEnum; + +import java.util.List; + +/** + * 历史归档 对外服务类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 17:33 + */ +public interface HistoryValueApi { + + /** + * 创建历史归档 + * + * @param type type + * @param dto dto + * @return id + */ + Long createHistoryValue(HistoryValueTypeEnum type, HistoryValueCreateDTO dto); + + /** + * 查询历史归档 + * + * @param id id + * @return row + */ + HistoryValueDTO getHistoryValueById(Long id); + + /** + * 删除历史归档 + * + * @param type type + * @param relId relId + * @return rows + */ + Integer deleteByRelId(HistoryValueTypeEnum type, Long relId); + + /** + * 删除历史归档 + * + * @param type type + * @param relIdList relIdList + * @return effect + */ + Integer deleteByRelIdList(HistoryValueTypeEnum type, List relIdList); + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/history/HistoryValueCreateDTO.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/history/HistoryValueCreateDTO.java new file mode 100644 index 00000000..fe85e333 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/history/HistoryValueCreateDTO.java @@ -0,0 +1,40 @@ +package com.orion.ops.module.infra.entity.dto.history; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.io.Serializable; + +/** + * 历史归档 创建请求业务对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 17:33 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "HistoryValueCreateDTO", description = "历史归档 创建请求业务对象") +public class HistoryValueCreateDTO implements Serializable { + + @NotNull + @Schema(description = "引用id") + private Long relId; + + @NotBlank + @Schema(description = "修改前") + private String beforeValue; + + @NotBlank + @Schema(description = "修改后") + private String afterValue; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/history/HistoryValueDTO.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/history/HistoryValueDTO.java new file mode 100644 index 00000000..b5faf885 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/history/HistoryValueDTO.java @@ -0,0 +1,55 @@ +package com.orion.ops.module.infra.entity.dto.history; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +/** + * 历史归档 业务对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 17:33 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "HistoryValueDTO", description = "历史归档 业务对象") +public class HistoryValueDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + private Long id; + + @Schema(description = "引用id") + private Long relId; + + @Schema(description = "类型") + private String type; + + @Schema(description = "修改前") + private String beforeValue; + + @Schema(description = "修改后") + private String afterValue; + + @Schema(description = "创建时间") + private Date createTime; + + @Schema(description = "修改时间") + private Date updateTime; + + @Schema(description = "创建人") + private String creator; + + @Schema(description = "修改人") + private String updater; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/enums/HistoryValueTypeEnum.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/enums/HistoryValueTypeEnum.java new file mode 100644 index 00000000..8ac8ca9f --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/enums/HistoryValueTypeEnum.java @@ -0,0 +1,31 @@ +package com.orion.ops.module.infra.enums; + +/** + * 历史值类型 枚举 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023/10/16 17:40 + */ +public enum HistoryValueTypeEnum { + + /** + * 字典 + */ + DICT, + + ; + + public static HistoryValueTypeEnum of(String type) { + if (type == null) { + return null; + } + for (HistoryValueTypeEnum value : values()) { + if (value.name().equals(type)) { + return value; + } + } + return null; + } + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/HistoryValueApiImpl.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/HistoryValueApiImpl.java new file mode 100644 index 00000000..71408579 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/HistoryValueApiImpl.java @@ -0,0 +1,69 @@ +package com.orion.ops.module.infra.api.impl; + +import com.alibaba.fastjson.JSON; +import com.orion.ops.framework.common.constant.ErrorMessage; +import com.orion.ops.framework.common.utils.Valid; +import com.orion.ops.module.infra.api.HistoryValueApi; +import com.orion.ops.module.infra.convert.HistoryValueProviderConvert; +import com.orion.ops.module.infra.entity.domain.HistoryValueDO; +import com.orion.ops.module.infra.entity.dto.history.HistoryValueCreateDTO; +import com.orion.ops.module.infra.entity.dto.history.HistoryValueDTO; +import com.orion.ops.module.infra.entity.request.history.HistoryValueCreateRequest; +import com.orion.ops.module.infra.enums.HistoryValueTypeEnum; +import com.orion.ops.module.infra.service.HistoryValueService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 历史归档 对外服务实现类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 17:33 + */ +@Slf4j +@Service +public class HistoryValueApiImpl implements HistoryValueApi { + + @Resource + private HistoryValueService historyValueService; + + @Override + public Long createHistoryValue(HistoryValueTypeEnum type, HistoryValueCreateDTO dto) { + log.info("HistoryValueApi.createHistoryValue dto: {}", JSON.toJSONString(dto)); + Valid.notNull(type); + Valid.valid(dto); + // 转换 + HistoryValueCreateRequest request = HistoryValueProviderConvert.MAPPER.toRequest(dto); + request.setType(type.name()); + // 创建 + return historyValueService.createHistoryValue(request); + } + + @Override + public HistoryValueDTO getHistoryValueById(Long id) { + log.info("HistoryValueApi.getHistoryValueById id: {}", id); + Valid.notNull(id, ErrorMessage.ID_MISSING); + // 修改 + HistoryValueDO record = historyValueService.getHistoryById(id); + if (record == null) { + return null; + } + // 转换 + return HistoryValueProviderConvert.MAPPER.to(record); + } + + @Override + public Integer deleteByRelId(HistoryValueTypeEnum type, Long relId) { + return historyValueService.deleteByRelId(type.name(), relId); + } + + @Override + public Integer deleteByRelIdList(HistoryValueTypeEnum type, List relIdList) { + return historyValueService.deleteByRelIdList(type.name(), relIdList); + } + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/DictKeyController.http b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/DictKeyController.http new file mode 100644 index 00000000..e72891b0 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/DictKeyController.http @@ -0,0 +1,44 @@ +### 创建字典配置项 +POST {{baseUrl}}/infra/dict-key/create +Content-Type: application/json +Authorization: {{token}} + +{ + "key": "", + "valueType": "", + "extraSchema": "", + "desc": "" +} + + +### 更新字典配置项 +PUT {{baseUrl}}/infra/dict-key/update +Content-Type: application/json +Authorization: {{token}} + +{ + "id": "", + "key": "", + "valueType": "", + "extraSchema": "", + "desc": "" +} + + + +### 查询全部字典配置项 +POST {{baseUrl}}/infra/dict-key/list +Authorization: {{token}} + + +### 删除字典配置项 +DELETE {{baseUrl}}/infra/dict-key/delete?id=1 +Authorization: {{token}} + + +### 批量删除字典配置项 +DELETE {{baseUrl}}/infra/dict-key/batch-delete?idList=1,2,3 +Authorization: {{token}} + + +### diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/DictKeyController.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/DictKeyController.java new file mode 100644 index 00000000..1b485d55 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/DictKeyController.java @@ -0,0 +1,84 @@ +package com.orion.ops.module.infra.controller; + +import com.orion.ops.framework.biz.operator.log.core.annotation.OperatorLog; +import com.orion.ops.framework.log.core.annotation.IgnoreLog; +import com.orion.ops.framework.log.core.enums.IgnoreLogMode; +import com.orion.ops.framework.web.core.annotation.RestWrapper; +import com.orion.ops.module.infra.define.operator.DictKeyOperatorType; +import com.orion.ops.module.infra.entity.request.dict.DictKeyCreateRequest; +import com.orion.ops.module.infra.entity.request.dict.DictKeyUpdateRequest; +import com.orion.ops.module.infra.entity.vo.DictKeyVO; +import com.orion.ops.module.infra.service.DictKeyService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 字典配置项 api + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Tag(name = "infra - 字典配置项服务") +@Slf4j +@Validated +@RestWrapper +@RestController +@RequestMapping("/infra/dict-key") +@SuppressWarnings({"ELValidationInJSP", "SpringElInspection"}) +public class DictKeyController { + + @Resource + private DictKeyService dictKeyService; + + @OperatorLog(DictKeyOperatorType.CREATE) + @PostMapping("/create") + @Operation(summary = "创建字典配置项") + @PreAuthorize("@ss.hasPermission('infra:dict-key:create')") + public Long createDictKey(@Validated @RequestBody DictKeyCreateRequest request) { + return dictKeyService.createDictKey(request); + } + + @OperatorLog(DictKeyOperatorType.UPDATE) + @PutMapping("/update") + @Operation(summary = "更新字典配置项") + @PreAuthorize("@ss.hasPermission('infra:dict-key:update')") + public Integer updateDictKey(@Validated @RequestBody DictKeyUpdateRequest request) { + return dictKeyService.updateDictKeyById(request); + } + + @IgnoreLog(IgnoreLogMode.RET) + @PostMapping("/list") + @Operation(summary = "查询全部字典配置项") + public List getDictKeyList() { + return dictKeyService.getDictKeyList(); + } + + @OperatorLog(DictKeyOperatorType.DELETE) + @DeleteMapping("/delete") + @Operation(summary = "删除字典配置项") + @Parameter(name = "id", description = "id", required = true) + @PreAuthorize("@ss.hasPermission('infra:dict-key:delete')") + public Integer deleteDictKey(@RequestParam("id") Long id) { + return dictKeyService.deleteDictKeyById(id); + } + + @OperatorLog(DictKeyOperatorType.DELETE) + @DeleteMapping("/batch-delete") + @Operation(summary = "批量删除字典配置项") + @Parameter(name = "idList", description = "idList", required = true) + @PreAuthorize("@ss.hasPermission('infra:dict-key:delete')") + public Integer batchDeleteDictKey(@RequestParam("idList") List idList) { + return dictKeyService.batchDeleteDictKeyByIdList(idList); + } + +} + diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/DictValueController.http b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/DictValueController.http new file mode 100644 index 00000000..6ac8173f --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/DictValueController.http @@ -0,0 +1,107 @@ +### 创建字典配置值 +POST {{baseUrl}}/infra/dict-value/create +Content-Type: application/json +Authorization: {{token}} + +{ + "keyId": "", + "key": "", + "label": "", + "value": "", + "desc": "", + "extra": "", + "sort": "" +} + + +### 更新字典配置值 +PUT {{baseUrl}}/infra/dict-value/update +Content-Type: application/json +Authorization: {{token}} + +{ + "id": "", + "keyId": "", + "key": "", + "label": "", + "value": "", + "desc": "", + "extra": "", + "sort": "" +} + + +### 查询字典配置值 +GET {{baseUrl}}/infra/dict-value/get?id=1 +Authorization: {{token}} + + +### 批量查询字典配置值 +GET {{baseUrl}}/infra/dict-value/batch-get?idList=1,2,3 +Authorization: {{token}} + + +### 查询全部字典配置值 +POST {{baseUrl}}/infra/dict-value/list +Content-Type: application/json +Authorization: {{token}} + +{ + "id": "", + "keyId": "", + "key": "", + "label": "", + "value": "", + "desc": "", + "extra": "", + "sort": "" +} + + +### 分页查询字典配置值 +POST {{baseUrl}}/infra/dict-value/query +Content-Type: application/json +Authorization: {{token}} + +{ + "page": 1, + "limit": 10, + "id": "", + "keyId": "", + "key": "", + "label": "", + "value": "", + "desc": "", + "extra": "", + "sort": "" +} + + +### 删除字典配置值 +DELETE {{baseUrl}}/infra/dict-value/delete?id=1 +Authorization: {{token}} + + +### 批量删除字典配置值 +DELETE {{baseUrl}}/infra/dict-value/batch-delete?idList=1,2,3 +Authorization: {{token}} + + +### 导出字典配置值 +POST {{baseUrl}}/infra/dict-value/export +Content-Type: application/json +Authorization: {{token}} + +{ + "id": "", + "keyId": "", + "key": "", + "label": "", + "value": "", + "desc": "", + "extra": "", + "sort": "" +} + + +### diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/DictValueController.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/DictValueController.java new file mode 100644 index 00000000..cad710b8 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/DictValueController.java @@ -0,0 +1,105 @@ +package com.orion.ops.module.infra.controller; + +import com.orion.lang.define.wrapper.DataGrid; +import com.orion.ops.framework.biz.operator.log.core.annotation.OperatorLog; +import com.orion.ops.framework.common.validator.group.Page; +import com.orion.ops.framework.log.core.annotation.IgnoreLog; +import com.orion.ops.framework.log.core.enums.IgnoreLogMode; +import com.orion.ops.framework.web.core.annotation.RestWrapper; +import com.orion.ops.module.infra.define.operator.DictValueOperatorType; +import com.orion.ops.module.infra.entity.request.dict.DictValueCreateRequest; +import com.orion.ops.module.infra.entity.request.dict.DictValueQueryRequest; +import com.orion.ops.module.infra.entity.request.dict.DictValueUpdateRequest; +import com.orion.ops.module.infra.entity.vo.DictValueVO; +import com.orion.ops.module.infra.service.DictValueService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 字典配置值 api + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Tag(name = "infra - 字典配置值服务") +@Slf4j +@Validated +@RestWrapper +@RestController +@RequestMapping("/infra/dict-value") +@SuppressWarnings({"ELValidationInJSP", "SpringElInspection"}) +public class DictValueController { + + @Resource + private DictValueService dictValueService; + + @OperatorLog(DictValueOperatorType.CREATE) + @PostMapping("/create") + @Operation(summary = "创建字典配置值") + @PreAuthorize("@ss.hasPermission('infra:dict-value:create')") + public Long createDictValue(@Validated @RequestBody DictValueCreateRequest request) { + return dictValueService.createDictValue(request); + } + + @OperatorLog(DictValueOperatorType.UPDATE) + @PutMapping("/update") + @Operation(summary = "更新字典配置值") + @PreAuthorize("@ss.hasPermission('infra:dict-value:update')") + public Integer updateDictValue(@Validated @RequestBody DictValueUpdateRequest request) { + return dictValueService.updateDictValueById(request); + } + + @IgnoreLog(IgnoreLogMode.RET) + @GetMapping("/get") + @Operation(summary = "查询字典配置值") + @Parameter(name = "id", description = "id", required = true) + @PreAuthorize("@ss.hasPermission('infra:dict-value:query')") + public DictValueVO getDictValue(@RequestParam("id") Long id) { + return dictValueService.getDictValueById(id); + } + + @IgnoreLog(IgnoreLogMode.RET) + @PostMapping("/list") + @Operation(summary = "查询全部字典配置值") + @PreAuthorize("@ss.hasPermission('infra:dict-value:query')") + public List getDictValueList(@Validated @RequestBody DictValueQueryRequest request) { + return dictValueService.getDictValueList(request); + } + + @IgnoreLog(IgnoreLogMode.RET) + @PostMapping("/query") + @Operation(summary = "分页查询字典配置值") + @PreAuthorize("@ss.hasPermission('infra:dict-value:query')") + public DataGrid getDictValuePage(@Validated(Page.class) @RequestBody DictValueQueryRequest request) { + return dictValueService.getDictValuePage(request); + } + + @OperatorLog(DictValueOperatorType.DELETE) + @DeleteMapping("/delete") + @Operation(summary = "删除字典配置值") + @Parameter(name = "id", description = "id", required = true) + @PreAuthorize("@ss.hasPermission('infra:dict-value:delete')") + public Integer deleteDictValue(@RequestParam("id") Long id) { + return dictValueService.deleteDictValueById(id); + } + + @OperatorLog(DictValueOperatorType.DELETE) + @DeleteMapping("/batch-delete") + @Operation(summary = "批量删除字典配置值") + @Parameter(name = "idList", description = "idList", required = true) + @PreAuthorize("@ss.hasPermission('infra:dict-value:delete')") + public Integer batchDeleteDictValue(@RequestParam("idList") List idList) { + return dictValueService.batchDeleteDictValueByIdList(idList); + } + +} + diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/HistoryValueController.http b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/HistoryValueController.http new file mode 100644 index 00000000..864c2d34 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/HistoryValueController.http @@ -0,0 +1,14 @@ +### 分页查询历史归档 +POST {{baseUrl}}/infra/history-value/query +Content-Type: application/json +Authorization: {{token}} + +{ + "page": 1, + "limit": 10, + "relId": "1", + "type": "" +} + + +### diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/HistoryValueController.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/HistoryValueController.java new file mode 100644 index 00000000..e693b068 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/HistoryValueController.java @@ -0,0 +1,51 @@ +package com.orion.ops.module.infra.controller; + +import com.orion.lang.define.wrapper.DataGrid; +import com.orion.ops.framework.common.validator.group.Page; +import com.orion.ops.framework.log.core.annotation.IgnoreLog; +import com.orion.ops.framework.log.core.enums.IgnoreLogMode; +import com.orion.ops.framework.web.core.annotation.RestWrapper; +import com.orion.ops.module.infra.entity.request.history.HistoryValueQueryRequest; +import com.orion.ops.module.infra.entity.vo.HistoryValueVO; +import com.orion.ops.module.infra.service.HistoryValueService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 历史归档 api + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Tag(name = "infra - 历史归档服务") +@Slf4j +@Validated +@RestWrapper +@RestController +@RequestMapping("/infra/history-value") +@SuppressWarnings({"ELValidationInJSP", "SpringElInspection"}) +public class HistoryValueController { + + @Resource + private HistoryValueService historyValueService; + + @IgnoreLog(IgnoreLogMode.RET) + @PostMapping("/query") + @Operation(summary = "分页查询历史归档") + @PreAuthorize("@ss.hasPermission('infra:history-value:query')") + public DataGrid getHistoryValuePage(@Validated(Page.class) @RequestBody HistoryValueQueryRequest request) { + return historyValueService.getHistoryValuePage(request); + } + +} + diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/OperatorLogController.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/OperatorLogController.java index c3857468..0d677928 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/OperatorLogController.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/OperatorLogController.java @@ -5,7 +5,7 @@ import com.orion.ops.framework.common.validator.group.Page; import com.orion.ops.framework.log.core.annotation.IgnoreLog; import com.orion.ops.framework.log.core.enums.IgnoreLogMode; import com.orion.ops.framework.web.core.annotation.RestWrapper; -import com.orion.ops.module.infra.entity.request.operator.log.OperatorLogQueryRequest; +import com.orion.ops.module.infra.entity.request.operator.OperatorLogQueryRequest; import com.orion.ops.module.infra.entity.vo.OperatorLogVO; import com.orion.ops.module.infra.service.OperatorLogService; import io.swagger.v3.oas.annotations.Operation; diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DictKeyConvert.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DictKeyConvert.java new file mode 100644 index 00000000..d4fbf127 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DictKeyConvert.java @@ -0,0 +1,37 @@ +package com.orion.ops.module.infra.convert; + +import com.orion.ops.module.infra.entity.domain.DictKeyDO; +import com.orion.ops.module.infra.entity.dto.DictKeyCacheDTO; +import com.orion.ops.module.infra.entity.request.dict.DictKeyCreateRequest; +import com.orion.ops.module.infra.entity.request.dict.DictKeyUpdateRequest; +import com.orion.ops.module.infra.entity.vo.DictKeyVO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 字典配置项 内部对象转换器 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Mapper +public interface DictKeyConvert { + + DictKeyConvert MAPPER = Mappers.getMapper(DictKeyConvert.class); + + DictKeyDO to(DictKeyCreateRequest request); + + DictKeyDO to(DictKeyUpdateRequest request); + + DictKeyVO to(DictKeyDO domain); + + List to(List list); + + DictKeyVO to(DictKeyCacheDTO cache); + + DictKeyCacheDTO toCache(DictKeyDO domain); + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DictValueConvert.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DictValueConvert.java new file mode 100644 index 00000000..97e7b690 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DictValueConvert.java @@ -0,0 +1,40 @@ +package com.orion.ops.module.infra.convert; + +import com.orion.ops.module.infra.entity.domain.DictValueDO; +import com.orion.ops.module.infra.entity.dto.DictValueCacheDTO; +import com.orion.ops.module.infra.entity.request.dict.DictValueCreateRequest; +import com.orion.ops.module.infra.entity.request.dict.DictValueQueryRequest; +import com.orion.ops.module.infra.entity.request.dict.DictValueUpdateRequest; +import com.orion.ops.module.infra.entity.vo.DictValueVO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 字典配置值 内部对象转换器 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Mapper +public interface DictValueConvert { + + DictValueConvert MAPPER = Mappers.getMapper(DictValueConvert.class); + + DictValueDO to(DictValueCreateRequest request); + + DictValueDO to(DictValueUpdateRequest request); + + DictValueDO to(DictValueQueryRequest request); + + DictValueVO to(DictValueDO domain); + + List to(List list); + + DictValueVO to(DictValueCacheDTO cache); + + DictValueCacheDTO toCache(DictValueDO domain); + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/HistoryValueConvert.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/HistoryValueConvert.java new file mode 100644 index 00000000..0b353b2d --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/HistoryValueConvert.java @@ -0,0 +1,32 @@ +package com.orion.ops.module.infra.convert; + +import com.orion.ops.module.infra.entity.domain.HistoryValueDO; +import com.orion.ops.module.infra.entity.request.history.HistoryValueCreateRequest; +import com.orion.ops.module.infra.entity.request.history.HistoryValueQueryRequest; +import com.orion.ops.module.infra.entity.vo.HistoryValueVO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 历史归档 内部对象转换器 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Mapper +public interface HistoryValueConvert { + + HistoryValueConvert MAPPER = Mappers.getMapper(HistoryValueConvert.class); + + HistoryValueDO to(HistoryValueCreateRequest request); + + HistoryValueDO to(HistoryValueQueryRequest request); + + HistoryValueVO to(HistoryValueDO domain); + + List to(List list); + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/HistoryValueProviderConvert.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/HistoryValueProviderConvert.java new file mode 100644 index 00000000..7620cbe8 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/HistoryValueProviderConvert.java @@ -0,0 +1,30 @@ +package com.orion.ops.module.infra.convert; + +import com.orion.ops.module.infra.entity.domain.HistoryValueDO; +import com.orion.ops.module.infra.entity.dto.history.HistoryValueCreateDTO; +import com.orion.ops.module.infra.entity.dto.history.HistoryValueDTO; +import com.orion.ops.module.infra.entity.request.history.HistoryValueCreateRequest; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 历史归档 对外服务对象转换器 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 17:33 + */ +@Mapper +public interface HistoryValueProviderConvert { + + HistoryValueProviderConvert MAPPER = Mappers.getMapper(HistoryValueProviderConvert.class); + + HistoryValueDTO to(HistoryValueDO domain); + + HistoryValueCreateRequest toRequest(HistoryValueCreateDTO request); + + List toList(List list); + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/OperatorLogConvert.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/OperatorLogConvert.java index 32e7b03a..8254b033 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/OperatorLogConvert.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/OperatorLogConvert.java @@ -2,7 +2,7 @@ package com.orion.ops.module.infra.convert; import com.orion.ops.framework.biz.operator.log.core.model.OperatorLogModel; import com.orion.ops.module.infra.entity.domain.OperatorLogDO; -import com.orion.ops.module.infra.entity.request.operator.log.OperatorLogQueryRequest; +import com.orion.ops.module.infra.entity.request.operator.OperatorLogQueryRequest; import com.orion.ops.module.infra.entity.vo.OperatorLogVO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/DictKeyDAO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/DictKeyDAO.java new file mode 100644 index 00000000..f34da6a5 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/DictKeyDAO.java @@ -0,0 +1,17 @@ +package com.orion.ops.module.infra.dao; + +import com.orion.ops.framework.mybatis.core.mapper.IMapper; +import com.orion.ops.module.infra.entity.domain.DictKeyDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 字典配置项 Mapper 接口 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Mapper +public interface DictKeyDAO extends IMapper { + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/DictValueDAO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/DictValueDAO.java new file mode 100644 index 00000000..737e89ff --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/DictValueDAO.java @@ -0,0 +1,17 @@ +package com.orion.ops.module.infra.dao; + +import com.orion.ops.framework.mybatis.core.mapper.IMapper; +import com.orion.ops.module.infra.entity.domain.DictValueDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 字典配置值 Mapper 接口 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Mapper +public interface DictValueDAO extends IMapper { + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/HistoryValueDAO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/HistoryValueDAO.java new file mode 100644 index 00000000..7c71ac79 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/HistoryValueDAO.java @@ -0,0 +1,48 @@ +package com.orion.ops.module.infra.dao; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.orion.ops.framework.mybatis.core.mapper.IMapper; +import com.orion.ops.module.infra.entity.domain.HistoryValueDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 历史归档 Mapper 接口 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Mapper +public interface HistoryValueDAO extends IMapper { + + /** + * 通过 relId 删除 + * + * @param type type + * @param relId relId + * @return effect + */ + default int deleteByRelId(String type, Long relId) { + LambdaQueryWrapper wrapper = this.lambda() + .eq(HistoryValueDO::getType, type) + .eq(HistoryValueDO::getRelId, relId); + return this.delete(wrapper); + } + + /** + * 通过 relId 删除 + * + * @param type type + * @param relIdList relIdList + * @return effect + */ + default int deleteByRelIdList(String type, List relIdList) { + LambdaQueryWrapper wrapper = this.lambda() + .eq(HistoryValueDO::getType, type) + .in(HistoryValueDO::getRelId, relIdList); + return this.delete(wrapper); + } + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/cache/DictCacheKeyDefine.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/cache/DictCacheKeyDefine.java new file mode 100644 index 00000000..bd9cf635 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/cache/DictCacheKeyDefine.java @@ -0,0 +1,33 @@ +package com.orion.ops.module.infra.define.cache; + +import com.orion.lang.define.cache.CacheKeyBuilder; +import com.orion.lang.define.cache.CacheKeyDefine; +import com.orion.ops.module.infra.entity.dto.DictKeyCacheDTO; +import com.orion.ops.module.infra.entity.dto.DictValueCacheDTO; + +import java.util.concurrent.TimeUnit; + +/** + * 字典配置项缓存 key + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +public interface DictCacheKeyDefine { + + CacheKeyDefine DICT_KEY = new CacheKeyBuilder() + .key("dict:keys") + .desc("字典配置项") + .type(DictKeyCacheDTO.class) + .timeout(1, TimeUnit.DAYS) + .build(); + + CacheKeyDefine DICT_VALUE = new CacheKeyBuilder() + .key("dict:value:{}") + .desc("字典配置值 ${key}") + .type(DictValueCacheDTO.class) + .timeout(1, TimeUnit.DAYS) + .build(); + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/operator/DictKeyOperatorType.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/operator/DictKeyOperatorType.java new file mode 100644 index 00000000..07edea53 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/operator/DictKeyOperatorType.java @@ -0,0 +1,34 @@ +package com.orion.ops.module.infra.define.operator; + +import com.orion.ops.framework.biz.operator.log.core.annotation.Module; +import com.orion.ops.framework.biz.operator.log.core.factory.InitializingOperatorTypes; +import com.orion.ops.framework.biz.operator.log.core.model.OperatorType; + +import static com.orion.ops.framework.biz.operator.log.core.enums.OperatorRiskLevel.*; + +/** + * 字典配置项 操作日志类型 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Module("infra:dict-key") +public class DictKeyOperatorType extends InitializingOperatorTypes { + + public static final String CREATE = "dict-key:create"; + + public static final String UPDATE = "dict-key:update"; + + public static final String DELETE = "dict-key:delete"; + + @Override + public OperatorType[] types() { + return new OperatorType[]{ + new OperatorType(L, CREATE, "创建字典配置项"), + new OperatorType(M, UPDATE, "更新字典配置项"), + new OperatorType(H, DELETE, "删除字典配置项"), + }; + } + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/operator/DictValueOperatorType.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/operator/DictValueOperatorType.java new file mode 100644 index 00000000..600e96f1 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/operator/DictValueOperatorType.java @@ -0,0 +1,34 @@ +package com.orion.ops.module.infra.define.operator; + +import com.orion.ops.framework.biz.operator.log.core.annotation.Module; +import com.orion.ops.framework.biz.operator.log.core.factory.InitializingOperatorTypes; +import com.orion.ops.framework.biz.operator.log.core.model.OperatorType; + +import static com.orion.ops.framework.biz.operator.log.core.enums.OperatorRiskLevel.*; + +/** + * 字典配置值 操作日志类型 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Module("infra:dict-value") +public class DictValueOperatorType extends InitializingOperatorTypes { + + public static final String CREATE = "dict-value:create"; + + public static final String UPDATE = "dict-value:update"; + + public static final String DELETE = "dict-value:delete"; + + @Override + public OperatorType[] types() { + return new OperatorType[]{ + new OperatorType(L, CREATE, "创建字典配置值"), + new OperatorType(M, UPDATE, "更新字典配置值"), + new OperatorType(H, DELETE, "删除字典配置值"), + }; + } + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/domain/DictKeyDO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/domain/DictKeyDO.java new file mode 100644 index 00000000..04f6fcf9 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/domain/DictKeyDO.java @@ -0,0 +1,49 @@ +package com.orion.ops.module.infra.entity.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.orion.ops.framework.mybatis.core.domain.BaseDO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +/** + * 字典配置项 实体对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName(value = "dict_key", autoResultMap = true) +@Schema(name = "DictKeyDO", description = "字典配置项 实体对象") +public class DictKeyDO extends BaseDO { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @Schema(description = "配置项") + @TableField("key") + private String key; + + @Schema(description = "配置值定义") + @TableField("value_type") + private String valueType; + + @Schema(description = "额外配置定义") + @TableField("extra_schema") + private String extraSchema; + + @Schema(description = "配置描述") + @TableField("desc") + private String desc; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/domain/DictValueDO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/domain/DictValueDO.java new file mode 100644 index 00000000..20b2b562 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/domain/DictValueDO.java @@ -0,0 +1,61 @@ +package com.orion.ops.module.infra.entity.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.orion.ops.framework.mybatis.core.domain.BaseDO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +/** + * 字典配置值 实体对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName(value = "dict_value", autoResultMap = true) +@Schema(name = "DictValueDO", description = "字典配置值 实体对象") +public class DictValueDO extends BaseDO { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @Schema(description = "配置项id") + @TableField("key_id") + private Long keyId; + + @Schema(description = "配置项") + @TableField("key") + private String key; + + @Schema(description = "配置名称") + @TableField("label") + private String label; + + @Schema(description = "配置值") + @TableField("value") + private String value; + + @Schema(description = "配置描述") + @TableField("desc") + private String desc; + + @Schema(description = "额外参数") + @TableField("extra") + private String extra; + + @Schema(description = "排序") + @TableField("sort") + private Integer sort; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/domain/HistoryValueDO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/domain/HistoryValueDO.java new file mode 100644 index 00000000..531d7c9d --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/domain/HistoryValueDO.java @@ -0,0 +1,59 @@ +package com.orion.ops.module.infra.entity.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.orion.ops.framework.mybatis.core.domain.BaseDO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.util.Date; + +/** + * 字典配置项 实体对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName(value = "history_value", autoResultMap = true) +@Schema(name = "HistoryValueDO", description = "字典配置项 实体对象") +public class HistoryValueDO extends BaseDO { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @Schema(description = "引用id") + @TableField("rel_id") + private Long relId; + + @Schema(description = "类型") + @TableField("type") + private String type; + + @Schema(description = "修改前") + @TableField("before_value") + private String beforeValue; + + @Schema(description = "修改后") + @TableField("after_value") + private String afterValue; + + @Schema(description = "修改时间") + @TableField(exist = false) + private Date updateTime; + + @Schema(description = "修改人") + @TableField(exist = false) + private String updater; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/dto/DictKeyCacheDTO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/dto/DictKeyCacheDTO.java new file mode 100644 index 00000000..57945148 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/dto/DictKeyCacheDTO.java @@ -0,0 +1,55 @@ +package com.orion.ops.module.infra.entity.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +/** + * 字典配置项 缓存对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DictKeyCacheDTO", description = "字典配置项 缓存对象") +public class DictKeyCacheDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + private Long id; + + @Schema(description = "配置项") + private String key; + + @Schema(description = "配置值定义") + private String valueType; + + @Schema(description = "额外配置定义") + private String extraSchema; + + @Schema(description = "配置描述") + private String desc; + + @Schema(description = "创建时间") + private Date createTime; + + @Schema(description = "修改时间") + private Date updateTime; + + @Schema(description = "创建人") + private String creator; + + @Schema(description = "修改人") + private String updater; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/dto/DictValueCacheDTO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/dto/DictValueCacheDTO.java new file mode 100644 index 00000000..48ed1332 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/dto/DictValueCacheDTO.java @@ -0,0 +1,64 @@ +package com.orion.ops.module.infra.entity.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +/** + * 字典配置值 缓存对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DictValueCacheDTO", description = "字典配置值 缓存对象") +public class DictValueCacheDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + private Long id; + + @Schema(description = "配置项id") + private Long keyId; + + @Schema(description = "配置项") + private String key; + + @Schema(description = "配置名称") + private String label; + + @Schema(description = "配置值") + private String value; + + @Schema(description = "配置描述") + private String desc; + + @Schema(description = "额外参数") + private String extra; + + @Schema(description = "排序") + private Integer sort; + + @Schema(description = "创建时间") + private Date createTime; + + @Schema(description = "修改时间") + private Date updateTime; + + @Schema(description = "创建人") + private String creator; + + @Schema(description = "修改人") + private String updater; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictKeyCreateRequest.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictKeyCreateRequest.java new file mode 100644 index 00000000..adc9ca4a --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictKeyCreateRequest.java @@ -0,0 +1,46 @@ +package com.orion.ops.module.infra.entity.request.dict; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import java.io.Serializable; + +/** + * 字典配置项 创建请求对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DictKeyCreateRequest", description = "字典配置项 创建请求对象") +public class DictKeyCreateRequest implements Serializable { + + @NotBlank + @Size(max = 32) + @Schema(description = "配置项") + private String key; + + @NotBlank + @Size(max = 12) + @Schema(description = "配置值定义") + private String valueType; + + @NotBlank + @Schema(description = "额外配置定义") + private String extraSchema; + + @NotBlank + @Size(max = 64) + @Schema(description = "配置描述") + private String desc; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictKeyUpdateRequest.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictKeyUpdateRequest.java new file mode 100644 index 00000000..03da80b3 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictKeyUpdateRequest.java @@ -0,0 +1,51 @@ +package com.orion.ops.module.infra.entity.request.dict; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.io.Serializable; + +/** + * 字典配置项 更新请求对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DictKeyUpdateRequest", description = "字典配置项 更新请求对象") +public class DictKeyUpdateRequest implements Serializable { + + @NotNull + @Schema(description = "id") + private Long id; + + @NotBlank + @Size(max = 32) + @Schema(description = "配置项") + private String key; + + @NotBlank + @Size(max = 12) + @Schema(description = "配置值定义") + private String valueType; + + @NotBlank + @Schema(description = "额外配置定义") + private String extraSchema; + + @NotBlank + @Size(max = 64) + @Schema(description = "配置描述") + private String desc; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictValueCreateRequest.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictValueCreateRequest.java new file mode 100644 index 00000000..45792871 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictValueCreateRequest.java @@ -0,0 +1,55 @@ +package com.orion.ops.module.infra.entity.request.dict; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.io.Serializable; + +/** + * 字典配置值 创建请求对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DictValueCreateRequest", description = "字典配置值 创建请求对象") +public class DictValueCreateRequest implements Serializable { + + @NotNull + @Schema(description = "配置项id") + private Long keyId; + + @NotBlank + @Size(max = 32) + @Schema(description = "配置名称") + private String label; + + @NotBlank + @Size(max = 512) + @Schema(description = "配置值") + private String value; + + @NotBlank + @Size(max = 64) + @Schema(description = "配置描述") + private String desc; + + @NotBlank + @Schema(description = "额外参数") + private String extra; + + @NotNull + @Schema(description = "排序") + private Integer sort; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictValueQueryRequest.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictValueQueryRequest.java new file mode 100644 index 00000000..c4d5911c --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictValueQueryRequest.java @@ -0,0 +1,39 @@ +package com.orion.ops.module.infra.entity.request.dict; + +import com.orion.ops.framework.common.entity.PageRequest; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import javax.validation.constraints.Size; + +/** + * 字典配置值 查询请求对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@Schema(name = "DictValueQueryRequest", description = "字典配置值 查询请求对象") +public class DictValueQueryRequest extends PageRequest { + + @Schema(description = "配置项id") + private Long keyId; + + @Size(max = 32) + @Schema(description = "配置名称") + private String label; + + @Size(max = 512) + @Schema(description = "配置值") + private String value; + + @Size(max = 64) + @Schema(description = "配置描述") + private String desc; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictValueUpdateRequest.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictValueUpdateRequest.java new file mode 100644 index 00000000..73aaf02d --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/dict/DictValueUpdateRequest.java @@ -0,0 +1,64 @@ +package com.orion.ops.module.infra.entity.request.dict; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.io.Serializable; + +/** + * 字典配置值 更新请求对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DictValueUpdateRequest", description = "字典配置值 更新请求对象") +public class DictValueUpdateRequest implements Serializable { + + @NotNull + @Schema(description = "id") + private Long id; + + @NotNull + @Schema(description = "配置项id") + private Long keyId; + + @NotBlank + @Size(max = 32) + @Schema(description = "配置项") + private String key; + + @NotBlank + @Size(max = 32) + @Schema(description = "配置名称") + private String label; + + @NotBlank + @Size(max = 512) + @Schema(description = "配置值") + private String value; + + @NotBlank + @Size(max = 64) + @Schema(description = "配置描述") + private String desc; + + @NotBlank + @Schema(description = "额外参数") + private String extra; + + @NotNull + @Schema(description = "排序") + private Integer sort; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/history/HistoryValueCreateRequest.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/history/HistoryValueCreateRequest.java new file mode 100644 index 00000000..39024067 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/history/HistoryValueCreateRequest.java @@ -0,0 +1,45 @@ +package com.orion.ops.module.infra.entity.request.history; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.io.Serializable; + +/** + * 历史归档 创建请求对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "HistoryValueCreateRequest", description = "历史归档 创建请求对象") +public class HistoryValueCreateRequest implements Serializable { + + @NotNull + @Schema(description = "引用id") + private Long relId; + + @NotBlank + @Size(max = 16) + @Schema(description = "类型") + private String type; + + @NotBlank + @Schema(description = "修改前") + private String beforeValue; + + @NotBlank + @Schema(description = "修改后") + private String afterValue; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/history/HistoryValueQueryRequest.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/history/HistoryValueQueryRequest.java new file mode 100644 index 00000000..69451a65 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/history/HistoryValueQueryRequest.java @@ -0,0 +1,37 @@ +package com.orion.ops.module.infra.entity.request.history; + +import com.orion.ops.framework.common.entity.PageRequest; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +/** + * 历史归档 查询请求对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@Schema(name = "HistoryValueQueryRequest", description = "历史归档 查询请求对象") +public class HistoryValueQueryRequest extends PageRequest { + + @NotNull + @Schema(description = "引用id") + private Long relId; + + @Size(max = 16) + @NotNull + @Schema(description = "类型") + private String type; + + @Schema(description = "搜索") + private String searchValue; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/operator/log/OperatorLogQueryRequest.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/operator/OperatorLogQueryRequest.java similarity index 95% rename from orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/operator/log/OperatorLogQueryRequest.java rename to orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/operator/OperatorLogQueryRequest.java index 9612f810..9b434b43 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/operator/log/OperatorLogQueryRequest.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/operator/OperatorLogQueryRequest.java @@ -1,4 +1,4 @@ -package com.orion.ops.module.infra.entity.request.operator.log; +package com.orion.ops.module.infra.entity.request.operator; import com.fasterxml.jackson.annotation.JsonFormat; import com.orion.ops.framework.common.entity.PageRequest; diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/vo/DictKeyVO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/vo/DictKeyVO.java new file mode 100644 index 00000000..e1d3ab57 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/vo/DictKeyVO.java @@ -0,0 +1,55 @@ +package com.orion.ops.module.infra.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +/** + * 字典配置项 视图响应对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DictKeyVO", description = "字典配置项 视图响应对象") +public class DictKeyVO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + private Long id; + + @Schema(description = "配置项") + private String key; + + @Schema(description = "配置值定义") + private String valueType; + + @Schema(description = "额外配置定义") + private String extraSchema; + + @Schema(description = "配置描述") + private String desc; + + @Schema(description = "创建时间") + private Date createTime; + + @Schema(description = "修改时间") + private Date updateTime; + + @Schema(description = "创建人") + private String creator; + + @Schema(description = "修改人") + private String updater; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/vo/DictValueVO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/vo/DictValueVO.java new file mode 100644 index 00000000..93b015df --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/vo/DictValueVO.java @@ -0,0 +1,64 @@ +package com.orion.ops.module.infra.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +/** + * 字典配置值 视图响应对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DictValueVO", description = "字典配置值 视图响应对象") +public class DictValueVO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + private Long id; + + @Schema(description = "配置项id") + private Long keyId; + + @Schema(description = "配置项") + private String key; + + @Schema(description = "配置名称") + private String label; + + @Schema(description = "配置值") + private String value; + + @Schema(description = "配置描述") + private String desc; + + @Schema(description = "额外参数") + private String extra; + + @Schema(description = "排序") + private Integer sort; + + @Schema(description = "创建时间") + private Date createTime; + + @Schema(description = "修改时间") + private Date updateTime; + + @Schema(description = "创建人") + private String creator; + + @Schema(description = "修改人") + private String updater; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/vo/HistoryValueVO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/vo/HistoryValueVO.java new file mode 100644 index 00000000..d448f9de --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/vo/HistoryValueVO.java @@ -0,0 +1,43 @@ +package com.orion.ops.module.infra.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +/** + * 字典配置项 视图响应对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "HistoryValueVO", description = "字典配置项 视图响应对象") +public class HistoryValueVO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + private Long id; + + @Schema(description = "修改前") + private String beforeValue; + + @Schema(description = "修改后") + private String afterValue; + + @Schema(description = "创建时间") + private Date createTime; + + @Schema(description = "创建人") + private String creator; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DictKeyService.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DictKeyService.java new file mode 100644 index 00000000..ed960f55 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DictKeyService.java @@ -0,0 +1,57 @@ +package com.orion.ops.module.infra.service; + +import com.orion.ops.module.infra.entity.request.dict.DictKeyCreateRequest; +import com.orion.ops.module.infra.entity.request.dict.DictKeyUpdateRequest; +import com.orion.ops.module.infra.entity.vo.DictKeyVO; + +import java.util.List; + +/** + * 字典配置项 服务类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +public interface DictKeyService { + + /** + * 创建字典配置项 + * + * @param request request + * @return id + */ + Long createDictKey(DictKeyCreateRequest request); + + /** + * 更新字典配置项 + * + * @param request request + * @return effect + */ + Integer updateDictKeyById(DictKeyUpdateRequest request); + + /** + * 查询全部字典配置项 + * + * @return rows + */ + List getDictKeyList(); + + /** + * 删除字典配置项 + * + * @param id id + * @return effect + */ + Integer deleteDictKeyById(Long id); + + /** + * 批量删除字典配置项 + * + * @param idList idList + * @return effect + */ + Integer batchDeleteDictKeyByIdList(List idList); + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DictValueService.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DictValueService.java new file mode 100644 index 00000000..aaf74c81 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DictValueService.java @@ -0,0 +1,83 @@ +package com.orion.ops.module.infra.service; + +import com.orion.lang.define.wrapper.DataGrid; +import com.orion.ops.module.infra.entity.request.dict.DictValueCreateRequest; +import com.orion.ops.module.infra.entity.request.dict.DictValueQueryRequest; +import com.orion.ops.module.infra.entity.request.dict.DictValueUpdateRequest; +import com.orion.ops.module.infra.entity.vo.DictValueVO; + +import java.util.List; + +/** + * 字典配置值 服务类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +public interface DictValueService { + + /** + * 创建字典配置值 + * + * @param request request + * @return id + */ + Long createDictValue(DictValueCreateRequest request); + + /** + * 更新字典配置值 + * + * @param request request + * @return effect + */ + Integer updateDictValueById(DictValueUpdateRequest request); + + /** + * 查询字典配置值 + * + * @param id id + * @return row + */ + DictValueVO getDictValueById(Long id); + + /** + * 查询全部字典配置值 + * + * @param request request + * @return rows + */ + List getDictValueList(DictValueQueryRequest request); + + /** + * 通过缓存查询字典配置值 + * + * @return rows + */ + List getDictValueListByCache(); + + /** + * 分页查询字典配置值 + * + * @param request request + * @return rows + */ + DataGrid getDictValuePage(DictValueQueryRequest request); + + /** + * 删除字典配置值 + * + * @param id id + * @return effect + */ + Integer deleteDictValueById(Long id); + + /** + * 批量删除字典配置值 + * + * @param idList idList + * @return effect + */ + Integer batchDeleteDictValueByIdList(List idList); + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/HistoryValueService.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/HistoryValueService.java new file mode 100644 index 00000000..3df8b539 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/HistoryValueService.java @@ -0,0 +1,62 @@ +package com.orion.ops.module.infra.service; + +import com.orion.lang.define.wrapper.DataGrid; +import com.orion.ops.module.infra.entity.domain.HistoryValueDO; +import com.orion.ops.module.infra.entity.request.history.HistoryValueCreateRequest; +import com.orion.ops.module.infra.entity.request.history.HistoryValueQueryRequest; +import com.orion.ops.module.infra.entity.vo.HistoryValueVO; + +import java.util.List; + +/** + * 历史归档 服务类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +public interface HistoryValueService { + + /** + * 创建历史归档 + * + * @param request request + * @return id + */ + Long createHistoryValue(HistoryValueCreateRequest request); + + /** + * 分页查询历史归档 + * + * @param request request + * @return rows + */ + DataGrid getHistoryValuePage(HistoryValueQueryRequest request); + + /** + * 通过 id 查询 + * + * @param id id + * @return value + */ + HistoryValueDO getHistoryById(Long id); + + /** + * 删除历史归档 + * + * @param type type + * @param relId relId + * @return effect + */ + Integer deleteByRelId(String type, Long relId); + + /** + * 批量删除历史归档 + * + * @param type type + * @param relIdList relIdList + * @return effect + */ + Integer deleteByRelIdList(String type, List relIdList); + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/OperatorLogService.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/OperatorLogService.java index 179b55c0..faad8285 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/OperatorLogService.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/OperatorLogService.java @@ -2,7 +2,7 @@ package com.orion.ops.module.infra.service; import com.orion.lang.define.wrapper.DataGrid; import com.orion.ops.framework.biz.operator.log.core.model.OperatorLogModel; -import com.orion.ops.module.infra.entity.request.operator.log.OperatorLogQueryRequest; +import com.orion.ops.module.infra.entity.request.operator.OperatorLogQueryRequest; import com.orion.ops.module.infra.entity.vo.OperatorLogVO; /** diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DictKeyServiceImpl.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DictKeyServiceImpl.java new file mode 100644 index 00000000..72b26247 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DictKeyServiceImpl.java @@ -0,0 +1,144 @@ +package com.orion.ops.module.infra.service.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.orion.ops.framework.common.constant.Const; +import com.orion.ops.framework.common.constant.ErrorMessage; +import com.orion.ops.framework.common.utils.Valid; +import com.orion.ops.framework.redis.core.utils.RedisMaps; +import com.orion.ops.module.infra.convert.DictKeyConvert; +import com.orion.ops.module.infra.dao.DictKeyDAO; +import com.orion.ops.module.infra.define.cache.DictCacheKeyDefine; +import com.orion.ops.module.infra.entity.domain.DictKeyDO; +import com.orion.ops.module.infra.entity.dto.DictKeyCacheDTO; +import com.orion.ops.module.infra.entity.request.dict.DictKeyCreateRequest; +import com.orion.ops.module.infra.entity.request.dict.DictKeyUpdateRequest; +import com.orion.ops.module.infra.entity.vo.DictKeyVO; +import com.orion.ops.module.infra.service.DictKeyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 字典配置项 服务实现类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Slf4j +@Service +public class DictKeyServiceImpl implements DictKeyService { + + @Resource + private DictKeyDAO dictKeyDAO; + + @Override + public Long createDictKey(DictKeyCreateRequest request) { + log.info("DictKeyService-createDictKey request: {}", JSON.toJSONString(request)); + // 转换 + DictKeyDO record = DictKeyConvert.MAPPER.to(request); + // 查询数据是否冲突 + this.checkDictKeyPresent(record); + // 插入 + int effect = dictKeyDAO.insert(record); + Long id = record.getId(); + log.info("DictKeyService-createDictKey id: {}, effect: {}", id, effect); + // 删除缓存 + RedisMaps.delete(DictCacheKeyDefine.DICT_KEY); + return id; + } + + @Override + public Integer updateDictKeyById(DictKeyUpdateRequest request) { + log.info("DictKeyService-updateDictKeyById id: {}, request: {}", request.getId(), JSON.toJSONString(request)); + // 查询 + Long id = Valid.notNull(request.getId(), ErrorMessage.ID_MISSING); + DictKeyDO record = dictKeyDAO.selectById(id); + Valid.notNull(record, ErrorMessage.DATA_ABSENT); + // 转换 + DictKeyDO updateRecord = DictKeyConvert.MAPPER.to(request); + // 查询数据是否冲突 + this.checkDictKeyPresent(updateRecord); + // 更新 + int effect = dictKeyDAO.updateById(updateRecord); + log.info("DictKeyService-updateDictKeyById effect: {}", effect); + // 删除缓存 + RedisMaps.delete(DictCacheKeyDefine.DICT_KEY); + + // 修改 value 的 key + + return effect; + } + + @Override + public List getDictKeyList() { + // 查询缓存 + List list = RedisMaps.valuesJson(DictCacheKeyDefine.DICT_KEY); + if (list.isEmpty()) { + // 查询数据库 + list = dictKeyDAO.of().list(DictKeyConvert.MAPPER::toCache); + // 添加默认值 防止穿透 + if (list.isEmpty()) { + list.add(DictKeyCacheDTO.builder() + .id(Const.NONE_ID) + .build()); + } + // 设置缓存 + RedisMaps.putAllJson(DictCacheKeyDefine.DICT_KEY.getKey(), s -> s.getId().toString(), list); + RedisMaps.setExpire(DictCacheKeyDefine.DICT_KEY); + } + // 删除默认值 + return list.stream() + .filter(s -> !s.getId().equals(Const.NONE_ID)) + .map(DictKeyConvert.MAPPER::to) + .sorted(Comparator.comparing(DictKeyVO::getId).reversed()) + .collect(Collectors.toList()); + } + + @Override + public Integer deleteDictKeyById(Long id) { + log.info("DictKeyService-deleteDictKeyById id: {}", id); + // 检查数据是否存在 + DictKeyDO record = dictKeyDAO.selectById(id); + Valid.notNull(record, ErrorMessage.DATA_ABSENT); + // 删除 + int effect = dictKeyDAO.deleteById(id); + log.info("DictKeyService-deleteDictKeyById id: {}, effect: {}", id, effect); + // 删除缓存 + RedisMaps.delete(DictCacheKeyDefine.DICT_KEY, id); + return effect; + } + + @Override + public Integer batchDeleteDictKeyByIdList(List idList) { + log.info("DictKeyService-batchDeleteDictKeyByIdList idList: {}", idList); + int effect = dictKeyDAO.deleteBatchIds(idList); + log.info("DictKeyService-batchDeleteDictKeyByIdList effect: {}", effect); + // 删除缓存 + RedisMaps.delete(DictCacheKeyDefine.DICT_KEY, idList); + return effect; + } + + /** + * 检查对象是否存在 + * + * @param domain domain + */ + private void checkDictKeyPresent(DictKeyDO domain) { + // 构造条件 + LambdaQueryWrapper wrapper = dictKeyDAO.wrapper() + // 更新时忽略当前记录 + .ne(DictKeyDO::getId, domain.getId()) + // 用其他字段做重复校验 + .eq(DictKeyDO::getKey, domain.getKey()); + // 检查是否存在 + boolean present = dictKeyDAO.of(wrapper).present(); + Valid.isFalse(present, ErrorMessage.DATA_PRESENT); + } + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DictValueServiceImpl.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DictValueServiceImpl.java new file mode 100644 index 00000000..35f11d50 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DictValueServiceImpl.java @@ -0,0 +1,192 @@ +package com.orion.ops.module.infra.service.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.orion.lang.define.wrapper.DataGrid; +import com.orion.ops.framework.common.constant.Const; +import com.orion.ops.framework.common.constant.ErrorMessage; +import com.orion.ops.framework.common.utils.Valid; +import com.orion.ops.framework.redis.core.utils.RedisMaps; +import com.orion.ops.module.infra.convert.DictValueConvert; +import com.orion.ops.module.infra.dao.DictKeyDAO; +import com.orion.ops.module.infra.dao.DictValueDAO; +import com.orion.ops.module.infra.define.cache.DictCacheKeyDefine; +import com.orion.ops.module.infra.entity.domain.DictKeyDO; +import com.orion.ops.module.infra.entity.domain.DictValueDO; +import com.orion.ops.module.infra.entity.dto.DictValueCacheDTO; +import com.orion.ops.module.infra.entity.request.dict.DictValueCreateRequest; +import com.orion.ops.module.infra.entity.request.dict.DictValueQueryRequest; +import com.orion.ops.module.infra.entity.request.dict.DictValueUpdateRequest; +import com.orion.ops.module.infra.entity.vo.DictValueVO; +import com.orion.ops.module.infra.service.DictValueService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 字典配置值 服务实现类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Slf4j +@Service +public class DictValueServiceImpl implements DictValueService { + + @Resource + private DictKeyDAO dictKeyDAO; + + @Resource + private DictValueDAO dictValueDAO; + + @Override + public Long createDictValue(DictValueCreateRequest request) { + log.info("DictValueService-createDictValue request: {}", JSON.toJSONString(request)); + // 转换 + DictValueDO record = DictValueConvert.MAPPER.to(request); + // 查询 key 是否存在 + DictKeyDO key = dictKeyDAO.selectById(request.getKeyId()); + Valid.notNull(key, ErrorMessage.CONFIG_ABSENT); + String keyName = record.getKey(); + // 查询数据是否冲突 + this.checkDictValuePresent(record); + // 插入 + int effect = dictValueDAO.insert(record); + Long id = record.getId(); + log.info("DictValueService-createDictValue id: {}, effect: {}", id, effect); + // 删除缓存 + RedisMaps.delete(DictCacheKeyDefine.DICT_VALUE); + return id; + } + + @Override + public Integer updateDictValueById(DictValueUpdateRequest request) { + log.info("DictValueService-updateDictValueById id: {}, request: {}", request.getId(), JSON.toJSONString(request)); + // 查询 + Long id = Valid.notNull(request.getId(), ErrorMessage.ID_MISSING); + DictValueDO record = dictValueDAO.selectById(id); + Valid.notNull(record, ErrorMessage.DATA_ABSENT); + // 转换 + DictValueDO updateRecord = DictValueConvert.MAPPER.to(request); + // 查询数据是否冲突 + this.checkDictValuePresent(updateRecord); + // 更新 + int effect = dictValueDAO.updateById(updateRecord); + log.info("DictValueService-updateDictValueById effect: {}", effect); + // 删除缓存 + RedisMaps.delete(DictCacheKeyDefine.DICT_VALUE); + return effect; + } + + @Override + public DictValueVO getDictValueById(Long id) { + // 查询 + DictValueDO record = dictValueDAO.selectById(id); + Valid.notNull(record, ErrorMessage.DATA_ABSENT); + // 转换 + return DictValueConvert.MAPPER.to(record); + } + + @Override + public List getDictValueList(DictValueQueryRequest request) { + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(request); + // 查询 + return dictValueDAO.of(wrapper).list(DictValueConvert.MAPPER::to); + } + + @Override + public List getDictValueListByCache() { + // 查询缓存 + List list = RedisMaps.valuesJson(DictCacheKeyDefine.DICT_VALUE); + if (list.isEmpty()) { + // 查询数据库 + list = dictValueDAO.of().list(DictValueConvert.MAPPER::toCache); + // 添加默认值 防止穿透 + if (list.isEmpty()) { + list.add(DictValueCacheDTO.builder() + .id(Const.NONE_ID) + .build()); + } + // 设置缓存 + RedisMaps.putAllJson(DictCacheKeyDefine.DICT_VALUE.getKey(), s -> s.getId().toString(), list); + RedisMaps.setExpire(DictCacheKeyDefine.DICT_VALUE); + } + // 删除默认值 + return list.stream() + .filter(s -> !s.getId().equals(Const.NONE_ID)) + .map(DictValueConvert.MAPPER::to) + .collect(Collectors.toList()); + } + + @Override + public DataGrid getDictValuePage(DictValueQueryRequest request) { + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(request); + // 查询 + return dictValueDAO.of(wrapper) + .page(request) + .dataGrid(DictValueConvert.MAPPER::to); + } + + @Override + public Integer deleteDictValueById(Long id) { + log.info("DictValueService-deleteDictValueById id: {}", id); + // 检查数据是否存在 + DictValueDO record = dictValueDAO.selectById(id); + Valid.notNull(record, ErrorMessage.DATA_ABSENT); + // 删除 + int effect = dictValueDAO.deleteById(id); + log.info("DictValueService-deleteDictValueById id: {}, effect: {}", id, effect); + // 删除缓存 + RedisMaps.delete(DictCacheKeyDefine.DICT_VALUE, id); + return effect; + } + + @Override + public Integer batchDeleteDictValueByIdList(List idList) { + log.info("DictValueService-batchDeleteDictValueByIdList idList: {}", idList); + int effect = dictValueDAO.deleteBatchIds(idList); + log.info("DictValueService-batchDeleteDictValueByIdList effect: {}", effect); + // 删除缓存 + RedisMaps.delete(DictCacheKeyDefine.DICT_VALUE, idList); + return effect; + } + + /** + * 检查对象是否存在 + * + * @param domain domain + */ + private void checkDictValuePresent(DictValueDO domain) { + // 构造条件 + LambdaQueryWrapper wrapper = dictValueDAO.wrapper() + // 更新时忽略当前记录 + .ne(DictValueDO::getId, domain.getId()) + // 用其他字段做重复校验 + .eq(DictValueDO::getKeyId, domain.getKeyId()) + .eq(DictValueDO::getLabel, domain.getLabel()); + // 检查是否存在 + boolean present = dictValueDAO.of(wrapper).present(); + Valid.isFalse(present, ErrorMessage.CONFIG_PRESENT); + } + + /** + * 构建查询 wrapper + * + * @param request request + * @return wrapper + */ + private LambdaQueryWrapper buildQueryWrapper(DictValueQueryRequest request) { + return dictValueDAO.wrapper() + .eq(DictValueDO::getKeyId, request.getKeyId()) + .eq(DictValueDO::getLabel, request.getLabel()) + .eq(DictValueDO::getValue, request.getValue()) + .eq(DictValueDO::getDesc, request.getDesc()); + } + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/HistoryValueServiceImpl.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/HistoryValueServiceImpl.java new file mode 100644 index 00000000..174a2cc1 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/HistoryValueServiceImpl.java @@ -0,0 +1,95 @@ +package com.orion.ops.module.infra.service.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.orion.lang.define.wrapper.DataGrid; +import com.orion.lang.utils.Strings; +import com.orion.ops.module.infra.convert.HistoryValueConvert; +import com.orion.ops.module.infra.dao.HistoryValueDAO; +import com.orion.ops.module.infra.entity.domain.HistoryValueDO; +import com.orion.ops.module.infra.entity.request.history.HistoryValueCreateRequest; +import com.orion.ops.module.infra.entity.request.history.HistoryValueQueryRequest; +import com.orion.ops.module.infra.entity.vo.HistoryValueVO; +import com.orion.ops.module.infra.service.HistoryValueService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 历史归档 服务实现类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-10-16 16:33 + */ +@Slf4j +@Service +public class HistoryValueServiceImpl implements HistoryValueService { + + @Resource + private HistoryValueDAO historyValueDAO; + + @Override + public Long createHistoryValue(HistoryValueCreateRequest request) { + log.info("HistoryValueService-createHistoryValue request: {}", JSON.toJSONString(request)); + // 转换 + HistoryValueDO record = HistoryValueConvert.MAPPER.to(request); + // 插入 + int effect = historyValueDAO.insert(record); + Long id = record.getId(); + log.info("HistoryValueService-createHistoryValue id: {}, effect: {}", id, effect); + return id; + } + + @Override + public DataGrid getHistoryValuePage(HistoryValueQueryRequest request) { + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(request); + // 查询 + return historyValueDAO.of(wrapper) + .page(request) + .dataGrid(HistoryValueConvert.MAPPER::to); + } + + @Override + public HistoryValueDO getHistoryById(Long id) { + return historyValueDAO.selectById(id); + } + + @Override + public Integer deleteByRelId(String type, Long relId) { + log.info("HistoryValueService-deleteByRelId type: {}, relId: {}", type, relId); + int effect = historyValueDAO.deleteByRelId(type, relId); + log.info("HistoryValueService-deleteByRelId type: {}, effect: {}", type, effect); + return effect; + } + + @Override + public Integer deleteByRelIdList(String type, List relIdList) { + log.info("HistoryValueService-deleteByRelIdList type: {}, relIdList: {}", type, relIdList); + int effect = historyValueDAO.deleteByRelIdList(type, relIdList); + log.info("HistoryValueService-deleteByRelIdList type: {}, effect: {}", type, effect); + return effect; + } + + /** + * 构建查询 wrapper + * + * @param request request + * @return wrapper + */ + private LambdaQueryWrapper buildQueryWrapper(HistoryValueQueryRequest request) { + String searchValue = request.getSearchValue(); + return historyValueDAO.wrapper() + .eq(HistoryValueDO::getRelId, request.getRelId()) + .eq(HistoryValueDO::getType, request.getType()) + .and(Strings.isNotEmpty(searchValue), c -> c + .eq(HistoryValueDO::getBeforeValue, searchValue).or() + .eq(HistoryValueDO::getAfterValue, searchValue) + ) + .orderByDesc(HistoryValueDO::getId); + } + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/OperatorLogServiceImpl.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/OperatorLogServiceImpl.java index e14bb912..5646f83d 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/OperatorLogServiceImpl.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/OperatorLogServiceImpl.java @@ -6,7 +6,7 @@ import com.orion.ops.framework.biz.operator.log.core.model.OperatorLogModel; import com.orion.ops.module.infra.convert.OperatorLogConvert; import com.orion.ops.module.infra.dao.OperatorLogDAO; import com.orion.ops.module.infra.entity.domain.OperatorLogDO; -import com.orion.ops.module.infra.entity.request.operator.log.OperatorLogQueryRequest; +import com.orion.ops.module.infra.entity.request.operator.OperatorLogQueryRequest; import com.orion.ops.module.infra.entity.vo.OperatorLogVO; import com.orion.ops.module.infra.service.OperatorLogService; import lombok.extern.slf4j.Slf4j; diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/DictKeyMapper.xml b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/DictKeyMapper.xml new file mode 100644 index 00000000..14d02fa6 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/DictKeyMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + id, key, value_type, extra_schema, desc, create_time, update_time, creator, updater, deleted + + + diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/DictValueMapper.xml b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/DictValueMapper.xml new file mode 100644 index 00000000..414f7ff4 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/DictValueMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + id, key_id, key, label, value, desc, extra, sort, create_time, update_time, creator, updater, deleted + + + diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/HistoryValueMapper.xml b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/HistoryValueMapper.xml new file mode 100644 index 00000000..2e1302cd --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/HistoryValueMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, rel_id, type, before_value, after_value, create_time, creator, deleted + + +