路径标签.

This commit is contained in:
lijiahang
2024-04-24 13:39:21 +08:00
parent cdf10770d6
commit 8ecb5a687e
32 changed files with 1665 additions and 86 deletions

View File

@@ -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<PathBookmarkVO> getPathBookmarkList() {
return pathBookmarkService.getPathBookmarkList();
public PathBookmarkWrapperVO getPathBookmarkList() {
return pathBookmarkService.getPathBookmark();
}
@DeleteMapping("/delete")

View File

@@ -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}}
###

View File

@@ -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<PathBookmarkGroupVO> getPathBookmarkGroupList() {
return pathBookmarkGroupService.getPathBookmarkGroupList();
}
@DeleteMapping("/delete")
@Operation(summary = "删除路径标签分组")
public Integer deletePathBookmarkGroup(@Validated(Id.class) @RequestBody PathBookmarkGroupDeleteRequest request) {
return pathBookmarkGroupService.deletePathBookmarkGroup(request);
}
}

View File

@@ -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<CommandSnippetGroupVO> to(List<CommandSnippetGroupDO> list);
}

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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<PathBookmarkVO> items;
}

View File

@@ -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;

View File

@@ -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<PathBookmarkGroupVO> groups;
@Schema(description = "未分组的路径标签")
private List<PathBookmarkVO> ungroupedItems;
}

View File

@@ -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<PathBookmarkGroupVO> getPathBookmarkGroupList();
/**
* 删除路径标签分组
*
* @param request request
* @return effect
*/
Integer deletePathBookmarkGroup(PathBookmarkGroupDeleteRequest request);
}

View File

@@ -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();
/**
* 查询全部路径标签
*

View File

@@ -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<PathBookmarkGroupVO> 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;
}
}

View File

@@ -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<PathBookmarkGroupVO> groups = pathBookmarkGroupService.getPathBookmarkGroupList();
// 查询命令片段
List<PathBookmarkVO> items = this.getPathBookmarkList();
// 设置组内数据
Map<Long, PathBookmarkGroupVO> groupMap = groups.stream()
.collect(Collectors.toMap(PathBookmarkGroupVO::getId, Function.identity()));
groupMap.forEach((groupId, group) -> {
List<PathBookmarkVO> groupedItems = items.stream()
.filter(s -> groupId.equals(s.getGroupId()))
.collect(Collectors.toList());
group.setItems(groupedItems);
});
// 未分组数据
List<PathBookmarkVO> ungroupedItems = items.stream()
.filter(s -> s.getGroupId() == null)
.collect(Collectors.toList());
return PathBookmarkWrapperVO.builder()
.groups(groups)
.ungroupedItems(ungroupedItems)
.build();
}
@Override
public List<PathBookmarkVO> getPathBookmarkList() {
Long userId = SecurityUtils.getLoginUserId();