From ddd603c9575f46ac7065602714d3e10bf4eea432 Mon Sep 17 00:00:00 2001 From: lijiahang Date: Mon, 22 Jan 2024 18:49:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=91=BD=E4=BB=A4=E7=89=87=E6=AE=B5=20?= =?UTF-8?q?api.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/generator/CodeGenerators.java | 6 +- .../controller/CommandSnippetController.java | 67 ++++++++++ .../asset/convert/CommandSnippetConvert.java | 40 ++++++ .../module/asset/dao/CommandSnippetDAO.java | 17 +++ .../cache/CommandSnippetCacheKeyDefine.java | 27 ++++ .../asset/entity/domain/CommandSnippetDO.java | 49 +++++++ .../entity/dto/CommandSnippetCacheDTO.java | 41 ++++++ .../command/CommandSnippetCreateRequest.java | 41 ++++++ .../command/CommandSnippetQueryRequest.java | 28 ++++ .../command/CommandSnippetUpdateRequest.java | 46 +++++++ .../asset/service/CommandSnippetService.java | 51 ++++++++ .../impl/CommandSnippetServiceImpl.java | 123 ++++++++++++++++++ .../resources/mapper/CommandSnippetMapper.xml | 24 ++++ .../module/infra/enums/DataGroupTypeEnum.java | 5 + 14 files changed, 563 insertions(+), 2 deletions(-) create mode 100644 orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/CommandSnippetController.java create mode 100644 orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/convert/CommandSnippetConvert.java create mode 100644 orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/dao/CommandSnippetDAO.java create mode 100644 orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/define/cache/CommandSnippetCacheKeyDefine.java create mode 100644 orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/domain/CommandSnippetDO.java create mode 100644 orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/dto/CommandSnippetCacheDTO.java create mode 100644 orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/command/CommandSnippetCreateRequest.java create mode 100644 orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/command/CommandSnippetQueryRequest.java create mode 100644 orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/command/CommandSnippetUpdateRequest.java create mode 100644 orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/CommandSnippetService.java create mode 100644 orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/CommandSnippetServiceImpl.java create mode 100644 orion-ops-module-asset/orion-ops-module-asset-service/src/main/resources/mapper/CommandSnippetMapper.xml diff --git a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/core/generator/CodeGenerators.java b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/core/generator/CodeGenerators.java index f0061f8f..028c317b 100644 --- a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/core/generator/CodeGenerators.java +++ b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/core/generator/CodeGenerators.java @@ -45,9 +45,11 @@ public class CodeGenerators { // .color("blue", "gray", "red", "green", "white") // .valueUseFields() // .build(), - Template.create("host_connect_log", "主机连接日志", "host") + Template.create("command_snippet", "命令片段", "command") .disableUnitTest() - .vue("asset", "host-connect-log") + .cache("command:snippet:list:{}", "命令片段列表 ${userId}") + .expire(1, TimeUnit.DAYS) + .vue("host", "command-snippet") .build(), }; // jdbc 配置 - 使用配置文件 diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/CommandSnippetController.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/CommandSnippetController.java new file mode 100644 index 00000000..4e360050 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/CommandSnippetController.java @@ -0,0 +1,67 @@ +package com.orion.ops.module.asset.controller; + +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.asset.entity.request.command.CommandSnippetCreateRequest; +import com.orion.ops.module.asset.entity.request.command.CommandSnippetQueryRequest; +import com.orion.ops.module.asset.entity.request.command.CommandSnippetUpdateRequest; +import com.orion.ops.module.asset.entity.vo.CommandSnippetVO; +import com.orion.ops.module.asset.service.CommandSnippetService; +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.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 2024-1-22 15:28 + */ +@Tag(name = "asset - 命令片段服务") +@Slf4j +@Validated +@RestWrapper +@RestController +@RequestMapping("/asset/command-snippet") +@SuppressWarnings({"ELValidationInJSP", "SpringElInspection"}) +public class CommandSnippetController { + + @Resource + private CommandSnippetService commandSnippetService; + + @PostMapping("/create") + @Operation(summary = "创建命令片段") + public Long createCommandSnippet(@Validated @RequestBody CommandSnippetCreateRequest request) { + return commandSnippetService.createCommandSnippet(request); + } + + @PutMapping("/update") + @Operation(summary = "更新命令片段") + public Integer updateCommandSnippet(@Validated @RequestBody CommandSnippetUpdateRequest request) { + return commandSnippetService.updateCommandSnippetById(request); + } + + @IgnoreLog(IgnoreLogMode.RET) + @PostMapping("/list") + @Operation(summary = "查询全部命令片段") + public List getCommandSnippetList(@Validated @RequestBody CommandSnippetQueryRequest request) { + return commandSnippetService.getCommandSnippetList(request); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除命令片段") + @Parameter(name = "id", description = "id", required = true) + public Integer deleteCommandSnippet(@RequestParam("id") Long id) { + return commandSnippetService.deleteCommandSnippetById(id); + } + +} + diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/convert/CommandSnippetConvert.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/convert/CommandSnippetConvert.java new file mode 100644 index 00000000..f1637e3a --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/convert/CommandSnippetConvert.java @@ -0,0 +1,40 @@ +package com.orion.ops.module.asset.convert; + +import com.orion.ops.module.asset.entity.domain.CommandSnippetDO; +import com.orion.ops.module.asset.entity.dto.CommandSnippetCacheDTO; +import com.orion.ops.module.asset.entity.request.command.CommandSnippetCreateRequest; +import com.orion.ops.module.asset.entity.request.command.CommandSnippetQueryRequest; +import com.orion.ops.module.asset.entity.request.command.CommandSnippetUpdateRequest; +import com.orion.ops.module.asset.entity.vo.CommandSnippetVO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 命令片段 内部对象转换器 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024-1-22 15:28 + */ +@Mapper +public interface CommandSnippetConvert { + + CommandSnippetConvert MAPPER = Mappers.getMapper(CommandSnippetConvert.class); + + CommandSnippetDO to(CommandSnippetCreateRequest request); + + CommandSnippetDO to(CommandSnippetUpdateRequest request); + + CommandSnippetDO to(CommandSnippetQueryRequest request); + + CommandSnippetVO to(CommandSnippetDO domain); + + List to(List list); + + CommandSnippetVO to(CommandSnippetCacheDTO cache); + + CommandSnippetCacheDTO toCache(CommandSnippetDO domain); + +} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/dao/CommandSnippetDAO.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/dao/CommandSnippetDAO.java new file mode 100644 index 00000000..8ffae191 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/dao/CommandSnippetDAO.java @@ -0,0 +1,17 @@ +package com.orion.ops.module.asset.dao; + +import com.orion.ops.framework.mybatis.core.mapper.IMapper; +import com.orion.ops.module.asset.entity.domain.CommandSnippetDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 命令片段 Mapper 接口 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024-1-22 15:28 + */ +@Mapper +public interface CommandSnippetDAO extends IMapper { + +} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/define/cache/CommandSnippetCacheKeyDefine.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/define/cache/CommandSnippetCacheKeyDefine.java new file mode 100644 index 00000000..d9769c61 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/define/cache/CommandSnippetCacheKeyDefine.java @@ -0,0 +1,27 @@ +package com.orion.ops.module.asset.define.cache; + +import com.orion.lang.define.cache.key.CacheKeyBuilder; +import com.orion.lang.define.cache.key.CacheKeyDefine; +import com.orion.lang.define.cache.key.struct.RedisCacheStruct; +import com.orion.ops.module.asset.entity.dto.CommandSnippetCacheDTO; + +import java.util.concurrent.TimeUnit; + +/** + * 命令片段缓存 key + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024-1-22 15:28 + */ +public interface CommandSnippetCacheKeyDefine { + + CacheKeyDefine COMMAND_SNIPPET = new CacheKeyBuilder() + .key("command:snippet:list:{}") + .desc("命令片段列表 ${userId}") + .type(CommandSnippetCacheDTO.class) + .struct(RedisCacheStruct.HASH) + .timeout(1, TimeUnit.DAYS) + .build(); + +} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/domain/CommandSnippetDO.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/domain/CommandSnippetDO.java new file mode 100644 index 00000000..4390d3a8 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/domain/CommandSnippetDO.java @@ -0,0 +1,49 @@ +package com.orion.ops.module.asset.entity.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.orion.ops.framework.mybatis.core.domain.BaseDO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.util.*; +import java.math.*; + +/** + * 命令片段 实体对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024-1-22 15:28 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName(value = "command_snippet", autoResultMap = true) +@Schema(name = "CommandSnippetDO", description = "命令片段 实体对象") +public class CommandSnippetDO extends BaseDO { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @Schema(description = "用户id") + @TableField("user_id") + private Long userId; + + @Schema(description = "名称") + @TableField("name") + private String name; + + @Schema(description = "触发前缀") + @TableField("prefix") + private String prefix; + + @Schema(description = "代码片段") + @TableField("command") + private String command; + +} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/dto/CommandSnippetCacheDTO.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/dto/CommandSnippetCacheDTO.java new file mode 100644 index 00000000..08f94914 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/dto/CommandSnippetCacheDTO.java @@ -0,0 +1,41 @@ +package com.orion.ops.module.asset.entity.dto; + +import com.orion.lang.define.cache.key.model.LongCacheIdModel; +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 2024-1-22 15:28 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "CommandSnippetCacheDTO", description = "命令片段 缓存对象") +public class CommandSnippetCacheDTO implements LongCacheIdModel, Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + private Long id; + + @Schema(description = "名称") + private String name; + + @Schema(description = "触发前缀") + private String prefix; + + @Schema(description = "代码片段") + private String command; + +} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/command/CommandSnippetCreateRequest.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/command/CommandSnippetCreateRequest.java new file mode 100644 index 00000000..23b57b87 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/command/CommandSnippetCreateRequest.java @@ -0,0 +1,41 @@ +package com.orion.ops.module.asset.entity.request.command; + +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 2024-1-22 15:28 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "CommandSnippetCreateRequest", description = "命令片段 创建请求对象") +public class CommandSnippetCreateRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotBlank + @Size(max = 64) + @Schema(description = "名称") + private String name; + + @Schema(description = "groupId") + private Long groupId; + + @NotBlank + @Schema(description = "代码片段") + private String command; + +} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/command/CommandSnippetQueryRequest.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/command/CommandSnippetQueryRequest.java new file mode 100644 index 00000000..c39f1b83 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/command/CommandSnippetQueryRequest.java @@ -0,0 +1,28 @@ +package com.orion.ops.module.asset.entity.request.command; + +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 2024-1-22 15:28 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@Schema(name = "CommandSnippetQueryRequest", description = "命令片段 查询请求对象") +public class CommandSnippetQueryRequest extends PageRequest { + + @Size(max = 64) + @Schema(description = "名称") + private String name; + +} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/command/CommandSnippetUpdateRequest.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/command/CommandSnippetUpdateRequest.java new file mode 100644 index 00000000..bb28d072 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/command/CommandSnippetUpdateRequest.java @@ -0,0 +1,46 @@ +package com.orion.ops.module.asset.entity.request.command; + +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 2024-1-22 15:28 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "CommandSnippetUpdateRequest", description = "命令片段 更新请求对象") +public class CommandSnippetUpdateRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotNull + @Schema(description = "id") + private Long id; + + @NotBlank + @Size(max = 64) + @Schema(description = "名称") + private String name; + + @Schema(description = "groupId") + private Long groupId; + + @NotBlank + @Schema(description = "代码片段") + private String command; + +} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/CommandSnippetService.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/CommandSnippetService.java new file mode 100644 index 00000000..6a2b0a33 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/CommandSnippetService.java @@ -0,0 +1,51 @@ +package com.orion.ops.module.asset.service; + +import com.orion.ops.module.asset.entity.request.command.CommandSnippetCreateRequest; +import com.orion.ops.module.asset.entity.request.command.CommandSnippetQueryRequest; +import com.orion.ops.module.asset.entity.request.command.CommandSnippetUpdateRequest; +import com.orion.ops.module.asset.entity.vo.CommandSnippetVO; + +import java.util.List; + +/** + * 命令片段 服务类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024-1-22 15:28 + */ +public interface CommandSnippetService { + + /** + * 创建命令片段 + * + * @param request request + * @return id + */ + Long createCommandSnippet(CommandSnippetCreateRequest request); + + /** + * 更新命令片段 + * + * @param request request + * @return effect + */ + Integer updateCommandSnippetById(CommandSnippetUpdateRequest request); + + /** + * 查询全部命令片段 + * + * @param request request + * @return rows + */ + List getCommandSnippetList(CommandSnippetQueryRequest request); + + /** + * 删除命令片段 + * + * @param id id + * @return effect + */ + Integer deleteCommandSnippetById(Long id); + +} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/CommandSnippetServiceImpl.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/CommandSnippetServiceImpl.java new file mode 100644 index 00000000..3c40601c --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/CommandSnippetServiceImpl.java @@ -0,0 +1,123 @@ +package com.orion.ops.module.asset.service.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.asset.convert.CommandSnippetConvert; +import com.orion.ops.module.asset.dao.CommandSnippetDAO; +import com.orion.ops.module.asset.define.cache.CommandSnippetCacheKeyDefine; +import com.orion.ops.module.asset.entity.domain.CommandSnippetDO; +import com.orion.ops.module.asset.entity.request.command.CommandSnippetCreateRequest; +import com.orion.ops.module.asset.entity.request.command.CommandSnippetQueryRequest; +import com.orion.ops.module.asset.entity.request.command.CommandSnippetUpdateRequest; +import com.orion.ops.module.asset.entity.vo.CommandSnippetVO; +import com.orion.ops.module.asset.service.CommandSnippetService; +import com.orion.ops.module.infra.api.DataGroupRelApi; +import com.orion.ops.module.infra.enums.DataGroupTypeEnum; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 命令片段 服务实现类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024-1-22 15:28 + */ +@Slf4j +@Service +public class CommandSnippetServiceImpl implements CommandSnippetService { + + @Resource + private CommandSnippetDAO commandSnippetDAO; + + @Resource + private DataGroupRelApi dataGroupRelApi; + + @Override + public Long createCommandSnippet(CommandSnippetCreateRequest request) { + log.info("CommandSnippetService-createCommandSnippet request: {}", JSON.toJSONString(request)); + // 转换 + CommandSnippetDO record = CommandSnippetConvert.MAPPER.to(request); + // 插入 + int effect = commandSnippetDAO.insert(record); + Long id = record.getId(); + log.info("CommandSnippetService-createCommandSnippet id: {}, effect: {}", id, effect); + // 设置分组引用 + if (request.getGroupId() != null) { + dataGroupRelApi.addGroupRel(request.getGroupId(), id); + } + // 删除缓存 + RedisMaps.delete(CommandSnippetCacheKeyDefine.COMMAND_SNIPPET); + return id; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer updateCommandSnippetById(CommandSnippetUpdateRequest request) { + Long id = Valid.notNull(request.getId(), ErrorMessage.ID_MISSING); + log.info("CommandSnippetService-updateCommandSnippetById id: {}, request: {}", id, JSON.toJSONString(request)); + // 查询 + CommandSnippetDO record = commandSnippetDAO.selectById(id); + Valid.notNull(record, ErrorMessage.DATA_ABSENT); + // 转换 + CommandSnippetDO updateRecord = CommandSnippetConvert.MAPPER.to(request); + // 更新 + int effect = commandSnippetDAO.updateById(updateRecord); + log.info("CommandSnippetService-updateCommandSnippetById effect: {}", effect); + // 删除分组引用 + dataGroupRelApi.deleteByRelId(DataGroupTypeEnum.COMMAND_SNIPPET, id); + // 设置分组引用 + if (request.getGroupId() != null) { + dataGroupRelApi.addGroupRel(request.getGroupId(), id); + } + // 删除缓存 + RedisMaps.delete(CommandSnippetCacheKeyDefine.COMMAND_SNIPPET); + return effect; + } + + @Override + public List getCommandSnippetList(CommandSnippetQueryRequest request) { + // FIXME 查询缓存 + // fixme 查询分组 + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(request); + // 查询 + return commandSnippetDAO.of(wrapper).list(CommandSnippetConvert.MAPPER::to); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer deleteCommandSnippetById(Long id) { + log.info("CommandSnippetService-deleteCommandSnippetById id: {}", id); + // 检查数据是否存在 + CommandSnippetDO record = commandSnippetDAO.selectById(id); + Valid.notNull(record, ErrorMessage.DATA_ABSENT); + // 删除 + int effect = commandSnippetDAO.deleteById(id); + log.info("CommandSnippetService-deleteCommandSnippetById id: {}, effect: {}", id, effect); + // 删除分组引用 + dataGroupRelApi.deleteByRelId(DataGroupTypeEnum.COMMAND_SNIPPET, id); + // 删除缓存 + RedisMaps.delete(CommandSnippetCacheKeyDefine.COMMAND_SNIPPET, id); + return effect; + } + + /** + * 构建查询 wrapper + * + * @param request request + * @return wrapper + */ + private LambdaQueryWrapper buildQueryWrapper(CommandSnippetQueryRequest request) { + return commandSnippetDAO.wrapper() + .eq(CommandSnippetDO::getName, request.getName()); + } + +} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/resources/mapper/CommandSnippetMapper.xml b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/resources/mapper/CommandSnippetMapper.xml new file mode 100644 index 00000000..dccc868b --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/resources/mapper/CommandSnippetMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + id, user_id, name, prefix, command, create_time, update_time, creator, updater, deleted + + + diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/enums/DataGroupTypeEnum.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/enums/DataGroupTypeEnum.java index f3097ede..0bd1b49d 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/enums/DataGroupTypeEnum.java +++ b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/enums/DataGroupTypeEnum.java @@ -14,6 +14,11 @@ public enum DataGroupTypeEnum { */ HOST, + /** + * 命令片段 + */ + COMMAND_SNIPPET, + ; public static DataGroupTypeEnum of(String type) {