From 1b4ca8e85a9f68efce1b58fdc14347d94511dfd6 Mon Sep 17 00:00:00 2001 From: lijiahang Date: Tue, 7 Nov 2023 19:05:31 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E6=88=90=E6=95=B0=E6=8D=AE=E5=88=86?= =?UTF-8?q?=E7=BB=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../log/core/aspect/OperatorLogAspect.java | 17 +- .../core/generator/CodeGenerators.java | 36 ++- .../generator/template/CacheTemplate.java | 2 +- .../ops/module/infra/api/DataGroupApi.java | 104 ++++++++ .../ops/module/infra/api/DataGroupRelApi.java | 104 ++++++++ .../entity/dto/data/DataGroupCreateDTO.java | 48 ++++ .../infra/entity/dto/data/DataGroupDTO.java | 53 ++++ .../entity/dto/data/DataGroupQueryDTO.java | 45 ++++ .../dto/data/DataGroupRelCreateDTO.java | 47 ++++ .../entity/dto/data/DataGroupRelDTO.java | 53 ++++ .../entity/dto/data/DataGroupRelQueryDTO.java | 44 ++++ .../dto/data/DataGroupRelUpdateDTO.java | 51 ++++ .../entity/dto/data/DataGroupUpdateDTO.java | 52 ++++ .../infra/api/impl/DataGroupApiImpl.java | 176 +++++++++++++ .../infra/api/impl/DataGroupRelApiImpl.java | 176 +++++++++++++ .../infra/convert/DataGroupConvert.java | 41 +++ .../convert/DataGroupProviderConvert.java | 46 ++++ .../infra/convert/DataGroupRelConvert.java | 41 +++ .../convert/DataGroupRelProviderConvert.java | 46 ++++ .../ops/module/infra/dao/DataGroupDAO.java | 33 +++ .../ops/module/infra/dao/DataGroupRelDAO.java | 33 +++ .../define/cache/DataGroupCacheKeyDefine.java | 30 +++ .../cache/DataGroupRelCacheKeyDefine.java | 30 +++ .../operator/DataGroupOperatorType.java | 34 +++ .../operator/DataGroupRelOperatorType.java | 34 +++ .../infra/entity/domain/DataGroupDO.java | 49 ++++ .../infra/entity/domain/DataGroupRelDO.java | 49 ++++ .../infra/entity/dto/DataGroupCacheDTO.java | 53 ++++ .../entity/dto/DataGroupRelCacheDTO.java | 53 ++++ .../request/data/DataGroupCreateRequest.java | 49 ++++ .../request/data/DataGroupQueryRequest.java | 47 ++++ .../data/DataGroupRelCreateRequest.java | 48 ++++ .../data/DataGroupRelQueryRequest.java | 46 ++++ .../data/DataGroupRelUpdateRequest.java | 52 ++++ .../request/data/DataGroupUpdateRequest.java | 53 ++++ .../infra/entity/vo/DataGroupRelVO.java | 53 ++++ .../module/infra/entity/vo/DataGroupVO.java | 53 ++++ .../infra/service/DataGroupRelService.java | 120 +++++++++ .../infra/service/DataGroupService.java | 120 +++++++++ .../service/impl/DataGroupRelServiceImpl.java | 247 ++++++++++++++++++ .../service/impl/DataGroupServiceImpl.java | 247 ++++++++++++++++++ .../main/resources/mapper/DataGroupMapper.xml | 24 ++ .../resources/mapper/DataGroupRelMapper.xml | 24 ++ 43 files changed, 2737 insertions(+), 26 deletions(-) create mode 100644 orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/api/DataGroupApi.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/api/DataGroupRelApi.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupCreateDTO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupDTO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupQueryDTO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupRelCreateDTO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupRelDTO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupRelQueryDTO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupRelUpdateDTO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupUpdateDTO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/DataGroupApiImpl.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/DataGroupRelApiImpl.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataGroupConvert.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataGroupProviderConvert.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataGroupRelConvert.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataGroupRelProviderConvert.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/DataGroupDAO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/DataGroupRelDAO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/cache/DataGroupCacheKeyDefine.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/cache/DataGroupRelCacheKeyDefine.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/operator/DataGroupOperatorType.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/operator/DataGroupRelOperatorType.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/domain/DataGroupDO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/domain/DataGroupRelDO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/dto/DataGroupCacheDTO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/dto/DataGroupRelCacheDTO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataGroupCreateRequest.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataGroupQueryRequest.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataGroupRelCreateRequest.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataGroupRelQueryRequest.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataGroupRelUpdateRequest.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataGroupUpdateRequest.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/vo/DataGroupRelVO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/vo/DataGroupVO.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DataGroupRelService.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DataGroupService.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataGroupRelServiceImpl.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataGroupServiceImpl.java create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/DataGroupMapper.xml create mode 100644 orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/DataGroupRelMapper.xml diff --git a/orion-ops-framework/orion-ops-spring-boot-starter-biz-operator-log/src/main/java/com/orion/ops/framework/biz/operator/log/core/aspect/OperatorLogAspect.java b/orion-ops-framework/orion-ops-spring-boot-starter-biz-operator-log/src/main/java/com/orion/ops/framework/biz/operator/log/core/aspect/OperatorLogAspect.java index f1f9c0c1..2b18d190 100644 --- a/orion-ops-framework/orion-ops-spring-boot-starter-biz-operator-log/src/main/java/com/orion/ops/framework/biz/operator/log/core/aspect/OperatorLogAspect.java +++ b/orion-ops-framework/orion-ops-spring-boot-starter-biz-operator-log/src/main/java/com/orion/ops/framework/biz/operator/log/core/aspect/OperatorLogAspect.java @@ -139,19 +139,19 @@ public class OperatorLogAspect { break; } OperatorLogs.add( - orElse(((RequestParam) annotation).value(), + Strings.ifBlank(((RequestParam) annotation).value(), ((RequestParam) annotation).name()), args[i]); break; } else if (annotation instanceof RequestHeader) { OperatorLogs.add( - orElse(((RequestHeader) annotation).value(), + Strings.ifBlank(((RequestHeader) annotation).value(), ((RequestHeader) annotation).name()), args[i]); break; } else if (annotation instanceof PathVariable) { OperatorLogs.add( - orElse(((PathVariable) annotation).value(), + Strings.ifBlank(((PathVariable) annotation).value(), ((PathVariable) annotation).name()), args[i]); break; @@ -316,15 +316,4 @@ public class OperatorLogAspect { LOG_SAVER.submit(() -> operatorLogFrameworkService.insert(model)); } - /** - * 获取可用值 - * - * @param value value - * @param name name - * @return available - */ - private String orElse(String value, String name) { - return Strings.isBlank(value) ? name : value; - } - } 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 0dc38eb5..22248915 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 @@ -30,20 +30,34 @@ public class CodeGenerators { String module = "infra"; // 生成的表 Table[] tables = { - Template.create("dict_key", "字典配置项", "dict") + // Template.create("dict_key", "字典配置项", "dict") + // .enableProviderApi() + // .disableUnitTest() + // .cache("dict:keys", "字典配置项") + // .expire(1, TimeUnit.DAYS) + // .vue("system", "dict-key") + // .enableRowSelection() + // .enableCardView() + // .enableDrawerForm() + // .dict("dictValueType", "value_type") + // .fields("STRING", "INTEGER", "DECIMAL", "BOOLEAN", "COLOR") + // .labels("字符串", "整数", "小数", "布尔值", "颜色") + // .color("blue", "gray", "red", "green", "white") + // .valueUseFields() + // .build(), + Template.create("data_group", "数据分组", "data") .enableProviderApi() .disableUnitTest() - .cache("dict:keys", "字典配置项") + .cache("data:group:{}", "数据分组 ${type}") .expire(1, TimeUnit.DAYS) - .vue("system", "dict-key") - .enableRowSelection() - .enableCardView() - .enableDrawerForm() - .dict("dictValueType", "value_type") - .fields("STRING", "INTEGER", "DECIMAL", "BOOLEAN", "COLOR") - .labels("字符串", "整数", "小数", "布尔值", "颜色") - .color("blue", "gray", "red", "green", "white") - .valueUseFields() + .vue("system", "data-group") + .build(), + Template.create("data_group_rel", "数据分组关联", "data") + .enableProviderApi() + .disableUnitTest() + .cache("data:group-rel:{}", "数据分组关联 ${groupId}") + .expire(1, TimeUnit.DAYS) + .vue("system", "data-group-rel") .build(), }; // jdbc 配置 - 使用配置文件 diff --git a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/core/generator/template/CacheTemplate.java b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/core/generator/template/CacheTemplate.java index 0e337032..47e30122 100644 --- a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/core/generator/template/CacheTemplate.java +++ b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/core/generator/template/CacheTemplate.java @@ -9,7 +9,7 @@ import java.util.concurrent.TimeUnit; * @version 1.0.0 * @since 2023/9/26 1:14 */ -public class CacheTemplate extends ServerTemplate { +public class CacheTemplate extends Template { public CacheTemplate(Table table) { this(table, table.cacheKey, table.cacheDesc); diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/api/DataGroupApi.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/api/DataGroupApi.java new file mode 100644 index 00000000..765dfb4d --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/api/DataGroupApi.java @@ -0,0 +1,104 @@ +package com.orion.ops.module.infra.api; + +import com.orion.ops.module.infra.entity.dto.data.*; + +import java.util.List; + +/** + * 数据分组 对外服务类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +public interface DataGroupApi { + + /** + * 创建数据分组 + * + * @param dto dto + * @return id + */ + Long createDataGroup(DataGroupCreateDTO dto); + + /** + * 更新数据分组 + * + * @param dto dto + * @return effect + */ + Integer updateDataGroupById(DataGroupUpdateDTO dto); + + /** + * 根据条件更新数据分组 + * + * @param query query + * @param update update + * @return effect + */ + Integer updateDataGroup(DataGroupQueryDTO query, DataGroupUpdateDTO update); + + /** + * 查询数据分组 + * + * @param id id + * @return row + */ + DataGroupDTO getDataGroupById(Long id); + + /** + * 批量查询数据分组 + * + * @param idList idList + * @return rows + */ + List getDataGroupByIdList(List idList); + + /** + * 查询全部数据分组 + * + * @param dto dto + * @return rows + */ + List getDataGroupList(DataGroupQueryDTO dto); + + /** + * 通过缓存查询数据分组 + * + * @return rows + */ + List getDataGroupListByCache(); + + /** + * 查询数据分组数量 + * + * @param dto dto + * @return count + */ + Long getDataGroupCount(DataGroupQueryDTO dto); + + /** + * 删除数据分组 + * + * @param id id + * @return effect + */ + Integer deleteDataGroupById(Long id); + + /** + * 批量删除数据分组 + * + * @param idList idList + * @return effect + */ + Integer deleteDataGroupByIdList(List idList); + + /** + * 根据条件删除数据分组 + * + * @param dto dto + * @return effect + */ + Integer deleteDataGroup(DataGroupQueryDTO dto); + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/api/DataGroupRelApi.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/api/DataGroupRelApi.java new file mode 100644 index 00000000..a5461ba7 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/api/DataGroupRelApi.java @@ -0,0 +1,104 @@ +package com.orion.ops.module.infra.api; + +import com.orion.ops.module.infra.entity.dto.data.*; + +import java.util.List; + +/** + * 数据分组关联 对外服务类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +public interface DataGroupRelApi { + + /** + * 创建数据分组关联 + * + * @param dto dto + * @return id + */ + Long createDataGroupRel(DataGroupRelCreateDTO dto); + + /** + * 更新数据分组关联 + * + * @param dto dto + * @return effect + */ + Integer updateDataGroupRelById(DataGroupRelUpdateDTO dto); + + /** + * 根据条件更新数据分组关联 + * + * @param query query + * @param update update + * @return effect + */ + Integer updateDataGroupRel(DataGroupRelQueryDTO query, DataGroupRelUpdateDTO update); + + /** + * 查询数据分组关联 + * + * @param id id + * @return row + */ + DataGroupRelDTO getDataGroupRelById(Long id); + + /** + * 批量查询数据分组关联 + * + * @param idList idList + * @return rows + */ + List getDataGroupRelByIdList(List idList); + + /** + * 查询全部数据分组关联 + * + * @param dto dto + * @return rows + */ + List getDataGroupRelList(DataGroupRelQueryDTO dto); + + /** + * 通过缓存查询数据分组关联 + * + * @return rows + */ + List getDataGroupRelListByCache(); + + /** + * 查询数据分组关联数量 + * + * @param dto dto + * @return count + */ + Long getDataGroupRelCount(DataGroupRelQueryDTO dto); + + /** + * 删除数据分组关联 + * + * @param id id + * @return effect + */ + Integer deleteDataGroupRelById(Long id); + + /** + * 批量删除数据分组关联 + * + * @param idList idList + * @return effect + */ + Integer deleteDataGroupRelByIdList(List idList); + + /** + * 根据条件删除数据分组关联 + * + * @param dto dto + * @return effect + */ + Integer deleteDataGroupRel(DataGroupRelQueryDTO dto); + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupCreateDTO.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupCreateDTO.java new file mode 100644 index 00000000..7148504a --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupCreateDTO.java @@ -0,0 +1,48 @@ +package com.orion.ops.module.infra.entity.dto.data; + +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; +import java.util.*; +import java.math.*; + +/** + * 数据分组 创建请求业务对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DataGroupCreateDTO", description = "数据分组 创建请求业务对象") +public class DataGroupCreateDTO implements Serializable { + + @NotNull + @Schema(description = "父id") + private Long parentId; + + @NotBlank + @Size(max = 32) + @Schema(description = "组名称") + private String name; + + @NotBlank + @Size(max = 16) + @Schema(description = "组类型") + private String type; + + @NotNull + @Schema(description = "排序") + private Integer sort; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupDTO.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupDTO.java new file mode 100644 index 00000000..bd9d2f68 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupDTO.java @@ -0,0 +1,53 @@ +package com.orion.ops.module.infra.entity.dto.data; + +import io.swagger.v3.oas.annotations.media.Schema; +import java.io.Serializable; +import lombok.*; + +import java.util.*; +import java.math.*; + +/** + * 数据分组 业务对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DataGroupDTO", description = "数据分组 业务对象") +public class DataGroupDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + private Long id; + + @Schema(description = "父id") + private Long parentId; + + @Schema(description = "组名称") + private String name; + + @Schema(description = "组类型") + private String type; + + @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-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupQueryDTO.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupQueryDTO.java new file mode 100644 index 00000000..a7644f29 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupQueryDTO.java @@ -0,0 +1,45 @@ +package com.orion.ops.module.infra.entity.dto.data; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.Size; +import java.io.Serializable; +import java.util.*; +import java.math.*; + +/** + * 数据分组 查询请求业务对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DataGroupQueryDTO", description = "数据分组 查询请求业务对象") +public class DataGroupQueryDTO implements Serializable { + + @Schema(description = "id") + private Long id; + + @Schema(description = "父id") + private Long parentId; + + @Size(max = 32) + @Schema(description = "组名称") + private String name; + + @Size(max = 16) + @Schema(description = "组类型") + private String type; + + @Schema(description = "排序") + private Integer sort; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupRelCreateDTO.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupRelCreateDTO.java new file mode 100644 index 00000000..92a34401 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupRelCreateDTO.java @@ -0,0 +1,47 @@ +package com.orion.ops.module.infra.entity.dto.data; + +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; +import java.util.*; +import java.math.*; + +/** + * 数据分组关联 创建请求业务对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DataGroupRelCreateDTO", description = "数据分组关联 创建请求业务对象") +public class DataGroupRelCreateDTO implements Serializable { + + @NotNull + @Schema(description = "组id") + private Long groupId; + + @NotNull + @Schema(description = "引用id") + private Long relId; + + @NotBlank + @Size(max = 16) + @Schema(description = "组类型") + private String type; + + @NotNull + @Schema(description = "排序") + private Integer sort; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupRelDTO.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupRelDTO.java new file mode 100644 index 00000000..277446fe --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupRelDTO.java @@ -0,0 +1,53 @@ +package com.orion.ops.module.infra.entity.dto.data; + +import io.swagger.v3.oas.annotations.media.Schema; +import java.io.Serializable; +import lombok.*; + +import java.util.*; +import java.math.*; + +/** + * 数据分组关联 业务对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DataGroupRelDTO", description = "数据分组关联 业务对象") +public class DataGroupRelDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + private Long id; + + @Schema(description = "组id") + private Long groupId; + + @Schema(description = "引用id") + private Long relId; + + @Schema(description = "组类型") + private String type; + + @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-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupRelQueryDTO.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupRelQueryDTO.java new file mode 100644 index 00000000..e87f0e65 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupRelQueryDTO.java @@ -0,0 +1,44 @@ +package com.orion.ops.module.infra.entity.dto.data; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.Size; +import java.io.Serializable; +import java.util.*; +import java.math.*; + +/** + * 数据分组关联 查询请求业务对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DataGroupRelQueryDTO", description = "数据分组关联 查询请求业务对象") +public class DataGroupRelQueryDTO implements Serializable { + + @Schema(description = "id") + private Long id; + + @Schema(description = "组id") + private Long groupId; + + @Schema(description = "引用id") + private Long relId; + + @Size(max = 16) + @Schema(description = "组类型") + private String type; + + @Schema(description = "排序") + private Integer sort; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupRelUpdateDTO.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupRelUpdateDTO.java new file mode 100644 index 00000000..8c240809 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupRelUpdateDTO.java @@ -0,0 +1,51 @@ +package com.orion.ops.module.infra.entity.dto.data; + +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; +import java.util.*; +import java.math.*; + +/** + * 数据分组关联 更新请求业务对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DataGroupRelUpdateDTO", description = "数据分组关联 更新请求业务对象") +public class DataGroupRelUpdateDTO implements Serializable { + + @NotNull + @Schema(description = "id") + private Long id; + + @NotNull + @Schema(description = "组id") + private Long groupId; + + @NotNull + @Schema(description = "引用id") + private Long relId; + + @NotBlank + @Size(max = 16) + @Schema(description = "组类型") + private String type; + + @NotNull + @Schema(description = "排序") + private Integer sort; + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupUpdateDTO.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupUpdateDTO.java new file mode 100644 index 00000000..caaf90c7 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataGroupUpdateDTO.java @@ -0,0 +1,52 @@ +package com.orion.ops.module.infra.entity.dto.data; + +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; +import java.util.*; +import java.math.*; + +/** + * 数据分组 更新请求业务对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DataGroupUpdateDTO", description = "数据分组 更新请求业务对象") +public class DataGroupUpdateDTO implements Serializable { + + @NotNull + @Schema(description = "id") + private Long id; + + @NotNull + @Schema(description = "父id") + private Long parentId; + + @NotBlank + @Size(max = 32) + @Schema(description = "组名称") + private String name; + + @NotBlank + @Size(max = 16) + @Schema(description = "组类型") + private String type; + + @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/api/impl/DataGroupApiImpl.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/DataGroupApiImpl.java new file mode 100644 index 00000000..d4047263 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/DataGroupApiImpl.java @@ -0,0 +1,176 @@ +package com.orion.ops.module.infra.api.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.orion.lang.utils.collect.Lists; +import com.orion.ops.framework.common.constant.ErrorMessage; +import com.orion.ops.framework.common.utils.Valid; +import com.orion.ops.module.infra.entity.vo.*; +import com.orion.ops.module.infra.entity.request.data.*; +import com.orion.ops.module.infra.convert.*; +import com.orion.ops.module.infra.entity.dto.*; +import com.orion.ops.module.infra.define.cache.*; +import com.orion.ops.module.infra.define.operator.*; +import com.orion.ops.module.infra.api.*; +import com.orion.ops.module.infra.api.impl.*; +import com.orion.ops.module.infra.entity.dto.data.*; +import com.orion.ops.module.infra.convert.*; +import com.orion.ops.module.infra.entity.domain.DataGroupDO; +import com.orion.ops.module.infra.dao.DataGroupDAO; +import com.orion.ops.module.infra.service.DataGroupService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 数据分组 对外服务实现类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Slf4j +@Service +public class DataGroupApiImpl implements DataGroupApi { + + @Resource + private DataGroupService dataGroupService; + + @Resource + private DataGroupDAO dataGroupDAO; + + @Override + public Long createDataGroup(DataGroupCreateDTO dto) { + log.info("DataGroupApi.createDataGroup dto: {}", JSON.toJSONString(dto)); + Valid.valid(dto); + // 转换 + DataGroupCreateRequest request = DataGroupProviderConvert.MAPPER.toRequest(dto); + // 创建 + return dataGroupService.createDataGroup(request); + } + + @Override + public Integer updateDataGroupById(DataGroupUpdateDTO dto) { + log.info("DataGroupApi.updateDataGroupById dto: {}", JSON.toJSONString(dto)); + Valid.valid(dto); + // 转换 + DataGroupUpdateRequest request = DataGroupProviderConvert.MAPPER.toRequest(dto); + // 修改 + return dataGroupService.updateDataGroupById(request); + } + + @Override + public Integer updateDataGroup(DataGroupQueryDTO query, DataGroupUpdateDTO update) { + log.info("DataGroupApi.updateDataGroup query: {}, update: {}", JSON.toJSONString(query), JSON.toJSONString(update)); + Valid.valid(query); + Valid.valid(update); + // 更新 + int effect = dataGroupService.updateDataGroup(DataGroupProviderConvert.MAPPER.toRequest(query), + DataGroupProviderConvert.MAPPER.toRequest(update)); + log.info("DataGroupApi.updateDataGroup effect: {}", effect); + return effect; + } + + @Override + public DataGroupDTO getDataGroupById(Long id) { + log.info("DataGroupApi.getDataGroupById id: {}", id); + Valid.notNull(id, ErrorMessage.ID_MISSING); + // 修改 + DataGroupDO record = dataGroupDAO.selectById(id); + if (record == null) { + return null; + } + // 转换 + return DataGroupProviderConvert.MAPPER.to(record); + } + + @Override + public List getDataGroupByIdList(List idList) { + log.info("DataGroupApi.getDataGroupByIdList idList: {}", idList); + if (Lists.isEmpty(idList)) { + return new ArrayList<>(); + } + // 查询 + List rows = dataGroupDAO.selectBatchIds(idList); + // 转换 + return DataGroupProviderConvert.MAPPER.toList(rows); + } + + @Override + public List getDataGroupList(DataGroupQueryDTO dto) { + log.info("DataGroupApi.getDataGroupList dto: {}", JSON.toJSONString(dto)); + Valid.valid(dto); + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(dto); + // 查询 + return dataGroupDAO.of(wrapper).list(DataGroupProviderConvert.MAPPER::to); + } + + @Override + public List getDataGroupListByCache() { + return dataGroupService.getDataGroupListByCache() + .stream() + .map(DataGroupProviderConvert.MAPPER::to) + .collect(Collectors.toList()); + } + + @Override + public Long getDataGroupCount(DataGroupQueryDTO dto) { + log.info("DataGroupApi.getDataGroupCount dto: {}", JSON.toJSONString(dto)); + Valid.valid(dto); + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(dto); + // 查询 + return dataGroupDAO.selectCount(wrapper); + } + + @Override + public Integer deleteDataGroupById(Long id) { + log.info("DataGroupApi.deleteDataGroupById id: {}", id); + Valid.notNull(id, ErrorMessage.ID_MISSING); + // 删除 + Integer effect = dataGroupService.deleteDataGroupById(id); + log.info("DataGroupApi.deleteDataGroupById id: {}, effect: {}", id, effect); + return effect; + } + + @Override + public Integer deleteDataGroupByIdList(List idList) { + log.info("DataGroupApi.deleteDataGroupByIdList idList: {}", idList); + Valid.notEmpty(idList, ErrorMessage.ID_MISSING); + // 删除 + Integer effect = dataGroupService.deleteDataGroupByIdList(idList); + log.info("DataGroupApi.deleteDataGroupByIdList effect: {}", effect); + return effect; + } + + @Override + public Integer deleteDataGroup(DataGroupQueryDTO dto) { + log.info("DataGroupApi.deleteDataGroup dto: {}", JSON.toJSONString(dto)); + Valid.valid(dto); + // 删除 + Integer effect = dataGroupService.deleteDataGroup(DataGroupProviderConvert.MAPPER.toRequest(dto)); + log.info("DataGroupApi.deleteDataGroup effect: {}", effect); + return effect; + } + + /** + * 构建查询 wrapper + * + * @param dto dto + * @return wrapper + */ + private LambdaQueryWrapper buildQueryWrapper(DataGroupQueryDTO dto) { + return dataGroupDAO.wrapper() + .eq(DataGroupDO::getId, dto.getId()) + .eq(DataGroupDO::getParentId, dto.getParentId()) + .eq(DataGroupDO::getName, dto.getName()) + .eq(DataGroupDO::getType, dto.getType()) + .eq(DataGroupDO::getSort, dto.getSort()); + } + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/DataGroupRelApiImpl.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/DataGroupRelApiImpl.java new file mode 100644 index 00000000..50784fc1 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/DataGroupRelApiImpl.java @@ -0,0 +1,176 @@ +package com.orion.ops.module.infra.api.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.orion.lang.utils.collect.Lists; +import com.orion.ops.framework.common.constant.ErrorMessage; +import com.orion.ops.framework.common.utils.Valid; +import com.orion.ops.module.infra.entity.vo.*; +import com.orion.ops.module.infra.entity.request.data.*; +import com.orion.ops.module.infra.convert.*; +import com.orion.ops.module.infra.entity.dto.*; +import com.orion.ops.module.infra.define.cache.*; +import com.orion.ops.module.infra.define.operator.*; +import com.orion.ops.module.infra.api.*; +import com.orion.ops.module.infra.api.impl.*; +import com.orion.ops.module.infra.entity.dto.data.*; +import com.orion.ops.module.infra.convert.*; +import com.orion.ops.module.infra.entity.domain.DataGroupRelDO; +import com.orion.ops.module.infra.dao.DataGroupRelDAO; +import com.orion.ops.module.infra.service.DataGroupRelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 数据分组关联 对外服务实现类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Slf4j +@Service +public class DataGroupRelApiImpl implements DataGroupRelApi { + + @Resource + private DataGroupRelService dataGroupRelService; + + @Resource + private DataGroupRelDAO dataGroupRelDAO; + + @Override + public Long createDataGroupRel(DataGroupRelCreateDTO dto) { + log.info("DataGroupRelApi.createDataGroupRel dto: {}", JSON.toJSONString(dto)); + Valid.valid(dto); + // 转换 + DataGroupRelCreateRequest request = DataGroupRelProviderConvert.MAPPER.toRequest(dto); + // 创建 + return dataGroupRelService.createDataGroupRel(request); + } + + @Override + public Integer updateDataGroupRelById(DataGroupRelUpdateDTO dto) { + log.info("DataGroupRelApi.updateDataGroupRelById dto: {}", JSON.toJSONString(dto)); + Valid.valid(dto); + // 转换 + DataGroupRelUpdateRequest request = DataGroupRelProviderConvert.MAPPER.toRequest(dto); + // 修改 + return dataGroupRelService.updateDataGroupRelById(request); + } + + @Override + public Integer updateDataGroupRel(DataGroupRelQueryDTO query, DataGroupRelUpdateDTO update) { + log.info("DataGroupRelApi.updateDataGroupRel query: {}, update: {}", JSON.toJSONString(query), JSON.toJSONString(update)); + Valid.valid(query); + Valid.valid(update); + // 更新 + int effect = dataGroupRelService.updateDataGroupRel(DataGroupRelProviderConvert.MAPPER.toRequest(query), + DataGroupRelProviderConvert.MAPPER.toRequest(update)); + log.info("DataGroupRelApi.updateDataGroupRel effect: {}", effect); + return effect; + } + + @Override + public DataGroupRelDTO getDataGroupRelById(Long id) { + log.info("DataGroupRelApi.getDataGroupRelById id: {}", id); + Valid.notNull(id, ErrorMessage.ID_MISSING); + // 修改 + DataGroupRelDO record = dataGroupRelDAO.selectById(id); + if (record == null) { + return null; + } + // 转换 + return DataGroupRelProviderConvert.MAPPER.to(record); + } + + @Override + public List getDataGroupRelByIdList(List idList) { + log.info("DataGroupRelApi.getDataGroupRelByIdList idList: {}", idList); + if (Lists.isEmpty(idList)) { + return new ArrayList<>(); + } + // 查询 + List rows = dataGroupRelDAO.selectBatchIds(idList); + // 转换 + return DataGroupRelProviderConvert.MAPPER.toList(rows); + } + + @Override + public List getDataGroupRelList(DataGroupRelQueryDTO dto) { + log.info("DataGroupRelApi.getDataGroupRelList dto: {}", JSON.toJSONString(dto)); + Valid.valid(dto); + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(dto); + // 查询 + return dataGroupRelDAO.of(wrapper).list(DataGroupRelProviderConvert.MAPPER::to); + } + + @Override + public List getDataGroupRelListByCache() { + return dataGroupRelService.getDataGroupRelListByCache() + .stream() + .map(DataGroupRelProviderConvert.MAPPER::to) + .collect(Collectors.toList()); + } + + @Override + public Long getDataGroupRelCount(DataGroupRelQueryDTO dto) { + log.info("DataGroupRelApi.getDataGroupRelCount dto: {}", JSON.toJSONString(dto)); + Valid.valid(dto); + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(dto); + // 查询 + return dataGroupRelDAO.selectCount(wrapper); + } + + @Override + public Integer deleteDataGroupRelById(Long id) { + log.info("DataGroupRelApi.deleteDataGroupRelById id: {}", id); + Valid.notNull(id, ErrorMessage.ID_MISSING); + // 删除 + Integer effect = dataGroupRelService.deleteDataGroupRelById(id); + log.info("DataGroupRelApi.deleteDataGroupRelById id: {}, effect: {}", id, effect); + return effect; + } + + @Override + public Integer deleteDataGroupRelByIdList(List idList) { + log.info("DataGroupRelApi.deleteDataGroupRelByIdList idList: {}", idList); + Valid.notEmpty(idList, ErrorMessage.ID_MISSING); + // 删除 + Integer effect = dataGroupRelService.deleteDataGroupRelByIdList(idList); + log.info("DataGroupRelApi.deleteDataGroupRelByIdList effect: {}", effect); + return effect; + } + + @Override + public Integer deleteDataGroupRel(DataGroupRelQueryDTO dto) { + log.info("DataGroupRelApi.deleteDataGroupRel dto: {}", JSON.toJSONString(dto)); + Valid.valid(dto); + // 删除 + Integer effect = dataGroupRelService.deleteDataGroupRel(DataGroupRelProviderConvert.MAPPER.toRequest(dto)); + log.info("DataGroupRelApi.deleteDataGroupRel effect: {}", effect); + return effect; + } + + /** + * 构建查询 wrapper + * + * @param dto dto + * @return wrapper + */ + private LambdaQueryWrapper buildQueryWrapper(DataGroupRelQueryDTO dto) { + return dataGroupRelDAO.wrapper() + .eq(DataGroupRelDO::getId, dto.getId()) + .eq(DataGroupRelDO::getGroupId, dto.getGroupId()) + .eq(DataGroupRelDO::getRelId, dto.getRelId()) + .eq(DataGroupRelDO::getType, dto.getType()) + .eq(DataGroupRelDO::getSort, dto.getSort()); + } + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataGroupConvert.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataGroupConvert.java new file mode 100644 index 00000000..1c7a4031 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataGroupConvert.java @@ -0,0 +1,41 @@ +package com.orion.ops.module.infra.convert; + +import com.orion.ops.module.infra.entity.domain.*; +import com.orion.ops.module.infra.entity.vo.*; +import com.orion.ops.module.infra.entity.request.data.*; +import com.orion.ops.module.infra.convert.*; +import com.orion.ops.module.infra.entity.dto.*; +import com.orion.ops.module.infra.define.cache.*; +import com.orion.ops.module.infra.define.operator.*; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 数据分组 内部对象转换器 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Mapper +public interface DataGroupConvert { + + DataGroupConvert MAPPER = Mappers.getMapper(DataGroupConvert.class); + + DataGroupDO to(DataGroupCreateRequest request); + + DataGroupDO to(DataGroupUpdateRequest request); + + DataGroupDO to(DataGroupQueryRequest request); + + DataGroupVO to(DataGroupDO domain); + + List to(List list); + + DataGroupVO to(DataGroupCacheDTO cache); + + DataGroupCacheDTO toCache(DataGroupDO domain); + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataGroupProviderConvert.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataGroupProviderConvert.java new file mode 100644 index 00000000..70d38f61 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataGroupProviderConvert.java @@ -0,0 +1,46 @@ +package com.orion.ops.module.infra.convert; + +import com.orion.ops.module.infra.entity.domain.*; +import com.orion.ops.module.infra.entity.vo.*; +import com.orion.ops.module.infra.entity.request.data.*; +import com.orion.ops.module.infra.convert.*; +import com.orion.ops.module.infra.entity.dto.*; +import com.orion.ops.module.infra.define.cache.*; +import com.orion.ops.module.infra.define.operator.*; +import com.orion.ops.module.infra.entity.dto.data.*; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 数据分组 对外服务对象转换器 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Mapper +public interface DataGroupProviderConvert { + + DataGroupProviderConvert MAPPER = Mappers.getMapper(DataGroupProviderConvert.class); + + DataGroupDTO to(DataGroupVO dto); + + DataGroupDO to(DataGroupDTO dto); + + DataGroupDTO to(DataGroupDO domain); + + DataGroupDO to(DataGroupQueryDTO domain); + + DataGroupDO to(DataGroupUpdateDTO update); + + DataGroupQueryRequest toRequest(DataGroupQueryDTO request); + + DataGroupCreateRequest toRequest(DataGroupCreateDTO request); + + DataGroupUpdateRequest toRequest(DataGroupUpdateDTO 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/DataGroupRelConvert.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataGroupRelConvert.java new file mode 100644 index 00000000..3b77e2d9 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataGroupRelConvert.java @@ -0,0 +1,41 @@ +package com.orion.ops.module.infra.convert; + +import com.orion.ops.module.infra.entity.domain.*; +import com.orion.ops.module.infra.entity.vo.*; +import com.orion.ops.module.infra.entity.request.data.*; +import com.orion.ops.module.infra.convert.*; +import com.orion.ops.module.infra.entity.dto.*; +import com.orion.ops.module.infra.define.cache.*; +import com.orion.ops.module.infra.define.operator.*; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 数据分组关联 内部对象转换器 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Mapper +public interface DataGroupRelConvert { + + DataGroupRelConvert MAPPER = Mappers.getMapper(DataGroupRelConvert.class); + + DataGroupRelDO to(DataGroupRelCreateRequest request); + + DataGroupRelDO to(DataGroupRelUpdateRequest request); + + DataGroupRelDO to(DataGroupRelQueryRequest request); + + DataGroupRelVO to(DataGroupRelDO domain); + + List to(List list); + + DataGroupRelVO to(DataGroupRelCacheDTO cache); + + DataGroupRelCacheDTO toCache(DataGroupRelDO domain); + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataGroupRelProviderConvert.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataGroupRelProviderConvert.java new file mode 100644 index 00000000..da76a5e2 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataGroupRelProviderConvert.java @@ -0,0 +1,46 @@ +package com.orion.ops.module.infra.convert; + +import com.orion.ops.module.infra.entity.domain.*; +import com.orion.ops.module.infra.entity.vo.*; +import com.orion.ops.module.infra.entity.request.data.*; +import com.orion.ops.module.infra.convert.*; +import com.orion.ops.module.infra.entity.dto.*; +import com.orion.ops.module.infra.define.cache.*; +import com.orion.ops.module.infra.define.operator.*; +import com.orion.ops.module.infra.entity.dto.data.*; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 数据分组关联 对外服务对象转换器 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Mapper +public interface DataGroupRelProviderConvert { + + DataGroupRelProviderConvert MAPPER = Mappers.getMapper(DataGroupRelProviderConvert.class); + + DataGroupRelDTO to(DataGroupRelVO dto); + + DataGroupRelDO to(DataGroupRelDTO dto); + + DataGroupRelDTO to(DataGroupRelDO domain); + + DataGroupRelDO to(DataGroupRelQueryDTO domain); + + DataGroupRelDO to(DataGroupRelUpdateDTO update); + + DataGroupRelQueryRequest toRequest(DataGroupRelQueryDTO request); + + DataGroupRelCreateRequest toRequest(DataGroupRelCreateDTO request); + + DataGroupRelUpdateRequest toRequest(DataGroupRelUpdateDTO 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/dao/DataGroupDAO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/DataGroupDAO.java new file mode 100644 index 00000000..4c6dcaed --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/DataGroupDAO.java @@ -0,0 +1,33 @@ +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.DataGroupDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 数据分组 Mapper 接口 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Mapper +public interface DataGroupDAO extends IMapper { + + /** + * 获取查询条件 + * + * @param entity entity + * @return 查询条件 + */ + default LambdaQueryWrapper queryCondition(DataGroupDO entity) { + return this.wrapper() + .eq(DataGroupDO::getId, entity.getId()) + .eq(DataGroupDO::getParentId, entity.getParentId()) + .eq(DataGroupDO::getName, entity.getName()) + .eq(DataGroupDO::getType, entity.getType()) + .eq(DataGroupDO::getSort, entity.getSort()); + } + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/DataGroupRelDAO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/DataGroupRelDAO.java new file mode 100644 index 00000000..aec5f7e2 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/dao/DataGroupRelDAO.java @@ -0,0 +1,33 @@ +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.DataGroupRelDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 数据分组关联 Mapper 接口 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Mapper +public interface DataGroupRelDAO extends IMapper { + + /** + * 获取查询条件 + * + * @param entity entity + * @return 查询条件 + */ + default LambdaQueryWrapper queryCondition(DataGroupRelDO entity) { + return this.wrapper() + .eq(DataGroupRelDO::getId, entity.getId()) + .eq(DataGroupRelDO::getGroupId, entity.getGroupId()) + .eq(DataGroupRelDO::getRelId, entity.getRelId()) + .eq(DataGroupRelDO::getType, entity.getType()) + .eq(DataGroupRelDO::getSort, entity.getSort()); + } + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/cache/DataGroupCacheKeyDefine.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/cache/DataGroupCacheKeyDefine.java new file mode 100644 index 00000000..07176dc6 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/cache/DataGroupCacheKeyDefine.java @@ -0,0 +1,30 @@ +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.vo.*; +import com.orion.ops.module.infra.entity.request.data.*; +import com.orion.ops.module.infra.convert.*; +import com.orion.ops.module.infra.entity.dto.*; +import com.orion.ops.module.infra.define.cache.*; +import com.orion.ops.module.infra.define.operator.*; + +import java.util.concurrent.TimeUnit; + +/** + * 数据分组缓存 key + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +public interface DataGroupCacheKeyDefine { + + CacheKeyDefine DATA_GROUP = new CacheKeyBuilder() + .key("data:group:{}") + .desc("数据分组 ${type}") + .type(DataGroupCacheDTO.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/cache/DataGroupRelCacheKeyDefine.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/cache/DataGroupRelCacheKeyDefine.java new file mode 100644 index 00000000..1b2d819a --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/cache/DataGroupRelCacheKeyDefine.java @@ -0,0 +1,30 @@ +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.vo.*; +import com.orion.ops.module.infra.entity.request.data.*; +import com.orion.ops.module.infra.convert.*; +import com.orion.ops.module.infra.entity.dto.*; +import com.orion.ops.module.infra.define.cache.*; +import com.orion.ops.module.infra.define.operator.*; + +import java.util.concurrent.TimeUnit; + +/** + * 数据分组关联缓存 key + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +public interface DataGroupRelCacheKeyDefine { + + CacheKeyDefine DATA_GROUP_REL = new CacheKeyBuilder() + .key("data:group-rel:{}") + .desc("数据分组关联 ${groupId}") + .type(DataGroupRelCacheDTO.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/DataGroupOperatorType.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/operator/DataGroupOperatorType.java new file mode 100644 index 00000000..da1eff16 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/operator/DataGroupOperatorType.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-11-7 18:44 + */ +@Module("infra:data-group") +public class DataGroupOperatorType extends InitializingOperatorTypes { + + public static final String CREATE = "data-group:create"; + + public static final String UPDATE = "data-group:update"; + + public static final String DELETE = "data-group: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/DataGroupRelOperatorType.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/operator/DataGroupRelOperatorType.java new file mode 100644 index 00000000..9e44ee8c --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/define/operator/DataGroupRelOperatorType.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-11-7 18:44 + */ +@Module("infra:data-group-rel") +public class DataGroupRelOperatorType extends InitializingOperatorTypes { + + public static final String CREATE = "data-group-rel:create"; + + public static final String UPDATE = "data-group-rel:update"; + + public static final String DELETE = "data-group-rel: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/DataGroupDO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/domain/DataGroupDO.java new file mode 100644 index 00000000..cb8101f1 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/domain/DataGroupDO.java @@ -0,0 +1,49 @@ +package com.orion.ops.module.infra.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 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName(value = "data_group", autoResultMap = true) +@Schema(name = "DataGroupDO", description = "数据分组 实体对象") +public class DataGroupDO extends BaseDO { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @Schema(description = "父id") + @TableField("parent_id") + private Long parentId; + + @Schema(description = "组名称") + @TableField("name") + private String name; + + @Schema(description = "组类型") + @TableField("type") + private String type; + + @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/DataGroupRelDO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/domain/DataGroupRelDO.java new file mode 100644 index 00000000..dff7e46e --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/domain/DataGroupRelDO.java @@ -0,0 +1,49 @@ +package com.orion.ops.module.infra.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 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName(value = "data_group_rel", autoResultMap = true) +@Schema(name = "DataGroupRelDO", description = "数据分组关联 实体对象") +public class DataGroupRelDO extends BaseDO { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @Schema(description = "组id") + @TableField("group_id") + private Long groupId; + + @Schema(description = "引用id") + @TableField("rel_id") + private Long relId; + + @Schema(description = "组类型") + @TableField("type") + private String type; + + @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/dto/DataGroupCacheDTO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/dto/DataGroupCacheDTO.java new file mode 100644 index 00000000..40700df9 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/dto/DataGroupCacheDTO.java @@ -0,0 +1,53 @@ +package com.orion.ops.module.infra.entity.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import java.io.Serializable; +import lombok.*; + +import java.util.*; +import java.math.*; + +/** + * 数据分组 缓存对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DataGroupCacheDTO", description = "数据分组 缓存对象") +public class DataGroupCacheDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + private Long id; + + @Schema(description = "父id") + private Long parentId; + + @Schema(description = "组名称") + private String name; + + @Schema(description = "组类型") + private String type; + + @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/dto/DataGroupRelCacheDTO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/dto/DataGroupRelCacheDTO.java new file mode 100644 index 00000000..048ea3ae --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/dto/DataGroupRelCacheDTO.java @@ -0,0 +1,53 @@ +package com.orion.ops.module.infra.entity.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import java.io.Serializable; +import lombok.*; + +import java.util.*; +import java.math.*; + +/** + * 数据分组关联 缓存对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DataGroupRelCacheDTO", description = "数据分组关联 缓存对象") +public class DataGroupRelCacheDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + private Long id; + + @Schema(description = "组id") + private Long groupId; + + @Schema(description = "引用id") + private Long relId; + + @Schema(description = "组类型") + private String type; + + @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/data/DataGroupCreateRequest.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataGroupCreateRequest.java new file mode 100644 index 00000000..e349effa --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataGroupCreateRequest.java @@ -0,0 +1,49 @@ +package com.orion.ops.module.infra.entity.request.data; + +import com.fasterxml.jackson.annotation.JsonFormat; +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; +import java.util.*; +import java.math.*; + +/** + * 数据分组 创建请求对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DataGroupCreateRequest", description = "数据分组 创建请求对象") +public class DataGroupCreateRequest implements Serializable { + + @NotNull + @Schema(description = "父id") + private Long parentId; + + @NotBlank + @Size(max = 32) + @Schema(description = "组名称") + private String name; + + @NotBlank + @Size(max = 16) + @Schema(description = "组类型") + private String type; + + @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/data/DataGroupQueryRequest.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataGroupQueryRequest.java new file mode 100644 index 00000000..4ec2a1aa --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataGroupQueryRequest.java @@ -0,0 +1,47 @@ +package com.orion.ops.module.infra.entity.request.data; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.orion.ops.framework.common.entity.PageRequest; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import javax.validation.constraints.Size; +import java.util.*; +import java.math.*; + +/** + * 数据分组 查询请求对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@Schema(name = "DataGroupQueryRequest", description = "数据分组 查询请求对象") +public class DataGroupQueryRequest extends PageRequest { + + @Schema(description = "搜索") + private String searchValue; + + @Schema(description = "id") + private Long id; + + @Schema(description = "父id") + private Long parentId; + + @Size(max = 32) + @Schema(description = "组名称") + private String name; + + @Size(max = 16) + @Schema(description = "组类型") + private String type; + + @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/data/DataGroupRelCreateRequest.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataGroupRelCreateRequest.java new file mode 100644 index 00000000..5a36734d --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataGroupRelCreateRequest.java @@ -0,0 +1,48 @@ +package com.orion.ops.module.infra.entity.request.data; + +import com.fasterxml.jackson.annotation.JsonFormat; +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; +import java.util.*; +import java.math.*; + +/** + * 数据分组关联 创建请求对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DataGroupRelCreateRequest", description = "数据分组关联 创建请求对象") +public class DataGroupRelCreateRequest implements Serializable { + + @NotNull + @Schema(description = "组id") + private Long groupId; + + @NotNull + @Schema(description = "引用id") + private Long relId; + + @NotBlank + @Size(max = 16) + @Schema(description = "组类型") + private String type; + + @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/data/DataGroupRelQueryRequest.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataGroupRelQueryRequest.java new file mode 100644 index 00000000..bb5fe77c --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataGroupRelQueryRequest.java @@ -0,0 +1,46 @@ +package com.orion.ops.module.infra.entity.request.data; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.orion.ops.framework.common.entity.PageRequest; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import javax.validation.constraints.Size; +import java.util.*; +import java.math.*; + +/** + * 数据分组关联 查询请求对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@Schema(name = "DataGroupRelQueryRequest", description = "数据分组关联 查询请求对象") +public class DataGroupRelQueryRequest extends PageRequest { + + @Schema(description = "搜索") + private String searchValue; + + @Schema(description = "id") + private Long id; + + @Schema(description = "组id") + private Long groupId; + + @Schema(description = "引用id") + private Long relId; + + @Size(max = 16) + @Schema(description = "组类型") + private String type; + + @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/data/DataGroupRelUpdateRequest.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataGroupRelUpdateRequest.java new file mode 100644 index 00000000..5c509e39 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataGroupRelUpdateRequest.java @@ -0,0 +1,52 @@ +package com.orion.ops.module.infra.entity.request.data; + +import com.fasterxml.jackson.annotation.JsonFormat; +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; +import java.util.*; +import java.math.*; + +/** + * 数据分组关联 更新请求对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DataGroupRelUpdateRequest", description = "数据分组关联 更新请求对象") +public class DataGroupRelUpdateRequest implements Serializable { + + @NotNull + @Schema(description = "id") + private Long id; + + @NotNull + @Schema(description = "组id") + private Long groupId; + + @NotNull + @Schema(description = "引用id") + private Long relId; + + @NotBlank + @Size(max = 16) + @Schema(description = "组类型") + private String type; + + @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/data/DataGroupUpdateRequest.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataGroupUpdateRequest.java new file mode 100644 index 00000000..51e995e7 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataGroupUpdateRequest.java @@ -0,0 +1,53 @@ +package com.orion.ops.module.infra.entity.request.data; + +import com.fasterxml.jackson.annotation.JsonFormat; +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; +import java.util.*; +import java.math.*; + +/** + * 数据分组 更新请求对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DataGroupUpdateRequest", description = "数据分组 更新请求对象") +public class DataGroupUpdateRequest implements Serializable { + + @NotNull + @Schema(description = "id") + private Long id; + + @NotNull + @Schema(description = "父id") + private Long parentId; + + @NotBlank + @Size(max = 32) + @Schema(description = "组名称") + private String name; + + @NotBlank + @Size(max = 16) + @Schema(description = "组类型") + private String type; + + @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/vo/DataGroupRelVO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/vo/DataGroupRelVO.java new file mode 100644 index 00000000..97c69610 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/vo/DataGroupRelVO.java @@ -0,0 +1,53 @@ +package com.orion.ops.module.infra.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.io.Serializable; +import java.util.*; +import java.math.*; + +/** + * 数据分组关联 视图响应对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DataGroupRelVO", description = "数据分组关联 视图响应对象") +public class DataGroupRelVO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + private Long id; + + @Schema(description = "组id") + private Long groupId; + + @Schema(description = "引用id") + private Long relId; + + @Schema(description = "组类型") + private String type; + + @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/DataGroupVO.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/vo/DataGroupVO.java new file mode 100644 index 00000000..4b65d579 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/vo/DataGroupVO.java @@ -0,0 +1,53 @@ +package com.orion.ops.module.infra.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.io.Serializable; +import java.util.*; +import java.math.*; + +/** + * 数据分组 视图响应对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "DataGroupVO", description = "数据分组 视图响应对象") +public class DataGroupVO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + private Long id; + + @Schema(description = "父id") + private Long parentId; + + @Schema(description = "组名称") + private String name; + + @Schema(description = "组类型") + private String type; + + @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/service/DataGroupRelService.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DataGroupRelService.java new file mode 100644 index 00000000..8665aaea --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DataGroupRelService.java @@ -0,0 +1,120 @@ +package com.orion.ops.module.infra.service; + +import com.orion.lang.define.wrapper.DataGrid; +import com.orion.ops.module.infra.entity.vo.*; +import com.orion.ops.module.infra.entity.request.data.*; +import com.orion.ops.module.infra.convert.*; +import com.orion.ops.module.infra.entity.dto.*; +import com.orion.ops.module.infra.define.cache.*; +import com.orion.ops.module.infra.define.operator.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; + +/** + * 数据分组关联 服务类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +public interface DataGroupRelService { + + /** + * 创建数据分组关联 + * + * @param request request + * @return id + */ + Long createDataGroupRel(DataGroupRelCreateRequest request); + + /** + * 更新数据分组关联 + * + * @param request request + * @return effect + */ + Integer updateDataGroupRelById(DataGroupRelUpdateRequest request); + + /** + * 根据条件更新数据分组关联 + * + * @param query query + * @param update update + * @return effect + */ + Integer updateDataGroupRel(DataGroupRelQueryRequest query, DataGroupRelUpdateRequest update); + + /** + * 查询数据分组关联 + * + * @param id id + * @return row + */ + DataGroupRelVO getDataGroupRelById(Long id); + + /** + * 批量查询数据分组关联 + * + * @param idList idList + * @return rows + */ + List getDataGroupRelByIdList(List idList); + + /** + * 查询全部数据分组关联 + * + * @param request request + * @return rows + */ + List getDataGroupRelList(DataGroupRelQueryRequest request); + + /** + * 通过缓存查询数据分组关联 + * + * @return rows + */ + List getDataGroupRelListByCache(); + + /** + * 查询数据分组关联数量 + * + * @param request request + * @return count + */ + Long getDataGroupRelCount(DataGroupRelQueryRequest request); + + /** + * 分页查询数据分组关联 + * + * @param request request + * @return rows + */ + DataGrid getDataGroupRelPage(DataGroupRelQueryRequest request); + + /** + * 删除数据分组关联 + * + * @param id id + * @return effect + */ + Integer deleteDataGroupRelById(Long id); + + /** + * 批量删除数据分组关联 + * + * @param idList idList + * @return effect + */ + Integer deleteDataGroupRelByIdList(List idList); + + /** + * 根据条件删除数据分组关联 + * + * @param request request + * @return effect + */ + Integer deleteDataGroupRel(DataGroupRelQueryRequest request); + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DataGroupService.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DataGroupService.java new file mode 100644 index 00000000..63c7ddd9 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DataGroupService.java @@ -0,0 +1,120 @@ +package com.orion.ops.module.infra.service; + +import com.orion.lang.define.wrapper.DataGrid; +import com.orion.ops.module.infra.entity.vo.*; +import com.orion.ops.module.infra.entity.request.data.*; +import com.orion.ops.module.infra.convert.*; +import com.orion.ops.module.infra.entity.dto.*; +import com.orion.ops.module.infra.define.cache.*; +import com.orion.ops.module.infra.define.operator.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; + +/** + * 数据分组 服务类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +public interface DataGroupService { + + /** + * 创建数据分组 + * + * @param request request + * @return id + */ + Long createDataGroup(DataGroupCreateRequest request); + + /** + * 更新数据分组 + * + * @param request request + * @return effect + */ + Integer updateDataGroupById(DataGroupUpdateRequest request); + + /** + * 根据条件更新数据分组 + * + * @param query query + * @param update update + * @return effect + */ + Integer updateDataGroup(DataGroupQueryRequest query, DataGroupUpdateRequest update); + + /** + * 查询数据分组 + * + * @param id id + * @return row + */ + DataGroupVO getDataGroupById(Long id); + + /** + * 批量查询数据分组 + * + * @param idList idList + * @return rows + */ + List getDataGroupByIdList(List idList); + + /** + * 查询全部数据分组 + * + * @param request request + * @return rows + */ + List getDataGroupList(DataGroupQueryRequest request); + + /** + * 通过缓存查询数据分组 + * + * @return rows + */ + List getDataGroupListByCache(); + + /** + * 查询数据分组数量 + * + * @param request request + * @return count + */ + Long getDataGroupCount(DataGroupQueryRequest request); + + /** + * 分页查询数据分组 + * + * @param request request + * @return rows + */ + DataGrid getDataGroupPage(DataGroupQueryRequest request); + + /** + * 删除数据分组 + * + * @param id id + * @return effect + */ + Integer deleteDataGroupById(Long id); + + /** + * 批量删除数据分组 + * + * @param idList idList + * @return effect + */ + Integer deleteDataGroupByIdList(List idList); + + /** + * 根据条件删除数据分组 + * + * @param request request + * @return effect + */ + Integer deleteDataGroup(DataGroupQueryRequest request); + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataGroupRelServiceImpl.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataGroupRelServiceImpl.java new file mode 100644 index 00000000..30073dda --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataGroupRelServiceImpl.java @@ -0,0 +1,247 @@ +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.lang.utils.collect.Lists; +import com.orion.ops.framework.common.constant.Const; +import com.orion.ops.framework.common.constant.ErrorMessage; +import com.orion.ops.framework.common.utils.FileNames; +import com.orion.ops.framework.common.utils.Valid; +import com.orion.ops.framework.redis.core.utils.RedisMaps; +import com.orion.ops.module.infra.entity.vo.*; +import com.orion.ops.module.infra.entity.request.data.*; +import com.orion.ops.module.infra.convert.*; +import com.orion.ops.module.infra.entity.dto.*; +import com.orion.ops.module.infra.define.cache.*; +import com.orion.ops.module.infra.define.operator.*; +import com.orion.ops.module.infra.entity.domain.DataGroupRelDO; +import com.orion.ops.module.infra.dao.DataGroupRelDAO; +import com.orion.ops.module.infra.service.DataGroupRelService; +import com.orion.web.servlet.web.Servlets; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 数据分组关联 服务实现类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Slf4j +@Service +public class DataGroupRelServiceImpl implements DataGroupRelService { + + @Resource + private DataGroupRelDAO dataGroupRelDAO; + + @Override + public Long createDataGroupRel(DataGroupRelCreateRequest request) { + log.info("DataGroupRelService-createDataGroupRel request: {}", JSON.toJSONString(request)); + // 转换 + DataGroupRelDO record = DataGroupRelConvert.MAPPER.to(request); + // 查询数据是否冲突 + this.checkDataGroupRelPresent(record); + // 插入 + int effect = dataGroupRelDAO.insert(record); + Long id = record.getId(); + log.info("DataGroupRelService-createDataGroupRel id: {}, effect: {}", id, effect); + // 删除缓存 + RedisMaps.delete(DataGroupRelCacheKeyDefine.DATA_GROUP_REL); + return id; + } + + @Override + public Integer updateDataGroupRelById(DataGroupRelUpdateRequest request) { + Long id = Valid.notNull(request.getId(), ErrorMessage.ID_MISSING); + log.info("DataGroupRelService-updateDataGroupRelById id: {}, request: {}", id, JSON.toJSONString(request)); + // 查询 + DataGroupRelDO record = dataGroupRelDAO.selectById(id); + Valid.notNull(record, ErrorMessage.DATA_ABSENT); + // 转换 + DataGroupRelDO updateRecord = DataGroupRelConvert.MAPPER.to(request); + // 查询数据是否冲突 + this.checkDataGroupRelPresent(updateRecord); + // 更新 + int effect = dataGroupRelDAO.updateById(updateRecord); + log.info("DataGroupRelService-updateDataGroupRelById effect: {}", effect); + // 删除缓存 + RedisMaps.delete(DataGroupRelCacheKeyDefine.DATA_GROUP_REL); + return effect; + } + + @Override + public Integer updateDataGroupRel(DataGroupRelQueryRequest query, DataGroupRelUpdateRequest update) { + log.info("DataGroupRelService.updateDataGroupRel query: {}, update: {}", JSON.toJSONString(query), JSON.toJSONString(update)); + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(query); + // 转换 + DataGroupRelDO updateRecord = DataGroupRelConvert.MAPPER.to(update); + // 更新 + int effect = dataGroupRelDAO.update(updateRecord, wrapper); + log.info("DataGroupRelService.updateDataGroupRel effect: {}", effect); + // 删除缓存 + RedisMaps.delete(DataGroupRelCacheKeyDefine.DATA_GROUP_REL); + return effect; + } + + @Override + public DataGroupRelVO getDataGroupRelById(Long id) { + // 查询 + DataGroupRelDO record = dataGroupRelDAO.selectById(id); + Valid.notNull(record, ErrorMessage.DATA_ABSENT); + // 转换 + return DataGroupRelConvert.MAPPER.to(record); + } + + @Override + public List getDataGroupRelByIdList(List idList) { + // 查询 + List records = dataGroupRelDAO.selectBatchIds(idList); + if (records.isEmpty()) { + return Lists.empty(); + } + // 转换 + return DataGroupRelConvert.MAPPER.to(records); + } + + @Override + public List getDataGroupRelList(DataGroupRelQueryRequest request) { + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(request); + // 查询 + return dataGroupRelDAO.of(wrapper).list(DataGroupRelConvert.MAPPER::to); + } + + @Override + public List getDataGroupRelListByCache() { + // 查询缓存 + List list = RedisMaps.valuesJson(DataGroupRelCacheKeyDefine.DATA_GROUP_REL); + if (list.isEmpty()) { + // 查询数据库 + list = dataGroupRelDAO.of().list(DataGroupRelConvert.MAPPER::toCache); + // 添加默认值 防止穿透 + if (list.isEmpty()) { + list.add(DataGroupRelCacheDTO.builder() + .id(Const.NONE_ID) + .build()); + } + // 设置缓存 + RedisMaps.putAllJson(DataGroupRelCacheKeyDefine.DATA_GROUP_REL.getKey(), s -> s.getId().toString(), list); + RedisMaps.setExpire(DataGroupRelCacheKeyDefine.DATA_GROUP_REL); + } + // 删除默认值 + return list.stream() + .filter(s -> !s.getId().equals(Const.NONE_ID)) + .map(DataGroupRelConvert.MAPPER::to) + .collect(Collectors.toList()); + } + + @Override + public Long getDataGroupRelCount(DataGroupRelQueryRequest request) { + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(request); + // 查询 + return dataGroupRelDAO.selectCount(wrapper); + } + + @Override + public DataGrid getDataGroupRelPage(DataGroupRelQueryRequest request) { + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(request); + // 查询 + return dataGroupRelDAO.of(wrapper) + .page(request) + .dataGrid(DataGroupRelConvert.MAPPER::to); + } + + @Override + public Integer deleteDataGroupRelById(Long id) { + log.info("DataGroupRelService-deleteDataGroupRelById id: {}", id); + // 检查数据是否存在 + DataGroupRelDO record = dataGroupRelDAO.selectById(id); + Valid.notNull(record, ErrorMessage.DATA_ABSENT); + // 删除 + int effect = dataGroupRelDAO.deleteById(id); + log.info("DataGroupRelService-deleteDataGroupRelById id: {}, effect: {}", id, effect); + // 删除缓存 + RedisMaps.delete(DataGroupRelCacheKeyDefine.DATA_GROUP_REL, id); + return effect; + } + + @Override + public Integer deleteDataGroupRelByIdList(List idList) { + log.info("DataGroupRelService-deleteDataGroupRelByIdList idList: {}", idList); + int effect = dataGroupRelDAO.deleteBatchIds(idList); + log.info("DataGroupRelService-deleteDataGroupRelByIdList effect: {}", effect); + // 删除缓存 + RedisMaps.delete(DataGroupRelCacheKeyDefine.DATA_GROUP_REL, idList); + return effect; + } + + @Override + public Integer deleteDataGroupRel(DataGroupRelQueryRequest request) { + log.info("DataGroupRelService.deleteDataGroupRel request: {}", JSON.toJSONString(request)); + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(request); + // 删除 + int effect = dataGroupRelDAO.delete(wrapper); + log.info("DataGroupRelService.deleteDataGroupRel effect: {}", effect); + // 删除缓存 + RedisMaps.delete(DataGroupRelCacheKeyDefine.DATA_GROUP_REL); + return effect; + } + + /** + * 检查对象是否存在 + * + * @param domain domain + */ + private void checkDataGroupRelPresent(DataGroupRelDO domain) { + // 构造条件 + LambdaQueryWrapper wrapper = dataGroupRelDAO.wrapper() + // 更新时忽略当前记录 + .ne(DataGroupRelDO::getId, domain.getId()) + // 用其他字段做重复校验 + .eq(DataGroupRelDO::getGroupId, domain.getGroupId()) + .eq(DataGroupRelDO::getRelId, domain.getRelId()) + .eq(DataGroupRelDO::getType, domain.getType()) + .eq(DataGroupRelDO::getSort, domain.getSort()); + // 检查是否存在 + boolean present = dataGroupRelDAO.of(wrapper).present(); + Valid.isFalse(present, ErrorMessage.DATA_PRESENT); + } + + /** + * 构建查询 wrapper + * + * @param request request + * @return wrapper + */ + private LambdaQueryWrapper buildQueryWrapper(DataGroupRelQueryRequest request) { + String searchValue = request.getSearchValue(); + return dataGroupRelDAO.wrapper() + .eq(DataGroupRelDO::getId, request.getId()) + .eq(DataGroupRelDO::getGroupId, request.getGroupId()) + .eq(DataGroupRelDO::getRelId, request.getRelId()) + .eq(DataGroupRelDO::getType, request.getType()) + .eq(DataGroupRelDO::getSort, request.getSort()) + .and(Strings.isNotEmpty(searchValue), c -> c + .eq(DataGroupRelDO::getId, searchValue).or() + .eq(DataGroupRelDO::getGroupId, searchValue).or() + .eq(DataGroupRelDO::getRelId, searchValue).or() + .eq(DataGroupRelDO::getType, searchValue).or() + .eq(DataGroupRelDO::getSort, searchValue) + ); + } + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataGroupServiceImpl.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataGroupServiceImpl.java new file mode 100644 index 00000000..aff3b980 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataGroupServiceImpl.java @@ -0,0 +1,247 @@ +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.lang.utils.collect.Lists; +import com.orion.ops.framework.common.constant.Const; +import com.orion.ops.framework.common.constant.ErrorMessage; +import com.orion.ops.framework.common.utils.FileNames; +import com.orion.ops.framework.common.utils.Valid; +import com.orion.ops.framework.redis.core.utils.RedisMaps; +import com.orion.ops.framework.redis.core.utils.RedisStrings; +import com.orion.ops.module.infra.entity.vo.*; +import com.orion.ops.module.infra.entity.request.data.*; +import com.orion.ops.module.infra.convert.*; +import com.orion.ops.module.infra.entity.dto.*; +import com.orion.ops.module.infra.define.cache.*; +import com.orion.ops.module.infra.define.operator.*; +import com.orion.ops.module.infra.entity.domain.DataGroupDO; +import com.orion.ops.module.infra.dao.DataGroupDAO; +import com.orion.ops.module.infra.service.DataGroupService; +import com.orion.web.servlet.web.Servlets; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 数据分组 服务实现类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-7 18:44 + */ +@Slf4j +@Service +public class DataGroupServiceImpl implements DataGroupService { + + @Resource + private DataGroupDAO dataGroupDAO; + + @Override + public Long createDataGroup(DataGroupCreateRequest request) { + log.info("DataGroupService-createDataGroup request: {}", JSON.toJSONString(request)); + // 转换 + DataGroupDO record = DataGroupConvert.MAPPER.to(request); + // 查询数据是否冲突 + this.checkDataGroupPresent(record); + // 插入 + int effect = dataGroupDAO.insert(record); + Long id = record.getId(); + log.info("DataGroupService-createDataGroup id: {}, effect: {}", id, effect); + // 删除缓存 + RedisMaps.delete(DataGroupCacheKeyDefine.DATA_GROUP); + return id; + } + + @Override + public Integer updateDataGroupById(DataGroupUpdateRequest request) { + Long id = Valid.notNull(request.getId(), ErrorMessage.ID_MISSING); + log.info("DataGroupService-updateDataGroupById id: {}, request: {}", id, JSON.toJSONString(request)); + // 查询 + DataGroupDO record = dataGroupDAO.selectById(id); + Valid.notNull(record, ErrorMessage.DATA_ABSENT); + // 转换 + DataGroupDO updateRecord = DataGroupConvert.MAPPER.to(request); + // 查询数据是否冲突 + this.checkDataGroupPresent(updateRecord); + // 更新 + int effect = dataGroupDAO.updateById(updateRecord); + log.info("DataGroupService-updateDataGroupById effect: {}", effect); + // 删除缓存 + RedisMaps.delete(DataGroupCacheKeyDefine.DATA_GROUP); + return effect; + } + + @Override + public Integer updateDataGroup(DataGroupQueryRequest query, DataGroupUpdateRequest update) { + log.info("DataGroupService.updateDataGroup query: {}, update: {}", JSON.toJSONString(query), JSON.toJSONString(update)); + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(query); + // 转换 + DataGroupDO updateRecord = DataGroupConvert.MAPPER.to(update); + // 更新 + int effect = dataGroupDAO.update(updateRecord, wrapper); + log.info("DataGroupService.updateDataGroup effect: {}", effect); + // 删除缓存 + RedisMaps.delete(DataGroupCacheKeyDefine.DATA_GROUP); + return effect; + } + + @Override + public DataGroupVO getDataGroupById(Long id) { + // 查询 + DataGroupDO record = dataGroupDAO.selectById(id); + Valid.notNull(record, ErrorMessage.DATA_ABSENT); + // 转换 + return DataGroupConvert.MAPPER.to(record); + } + + @Override + public List getDataGroupByIdList(List idList) { + // 查询 + List records = dataGroupDAO.selectBatchIds(idList); + if (records.isEmpty()) { + return Lists.empty(); + } + // 转换 + return DataGroupConvert.MAPPER.to(records); + } + + @Override + public List getDataGroupList(DataGroupQueryRequest request) { + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(request); + // 查询 + return dataGroupDAO.of(wrapper).list(DataGroupConvert.MAPPER::to); + } + + @Override + public List getDataGroupListByCache() { + // 查询缓存 + List list = RedisMaps.valuesJson(DataGroupCacheKeyDefine.DATA_GROUP); + if (list.isEmpty()) { + // 查询数据库 + list = dataGroupDAO.of().list(DataGroupConvert.MAPPER::toCache); + // 添加默认值 防止穿透 + if (list.isEmpty()) { + list.add(DataGroupCacheDTO.builder() + .id(Const.NONE_ID) + .build()); + } + // 设置缓存 + RedisMaps.putAllJson(DataGroupCacheKeyDefine.DATA_GROUP.getKey(), s -> s.getId().toString(), list); + RedisMaps.setExpire(DataGroupCacheKeyDefine.DATA_GROUP); + } + // 删除默认值 + return list.stream() + .filter(s -> !s.getId().equals(Const.NONE_ID)) + .map(DataGroupConvert.MAPPER::to) + .collect(Collectors.toList()); + } + + @Override + public Long getDataGroupCount(DataGroupQueryRequest request) { + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(request); + // 查询 + return dataGroupDAO.selectCount(wrapper); + } + + @Override + public DataGrid getDataGroupPage(DataGroupQueryRequest request) { + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(request); + // 查询 + return dataGroupDAO.of(wrapper) + .page(request) + .dataGrid(DataGroupConvert.MAPPER::to); + } + + @Override + public Integer deleteDataGroupById(Long id) { + log.info("DataGroupService-deleteDataGroupById id: {}", id); + // 检查数据是否存在 + DataGroupDO record = dataGroupDAO.selectById(id); + Valid.notNull(record, ErrorMessage.DATA_ABSENT); + // 删除 + int effect = dataGroupDAO.deleteById(id); + log.info("DataGroupService-deleteDataGroupById id: {}, effect: {}", id, effect); + // 删除缓存 + RedisMaps.delete(DataGroupCacheKeyDefine.DATA_GROUP, id); + return effect; + } + + @Override + public Integer deleteDataGroupByIdList(List idList) { + log.info("DataGroupService-deleteDataGroupByIdList idList: {}", idList); + int effect = dataGroupDAO.deleteBatchIds(idList); + log.info("DataGroupService-deleteDataGroupByIdList effect: {}", effect); + // 删除缓存 + RedisMaps.delete(DataGroupCacheKeyDefine.DATA_GROUP, idList); + return effect; + } + + @Override + public Integer deleteDataGroup(DataGroupQueryRequest request) { + log.info("DataGroupService.deleteDataGroup request: {}", JSON.toJSONString(request)); + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(request); + // 删除 + int effect = dataGroupDAO.delete(wrapper); + log.info("DataGroupService.deleteDataGroup effect: {}", effect); + // 删除缓存 + RedisStrings.delete(DataGroupCacheKeyDefine.DATA_GROUP); + return effect; + } + + /** + * 检查对象是否存在 + * + * @param domain domain + */ + private void checkDataGroupPresent(DataGroupDO domain) { + // 构造条件 + LambdaQueryWrapper wrapper = dataGroupDAO.wrapper() + // 更新时忽略当前记录 + .ne(DataGroupDO::getId, domain.getId()) + // 用其他字段做重复校验 + .eq(DataGroupDO::getParentId, domain.getParentId()) + .eq(DataGroupDO::getName, domain.getName()) + .eq(DataGroupDO::getType, domain.getType()); + // 检查是否存在 + boolean present = dataGroupDAO.of(wrapper).present(); + Valid.isFalse(present, ErrorMessage.DATA_PRESENT); + } + + /** + * 构建查询 wrapper + * + * @param request request + * @return wrapper + */ + private LambdaQueryWrapper buildQueryWrapper(DataGroupQueryRequest request) { + String searchValue = request.getSearchValue(); + return dataGroupDAO.wrapper() + .eq(DataGroupDO::getId, request.getId()) + .eq(DataGroupDO::getParentId, request.getParentId()) + .eq(DataGroupDO::getName, request.getName()) + .eq(DataGroupDO::getType, request.getType()) + .eq(DataGroupDO::getSort, request.getSort()) + .and(Strings.isNotEmpty(searchValue), c -> c + .eq(DataGroupDO::getId, searchValue).or() + .eq(DataGroupDO::getParentId, searchValue).or() + .eq(DataGroupDO::getName, searchValue).or() + .eq(DataGroupDO::getType, searchValue).or() + .eq(DataGroupDO::getSort, searchValue) + ); + } + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/DataGroupMapper.xml b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/DataGroupMapper.xml new file mode 100644 index 00000000..cd4ede03 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/DataGroupMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + id, parent_id, name, type, sort, create_time, update_time, creator, updater, deleted + + + diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/DataGroupRelMapper.xml b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/DataGroupRelMapper.xml new file mode 100644 index 00000000..e020ea90 --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/DataGroupRelMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + id, group_id, rel_id, type, sort, create_time, update_time, creator, updater, deleted + + +