From 00dd42bdc6a0691231cc9a7a18c593aea541d85e Mon Sep 17 00:00:00 2001 From: rays <1615175118@qq.com> Date: Fri, 28 May 2021 18:12:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=B5=84=E6=BA=90=E6=A0=91?= =?UTF-8?q?=E6=8B=96=E6=8B=BD=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/pojo/resource/TreeSortRequest.java | 48 +++++++++++++++++++ .../controller/ApiGroupController.java | 13 +++++ .../modular/resource/enums/NodeTypeEnums.java | 2 +- .../resource/service/ApiGroupService.java | 9 ++++ .../service/impl/ApiGroupServiceImpl.java | 44 +++++++++++++++++ 5 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/resource/TreeSortRequest.java diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/resource/TreeSortRequest.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/resource/TreeSortRequest.java new file mode 100644 index 000000000..5bc7574ca --- /dev/null +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/resource/TreeSortRequest.java @@ -0,0 +1,48 @@ +package cn.stylefeng.roses.kernel.system.api.pojo.resource; + +import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; +import cn.stylefeng.roses.kernel.scanner.api.annotation.field.ChineseDescription; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +/** + * 树排序请求封装 + * + * @author majianguo + * @date 2021/5/28 下午5:18 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class TreeSortRequest extends BaseRequest { + + /** + * 节点主键 + */ + @ChineseDescription("节点主键") + @NotNull(message = "节点主键不能为空", groups = {edit.class}) + private Long nodeId; + + /** + * 节点类型:1-叶子节点,2-数据节点 + */ + @ChineseDescription("节点类型:1-叶子节点,2-数据节点") + @NotNull(message = "节点类型不能为空", groups = {edit.class}) + private String nodeType; + + /** + * 节点父ID + */ + @ChineseDescription("节点父ID") + @NotNull(message = "节点父ID不能为空", groups = {edit.class}) + private Long nodePid; + + /** + * 节点排序 + */ + @ChineseDescription("节点排序") + @NotNull(message = "节点排序不能为空", groups = {edit.class}) + private BigDecimal nodeSort; +} diff --git a/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/controller/ApiGroupController.java b/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/controller/ApiGroupController.java index 5a31af252..081a5c198 100644 --- a/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/controller/ApiGroupController.java +++ b/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/controller/ApiGroupController.java @@ -7,6 +7,7 @@ import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource; import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource; import cn.stylefeng.roses.kernel.system.api.pojo.resource.ApiGroupRequest; import cn.stylefeng.roses.kernel.system.api.pojo.resource.ApiGroupTreeWrapper; +import cn.stylefeng.roses.kernel.system.api.pojo.resource.TreeSortRequest; import cn.stylefeng.roses.kernel.system.modular.resource.service.ApiGroupService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestBody; @@ -63,6 +64,18 @@ public class ApiGroupController { return new SuccessResponseData(); } + /** + * 编辑树节点排序 + * + * @author majianguo + * @date 2021/05/21 15:03 + */ + @PostResource(name = "编辑树节点排序", path = "/apiGroup/editTreeSort") + public ResponseData editTreeSort(@RequestBody @Validated(TreeSortRequest.edit.class) List treeSortRequestList) { + apiGroupService.editTreeSort(treeSortRequestList); + return new SuccessResponseData(); + } + /** * 查看详情 * diff --git a/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/enums/NodeTypeEnums.java b/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/enums/NodeTypeEnums.java index 0a043cdfe..d9dd6ad72 100644 --- a/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/enums/NodeTypeEnums.java +++ b/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/enums/NodeTypeEnums.java @@ -14,7 +14,7 @@ public enum NodeTypeEnums { /** * 叶子节点 */ - LEAF_NODE("1", "根节点"), + LEAF_NODE("1", "叶子节点"), /** * 数据节点 diff --git a/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/service/ApiGroupService.java b/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/service/ApiGroupService.java index b8133d511..f9254bd81 100644 --- a/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/service/ApiGroupService.java +++ b/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/service/ApiGroupService.java @@ -3,6 +3,7 @@ package cn.stylefeng.roses.kernel.system.modular.resource.service; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.system.api.pojo.resource.ApiGroupRequest; import cn.stylefeng.roses.kernel.system.api.pojo.resource.ApiGroupTreeWrapper; +import cn.stylefeng.roses.kernel.system.api.pojo.resource.TreeSortRequest; import cn.stylefeng.roses.kernel.system.modular.resource.entity.ApiGroup; import com.baomidou.mybatisplus.extension.service.IService; @@ -98,4 +99,12 @@ public interface ApiGroupService extends IService { * @date 2021/5/27 下午2:49 **/ List groupTree(ApiGroupRequest apiGroupRequest); + + /** + * 编辑树节点排序 + * + * @author majianguo + * @date 2021/5/28 下午5:27 + **/ + void editTreeSort(List treeSortRequestList); } \ No newline at end of file diff --git a/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/service/impl/ApiGroupServiceImpl.java b/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/service/impl/ApiGroupServiceImpl.java index 7c3462906..ae7d7e009 100644 --- a/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/service/impl/ApiGroupServiceImpl.java +++ b/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/service/impl/ApiGroupServiceImpl.java @@ -13,6 +13,7 @@ import cn.stylefeng.roses.kernel.system.api.exception.SystemModularException; import cn.stylefeng.roses.kernel.system.api.exception.enums.resource.ApiGroupExceptionEnum; import cn.stylefeng.roses.kernel.system.api.pojo.resource.ApiGroupRequest; import cn.stylefeng.roses.kernel.system.api.pojo.resource.ApiGroupTreeWrapper; +import cn.stylefeng.roses.kernel.system.api.pojo.resource.TreeSortRequest; import cn.stylefeng.roses.kernel.system.modular.resource.entity.ApiGroup; import cn.stylefeng.roses.kernel.system.modular.resource.entity.ApiResource; import cn.stylefeng.roses.kernel.system.modular.resource.entity.ApiResourceField; @@ -235,6 +236,49 @@ public class ApiGroupServiceImpl extends ServiceImpl i return this.createTree(apiGroupTreeWrapperList); } + @Override + @Transactional(rollbackFor = Exception.class) + public void editTreeSort(List treeSortRequestList) { + + // 所有叶子节点 + List apiGroupList = new ArrayList<>(); + + // 所有数据节点 + List apiResourceList = new ArrayList<>(); + + // 处理数据 + for (TreeSortRequest treeSortRequest : treeSortRequestList) { + if (NodeTypeEnums.LEAF_NODE.getType().equals(treeSortRequest.getNodeType())) { + ApiGroup item = new ApiGroup(); + item.setGroupId(treeSortRequest.getNodeId()); + item.setGroupPid(treeSortRequest.getNodePid()); + item.setGroupSort(treeSortRequest.getNodeSort()); + apiGroupList.add(item); + } else { + ApiResource item = new ApiResource(); + item.setApiResourceId(treeSortRequest.getNodeId()); + item.setGroupId(treeSortRequest.getNodePid()); + item.setResourceSort(treeSortRequest.getNodeSort()); + apiResourceList.add(item); + } + } + + // 处理所有叶子节点 + if (ObjectUtil.isNotEmpty(apiGroupList)) { + for (ApiGroup apiGroup : apiGroupList) { + ApiGroup oldApiGroup = this.getById(apiGroup.getGroupId()); + this.setPids(apiGroup); + this.updatePids(apiGroup, oldApiGroup); + } + this.updateBatchById(apiGroupList); + } + + // 处理所有数据节点 + if (ObjectUtil.isNotEmpty(apiResourceList)) { + this.apiResourceService.updateBatchById(apiResourceList); + } + } + @Override public List findList(ApiGroupRequest apiGroupRequest) { LambdaQueryWrapper wrapper = this.createWrapper(apiGroupRequest);