diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/PathBookmarkController.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/PathBookmarkController.java index 43b578a1..63ca3588 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/PathBookmarkController.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/PathBookmarkController.java @@ -3,7 +3,7 @@ package com.orion.ops.module.asset.controller; import com.orion.ops.framework.web.core.annotation.RestWrapper; import com.orion.ops.module.asset.entity.request.path.PathBookmarkCreateRequest; import com.orion.ops.module.asset.entity.request.path.PathBookmarkUpdateRequest; -import com.orion.ops.module.asset.entity.vo.PathBookmarkVO; +import com.orion.ops.module.asset.entity.vo.PathBookmarkWrapperVO; import com.orion.ops.module.asset.service.PathBookmarkService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -13,7 +13,6 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.List; /** * 路径标签 api @@ -48,8 +47,8 @@ public class PathBookmarkController { @GetMapping("/list") @Operation(summary = "查询全部路径标签") - public List getPathBookmarkList() { - return pathBookmarkService.getPathBookmarkList(); + public PathBookmarkWrapperVO getPathBookmarkList() { + return pathBookmarkService.getPathBookmark(); } @DeleteMapping("/delete") diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/PathBookmarkGroupController.http b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/PathBookmarkGroupController.http new file mode 100644 index 00000000..bc782803 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/PathBookmarkGroupController.http @@ -0,0 +1,32 @@ +### 创建路径标签分组 +POST {{baseUrl}}/asset/path-bookmark-group/create +Content-Type: application/json +Authorization: {{token}} + +{ + "name": "" +} + + +### 更新路径标签分组 +PUT {{baseUrl}}/asset/path-bookmark-group/update +Content-Type: application/json +Authorization: {{token}} + +{ + "id": "", + "name": "" +} + + +### 查询全部路径标签分组 +GET {{baseUrl}}/asset/path-bookmark-group/list +Authorization: {{token}} + + +### 删除路径标签分组 +DELETE {{baseUrl}}/asset/path-bookmark-group/delete?id=1 +Authorization: {{token}} + + +### diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/PathBookmarkGroupController.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/PathBookmarkGroupController.java new file mode 100644 index 00000000..63ec8ae8 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/PathBookmarkGroupController.java @@ -0,0 +1,66 @@ +package com.orion.ops.module.asset.controller; + +import com.orion.ops.framework.common.validator.group.Id; +import com.orion.ops.framework.log.core.annotation.IgnoreLog; +import com.orion.ops.framework.log.core.enums.IgnoreLogMode; +import com.orion.ops.framework.web.core.annotation.RestWrapper; +import com.orion.ops.module.asset.entity.request.path.PathBookmarkGroupCreateRequest; +import com.orion.ops.module.asset.entity.request.path.PathBookmarkGroupDeleteRequest; +import com.orion.ops.module.asset.entity.request.path.PathBookmarkGroupUpdateRequest; +import com.orion.ops.module.asset.entity.vo.PathBookmarkGroupVO; +import com.orion.ops.module.asset.service.PathBookmarkGroupService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 路径标签分组 api + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024-1-24 12:28 + */ +@Tag(name = "asset - 路径标签分组服务") +@Slf4j +@Validated +@RestWrapper +@RestController +@RequestMapping("/asset/path-bookmark-group") +@SuppressWarnings({"ELValidationInJSP", "SpringElInspection"}) +public class PathBookmarkGroupController { + + @Resource + private PathBookmarkGroupService pathBookmarkGroupService; + + @PostMapping("/create") + @Operation(summary = "创建路径标签分组") + public Long createPathBookmarkGroup(@Validated @RequestBody PathBookmarkGroupCreateRequest request) { + return pathBookmarkGroupService.createPathBookmarkGroup(request); + } + + @PutMapping("/update") + @Operation(summary = "更新路径标签分组") + public Integer updatePathBookmarkGroup(@Validated @RequestBody PathBookmarkGroupUpdateRequest request) { + return pathBookmarkGroupService.updatePathBookmarkGroupById(request); + } + + @IgnoreLog(IgnoreLogMode.RET) + @GetMapping("/list") + @Operation(summary = "查询全部路径标签分组") + public List getPathBookmarkGroupList() { + return pathBookmarkGroupService.getPathBookmarkGroupList(); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除路径标签分组") + public Integer deletePathBookmarkGroup(@Validated(Id.class) @RequestBody PathBookmarkGroupDeleteRequest request) { + return pathBookmarkGroupService.deletePathBookmarkGroup(request); + } + +} + diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/convert/CommandSnippetGroupConvert.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/convert/CommandSnippetGroupConvert.java index a926d44f..dd460253 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/convert/CommandSnippetGroupConvert.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/convert/CommandSnippetGroupConvert.java @@ -1,6 +1,5 @@ package com.orion.ops.module.asset.convert; -import com.orion.ops.module.asset.entity.domain.CommandSnippetGroupDO; import com.orion.ops.module.asset.entity.request.command.CommandSnippetGroupCreateRequest; import com.orion.ops.module.asset.entity.request.command.CommandSnippetGroupUpdateRequest; import com.orion.ops.module.asset.entity.vo.CommandSnippetGroupVO; @@ -10,8 +9,6 @@ import com.orion.ops.module.infra.entity.dto.data.DataGroupRenameDTO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -import java.util.List; - /** * 命令片段分组 内部对象转换器 * @@ -30,6 +27,4 @@ public interface CommandSnippetGroupConvert { CommandSnippetGroupVO to(DataGroupDTO domain); - List to(List list); - } diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/convert/PathBookmarkGroupConvert.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/convert/PathBookmarkGroupConvert.java new file mode 100644 index 00000000..be0e2044 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/convert/PathBookmarkGroupConvert.java @@ -0,0 +1,30 @@ +package com.orion.ops.module.asset.convert; + +import com.orion.ops.module.asset.entity.request.path.PathBookmarkGroupCreateRequest; +import com.orion.ops.module.asset.entity.request.path.PathBookmarkGroupUpdateRequest; +import com.orion.ops.module.asset.entity.vo.PathBookmarkGroupVO; +import com.orion.ops.module.infra.entity.dto.data.DataGroupCreateDTO; +import com.orion.ops.module.infra.entity.dto.data.DataGroupDTO; +import com.orion.ops.module.infra.entity.dto.data.DataGroupRenameDTO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * 路径标签分组 内部对象转换器 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024-1-24 12:28 + */ +@Mapper +public interface PathBookmarkGroupConvert { + + PathBookmarkGroupConvert MAPPER = Mappers.getMapper(PathBookmarkGroupConvert.class); + + DataGroupCreateDTO to(PathBookmarkGroupCreateRequest request); + + DataGroupRenameDTO to(PathBookmarkGroupUpdateRequest request); + + PathBookmarkGroupVO to(DataGroupDTO domain); + +} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/domain/CommandSnippetGroupDO.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/domain/CommandSnippetGroupDO.java deleted file mode 100644 index 8089a7ca..00000000 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/domain/CommandSnippetGroupDO.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.orion.ops.module.asset.entity.domain; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.orion.ops.framework.mybatis.core.domain.BaseDO; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - -/** - * 命令片段分组 实体对象 - * - * @author Jiahang Li - * @version 1.0.0 - * @since 2024-1-24 12:28 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -@EqualsAndHashCode(callSuper = true) -@TableName(value = "command_snippet_group", autoResultMap = true) -@Schema(name = "CommandSnippetGroupDO", description = "命令片段分组 实体对象") -public class CommandSnippetGroupDO extends BaseDO { - - private static final long serialVersionUID = 1L; - - @Schema(description = "id") - @TableId(value = "id", type = IdType.AUTO) - private Long id; - - @Schema(description = "用户id") - @TableField("user_id") - private Long userId; - - @Schema(description = "分组名称") - @TableField("name") - private String name; - -} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/path/PathBookmarkGroupCreateRequest.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/path/PathBookmarkGroupCreateRequest.java new file mode 100644 index 00000000..4459a1c9 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/path/PathBookmarkGroupCreateRequest.java @@ -0,0 +1,34 @@ +package com.orion.ops.module.asset.entity.request.path; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import java.io.Serializable; + +/** + * 路径标签分组 创建请求对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024-1-24 12:28 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "PathBookmarkGroupCreateRequest", description = "路径标签分组 创建请求对象") +public class PathBookmarkGroupCreateRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotBlank + @Size(max = 64) + @Schema(description = "分组名称") + private String name; + +} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/path/PathBookmarkGroupDeleteRequest.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/path/PathBookmarkGroupDeleteRequest.java new file mode 100644 index 00000000..66d01fd4 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/path/PathBookmarkGroupDeleteRequest.java @@ -0,0 +1,37 @@ +package com.orion.ops.module.asset.entity.request.path; + +import com.orion.ops.framework.common.validator.group.Id; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 路径标签分组 删除请求对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024-1-24 12:28 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "PathBookmarkGroupDeleteRequest", description = "路径标签分组 删除请求对象") +public class PathBookmarkGroupDeleteRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotNull(groups = Id.class) + @Schema(description = "id") + private Long id; + + @NotNull + @Schema(description = "是否删除组内数据") + private Boolean deleteItem; + +} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/path/PathBookmarkGroupUpdateRequest.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/path/PathBookmarkGroupUpdateRequest.java new file mode 100644 index 00000000..980b1309 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/path/PathBookmarkGroupUpdateRequest.java @@ -0,0 +1,39 @@ +package com.orion.ops.module.asset.entity.request.path; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.io.Serializable; + +/** + * 路径标签分组 更新请求对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024-1-24 12:28 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "PathBookmarkGroupUpdateRequest", description = "路径标签分组 更新请求对象") +public class PathBookmarkGroupUpdateRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotNull + @Schema(description = "id") + private Long id; + + @NotBlank + @Size(max = 64) + @Schema(description = "分组名称") + private String name; + +} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/vo/PathBookmarkGroupVO.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/vo/PathBookmarkGroupVO.java new file mode 100644 index 00000000..4ca97290 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/vo/PathBookmarkGroupVO.java @@ -0,0 +1,37 @@ +package com.orion.ops.module.asset.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * 路径标签分组 视图响应对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024-1-24 12:28 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "PathBookmarkGroupVO", description = "路径标签分组 视图响应对象") +public class PathBookmarkGroupVO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "id") + private Long id; + + @Schema(description = "分组名称") + private String name; + + @Schema(description = "路径标签列表") + private List items; + +} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/vo/PathBookmarkVO.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/vo/PathBookmarkVO.java index 82188620..ce56ce09 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/vo/PathBookmarkVO.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/vo/PathBookmarkVO.java @@ -30,6 +30,9 @@ public class PathBookmarkVO implements Serializable { @Schema(description = "用户id") private Long userId; + @Schema(description = "分组id") + private Long groupId; + @Schema(description = "名称") private String name; diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/vo/PathBookmarkWrapperVO.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/vo/PathBookmarkWrapperVO.java new file mode 100644 index 00000000..f8b04f91 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/vo/PathBookmarkWrapperVO.java @@ -0,0 +1,34 @@ +package com.orion.ops.module.asset.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * 路径标签组合 视图响应对象 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024/1/24 17:30 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "PathBookmarkWrapperVO", description = "路径标签组合 视图响应对象") +public class PathBookmarkWrapperVO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "分组") + private List groups; + + @Schema(description = "未分组的路径标签") + private List ungroupedItems; + +} \ No newline at end of file diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/PathBookmarkGroupService.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/PathBookmarkGroupService.java new file mode 100644 index 00000000..862006c4 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/PathBookmarkGroupService.java @@ -0,0 +1,50 @@ +package com.orion.ops.module.asset.service; + +import com.orion.ops.module.asset.entity.request.path.PathBookmarkGroupCreateRequest; +import com.orion.ops.module.asset.entity.request.path.PathBookmarkGroupDeleteRequest; +import com.orion.ops.module.asset.entity.request.path.PathBookmarkGroupUpdateRequest; +import com.orion.ops.module.asset.entity.vo.PathBookmarkGroupVO; + +import java.util.List; + +/** + * 路径标签分组 服务类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024-1-24 12:28 + */ +public interface PathBookmarkGroupService { + + /** + * 创建路径标签分组 + * + * @param request request + * @return id + */ + Long createPathBookmarkGroup(PathBookmarkGroupCreateRequest request); + + /** + * 更新路径标签分组 + * + * @param request request + * @return effect + */ + Integer updatePathBookmarkGroupById(PathBookmarkGroupUpdateRequest request); + + /** + * 查询全部路径标签分组 + * + * @return rows + */ + List getPathBookmarkGroupList(); + + /** + * 删除路径标签分组 + * + * @param request request + * @return effect + */ + Integer deletePathBookmarkGroup(PathBookmarkGroupDeleteRequest request); + +} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/PathBookmarkService.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/PathBookmarkService.java index b565c9e8..47fc6620 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/PathBookmarkService.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/PathBookmarkService.java @@ -3,6 +3,7 @@ package com.orion.ops.module.asset.service; import com.orion.ops.module.asset.entity.request.path.PathBookmarkCreateRequest; import com.orion.ops.module.asset.entity.request.path.PathBookmarkUpdateRequest; import com.orion.ops.module.asset.entity.vo.PathBookmarkVO; +import com.orion.ops.module.asset.entity.vo.PathBookmarkWrapperVO; import java.util.List; @@ -31,6 +32,13 @@ public interface PathBookmarkService { */ Integer updatePathBookmarkById(PathBookmarkUpdateRequest request); + /** + * 查询路径标签 + * + * @return rows + */ + PathBookmarkWrapperVO getPathBookmark(); + /** * 查询全部路径标签 * diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/PathBookmarkGroupServiceImpl.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/PathBookmarkGroupServiceImpl.java new file mode 100644 index 00000000..804a30ed --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/PathBookmarkGroupServiceImpl.java @@ -0,0 +1,99 @@ +package com.orion.ops.module.asset.service.impl; + +import com.alibaba.fastjson.JSON; +import com.orion.lang.utils.Booleans; +import com.orion.ops.framework.common.constant.Const; +import com.orion.ops.framework.common.constant.ErrorMessage; +import com.orion.ops.framework.common.utils.Valid; +import com.orion.ops.framework.security.core.utils.SecurityUtils; +import com.orion.ops.module.asset.convert.PathBookmarkGroupConvert; +import com.orion.ops.module.asset.entity.request.path.PathBookmarkGroupCreateRequest; +import com.orion.ops.module.asset.entity.request.path.PathBookmarkGroupDeleteRequest; +import com.orion.ops.module.asset.entity.request.path.PathBookmarkGroupUpdateRequest; +import com.orion.ops.module.asset.entity.vo.PathBookmarkGroupVO; +import com.orion.ops.module.asset.service.PathBookmarkGroupService; +import com.orion.ops.module.asset.service.PathBookmarkService; +import com.orion.ops.module.infra.api.DataGroupApi; +import com.orion.ops.module.infra.api.DataGroupUserApi; +import com.orion.ops.module.infra.entity.dto.data.DataGroupCreateDTO; +import com.orion.ops.module.infra.entity.dto.data.DataGroupDTO; +import com.orion.ops.module.infra.entity.dto.data.DataGroupRenameDTO; +import com.orion.ops.module.infra.enums.DataGroupTypeEnum; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 路径标签分组 服务实现类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024-1-24 12:28 + */ +@Slf4j +@Service +public class PathBookmarkGroupServiceImpl implements PathBookmarkGroupService { + + @Resource + private DataGroupApi dataGroupApi; + + @Resource + private DataGroupUserApi dataGroupUserApi; + + @Resource + private PathBookmarkService pathBookmarkService; + + @Override + public Long createPathBookmarkGroup(PathBookmarkGroupCreateRequest request) { + Long userId = SecurityUtils.getLoginUserId(); + log.info("PathBookmarkGroupService-createPathBookmarkGroup request: {}", JSON.toJSONString(request)); + // 创建 + DataGroupCreateDTO create = PathBookmarkGroupConvert.MAPPER.to(request); + create.setParentId(Const.ROOT_PARENT_ID); + return dataGroupUserApi.createDataGroup(DataGroupTypeEnum.PATH_BOOKMARK, userId, create); + } + + @Override + public Integer updatePathBookmarkGroupById(PathBookmarkGroupUpdateRequest request) { + Long id = Valid.notNull(request.getId(), ErrorMessage.ID_MISSING); + log.info("PathBookmarkGroupService-updatePathBookmarkGroupById id: {}, request: {}", id, JSON.toJSONString(request)); + // 重命名 + DataGroupRenameDTO rename = PathBookmarkGroupConvert.MAPPER.to(request); + return dataGroupApi.renameDataGroup(rename); + } + + @Override + public List getPathBookmarkGroupList() { + Long userId = SecurityUtils.getLoginUserId(); + // 查询分组 + return dataGroupUserApi.getDataGroupList(DataGroupTypeEnum.PATH_BOOKMARK, userId) + .stream() + .sorted(Comparator.comparing(DataGroupDTO::getSort)) + .map(PathBookmarkGroupConvert.MAPPER::to) + .collect(Collectors.toList()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer deletePathBookmarkGroup(PathBookmarkGroupDeleteRequest request) { + Long userId = SecurityUtils.getLoginUserId(); + Long id = request.getId(); + log.info("PathBookmarkGroupService-deletePathBookmarkGroupById id: {}", id); + // 删除分组 + Integer effect = dataGroupApi.deleteDataGroupById(id); + if (Booleans.isTrue(request.getDeleteItem())) { + // 删除组内数据 + effect += pathBookmarkService.deleteByGroupId(userId, id); + } else { + // 移动到根节点 + effect += pathBookmarkService.setGroupNull(userId, id); + } + return effect; + } + +} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/PathBookmarkServiceImpl.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/PathBookmarkServiceImpl.java index 7fe1ea9c..8c893b45 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/PathBookmarkServiceImpl.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/PathBookmarkServiceImpl.java @@ -16,7 +16,10 @@ import com.orion.ops.module.asset.entity.domain.PathBookmarkDO; import com.orion.ops.module.asset.entity.dto.PathBookmarkCacheDTO; import com.orion.ops.module.asset.entity.request.path.PathBookmarkCreateRequest; import com.orion.ops.module.asset.entity.request.path.PathBookmarkUpdateRequest; +import com.orion.ops.module.asset.entity.vo.PathBookmarkGroupVO; import com.orion.ops.module.asset.entity.vo.PathBookmarkVO; +import com.orion.ops.module.asset.entity.vo.PathBookmarkWrapperVO; +import com.orion.ops.module.asset.service.PathBookmarkGroupService; import com.orion.ops.module.asset.service.PathBookmarkService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -24,6 +27,8 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Comparator; import java.util.List; +import java.util.Map; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -40,6 +45,9 @@ public class PathBookmarkServiceImpl implements PathBookmarkService { @Resource private PathBookmarkDAO pathBookmarkDAO; + @Resource + private PathBookmarkGroupService pathBookmarkGroupService; + @Override public Long createPathBookmark(PathBookmarkCreateRequest request) { Long userId = SecurityUtils.getLoginUserId(); @@ -83,6 +91,31 @@ public class PathBookmarkServiceImpl implements PathBookmarkService { return effect; } + @Override + public PathBookmarkWrapperVO getPathBookmark() { + // 查询分组 + List groups = pathBookmarkGroupService.getPathBookmarkGroupList(); + // 查询命令片段 + List items = this.getPathBookmarkList(); + // 设置组内数据 + Map groupMap = groups.stream() + .collect(Collectors.toMap(PathBookmarkGroupVO::getId, Function.identity())); + groupMap.forEach((groupId, group) -> { + List groupedItems = items.stream() + .filter(s -> groupId.equals(s.getGroupId())) + .collect(Collectors.toList()); + group.setItems(groupedItems); + }); + // 未分组数据 + List ungroupedItems = items.stream() + .filter(s -> s.getGroupId() == null) + .collect(Collectors.toList()); + return PathBookmarkWrapperVO.builder() + .groups(groups) + .ungroupedItems(ungroupedItems) + .build(); + } + @Override public List getPathBookmarkList() { Long userId = SecurityUtils.getLoginUserId(); diff --git a/orion-ops-ui/src/api/asset/path-bookmark-group.ts b/orion-ops-ui/src/api/asset/path-bookmark-group.ts new file mode 100644 index 00000000..2fe570c6 --- /dev/null +++ b/orion-ops-ui/src/api/asset/path-bookmark-group.ts @@ -0,0 +1,54 @@ +import type { PathBookmarkQueryResponse } from './path-bookmark'; +import axios from 'axios'; + +/** + * 路径书签分组创建请求 + */ +export interface PathBookmarkGroupCreateRequest { + name?: string; +} + +/** + * 路径书签分组更新请求 + */ +export interface PathBookmarkGroupUpdateRequest extends PathBookmarkGroupCreateRequest { + id?: number; +} + +/** + * 路径书签分组查询响应 + */ +export interface PathBookmarkGroupQueryResponse { + id: number; + name: string; + items: Array; +} + +/** + * 创建路径书签分组 + */ +export function createPathBookmarkGroup(request: PathBookmarkGroupCreateRequest) { + return axios.post('/asset/path-bookmark-group/create', request); +} + +/** + * 更新路径书签分组 + */ +export function updatePathBookmarkGroup(request: PathBookmarkGroupUpdateRequest) { + return axios.put('/asset/path-bookmark-group/update', request); +} + +/** + * 查询全部路径书签分组 + */ +export function getPathBookmarkGroupList() { + return axios.get>('/asset/path-bookmark-group/list'); +} + +/** + * 删除路径书签分组 + */ +export function deletePathBookmarkGroup(id: number) { + return axios.delete('/asset/path-bookmark-group/delete', { params: { id } }); +} + diff --git a/orion-ops-ui/src/api/asset/path-bookmark.ts b/orion-ops-ui/src/api/asset/path-bookmark.ts new file mode 100644 index 00000000..6e38c26e --- /dev/null +++ b/orion-ops-ui/src/api/asset/path-bookmark.ts @@ -0,0 +1,69 @@ +import { PathBookmarkGroupQueryResponse } from '@/api/asset/path-bookmark-group'; +import axios from 'axios'; + +/** + * 路径标签创建请求 + */ +export interface PathBookmarkCreateRequest { + groupId?: number; + name?: string; + path?: string; +} + +/** + * 路径标签更新请求 + */ +export interface PathBookmarkUpdateRequest extends PathBookmarkCreateRequest { + id?: number; +} + +/** + * 路径标签查询响应 + */ +export interface PathBookmarkQueryResponse extends PathBookmarkQueryResponseExtra { + id: number; + groupId: number; + name: string; + path: string; +} + +export interface PathBookmarkQueryResponseExtra { + visible: boolean; + expand?: boolean; +} + +/** + * 路径标签查询响应 + */ +export interface PathBookmarkWrapperResponse { + groups: Array; + ungroupedItems: Array; +} + +/** + * 创建路径标签 + */ +export function createPathBookmark(request: PathBookmarkCreateRequest) { + return axios.post('/asset/path-bookmark/create', request); +} + +/** + * 更新路径标签 + */ +export function updatePathBookmark(request: PathBookmarkUpdateRequest) { + return axios.put('/asset/path-bookmark/update', request); +} + +/** + * 分页查询路径标签 + */ +export function getPathBookmarkList() { + return axios.get('/asset/path-bookmark/list'); +} + +/** + * 删除路径标签 + */ +export function deletePathBookmark(id: number) { + return axios.delete('/asset/path-bookmark/delete', { params: { id } }); +} diff --git a/orion-ops-ui/src/store/modules/cache/index.ts b/orion-ops-ui/src/store/modules/cache/index.ts index cf1af3a7..b99d9887 100644 --- a/orion-ops-ui/src/store/modules/cache/index.ts +++ b/orion-ops-ui/src/store/modules/cache/index.ts @@ -14,12 +14,13 @@ import { getMenuList } from '@/api/system/menu'; import { getCurrentAuthorizedHostIdentity, getCurrentAuthorizedHostKey } from '@/api/asset/asset-authorized-data'; import { getCommandSnippetGroupList } from '@/api/asset/command-snippet-group'; import { getExecJobList } from '@/api/exec/exec-job'; +import { getPathBookmarkGroupList } from '@/api/asset/path-bookmark-group'; export type CacheType = 'users' | 'menus' | 'roles' | 'hosts' | 'hostGroups' | 'hostKeys' | 'hostIdentities' | 'dictKeys' | 'authorizedHostKeys' | 'authorizedHostIdentities' - | 'commandSnippetGroups' + | 'commandSnippetGroups' | 'pathBookmarkGroups' | 'execJob' | string @@ -120,6 +121,11 @@ export default defineStore('cache', { return await this.load('commandSnippetGroups', getCommandSnippetGroupList, force); }, + // 获取路径书签分组 + async loadPathBookmarkGroups(force = false) { + return await this.load('pathBookmarkGroups', getPathBookmarkGroupList, force); + }, + // 获取执行计划列表 async loadExecJobs(force = false) { return await this.load('execJob', getExecJobList, force); diff --git a/orion-ops-ui/src/store/modules/terminal/index.ts b/orion-ops-ui/src/store/modules/terminal/index.ts index 1347aa6f..fcc3548f 100644 --- a/orion-ops-ui/src/store/modules/terminal/index.ts +++ b/orion-ops-ui/src/store/modules/terminal/index.ts @@ -8,7 +8,7 @@ import type { TerminalShortcutSetting, TerminalState } from './types'; -import type { ISshSession, PanelSessionTabType, TerminalPanelTabItem } from '@/views/host/terminal/types/terminal.type'; +import type { ISftpSession, ISshSession, PanelSessionTabType, TerminalPanelTabItem } from '@/views/host/terminal/types/terminal.type'; import type { AuthorizedHostQueryResponse } from '@/api/asset/asset-authorized-data'; import { getCurrentAuthorizedHost } from '@/api/asset/asset-authorized-data'; import type { HostQueryResponse } from '@/api/asset/host'; @@ -226,6 +226,19 @@ export default defineStore('terminal', { return this.sessionManager.getSession(sessionTab.sessionId); }, + // 获取当前 sftp 会话 + getCurrentSftpSession() { + // 获取面板会话 + const sessionTab = this.panelManager + .getCurrentPanel() + .getCurrentTab(); + if (!sessionTab || sessionTab.type !== PanelSessionType.SFTP.type) { + return; + } + // 获取会话 + return this.sessionManager.getSession(sessionTab.sessionId); + }, + }, }); diff --git a/orion-ops-ui/src/views/host/command-snippet/components/command-snippet-form-drawer.vue b/orion-ops-ui/src/views/host/command-snippet/components/command-snippet-form-drawer.vue index 9ae8b610..8344d218 100644 --- a/orion-ops-ui/src/views/host/command-snippet/components/command-snippet-form-drawer.vue +++ b/orion-ops-ui/src/views/host/command-snippet/components/command-snippet-form-drawer.vue @@ -11,7 +11,7 @@ @@ -21,7 +21,7 @@ allow-clear /> - + diff --git a/orion-ops-ui/src/views/host/command-snippet/components/command-snippet-list-drawer.vue b/orion-ops-ui/src/views/host/command-snippet/components/command-snippet-list-drawer.vue index 1fef1ee9..6513b1a6 100644 --- a/orion-ops-ui/src/views/host/command-snippet/components/command-snippet-list-drawer.vue +++ b/orion-ops-ui/src/views/host/command-snippet/components/command-snippet-list-drawer.vue @@ -6,7 +6,6 @@ @@ -32,21 +31,21 @@ - 暂无数据
点击上方 '' 添加一条数据吧~ @@ -54,10 +53,10 @@
- +
-