新增资源树拖拽排序

pull/19/MERGE
rays 2021-05-28 18:12:48 +08:00
parent 8697d2d064
commit 00dd42bdc6
5 changed files with 115 additions and 1 deletions

View File

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

View File

@ -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.scanner.api.annotation.PostResource;
import cn.stylefeng.roses.kernel.system.api.pojo.resource.ApiGroupRequest; 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.ApiGroupTreeWrapper;
import cn.stylefeng.roses.kernel.system.api.pojo.resource.TreeSortRequest;
import cn.stylefeng.roses.kernel.system.modular.resource.service.ApiGroupService; import cn.stylefeng.roses.kernel.system.modular.resource.service.ApiGroupService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@ -63,6 +64,18 @@ public class ApiGroupController {
return new SuccessResponseData(); 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<TreeSortRequest> treeSortRequestList) {
apiGroupService.editTreeSort(treeSortRequestList);
return new SuccessResponseData();
}
/** /**
* *
* *

View File

@ -14,7 +14,7 @@ public enum NodeTypeEnums {
/** /**
* *
*/ */
LEAF_NODE("1", "节点"), LEAF_NODE("1", "叶子节点"),
/** /**
* *

View File

@ -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.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.system.api.pojo.resource.ApiGroupRequest; 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.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.ApiGroup;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
@ -98,4 +99,12 @@ public interface ApiGroupService extends IService<ApiGroup> {
* @date 2021/5/27 2:49 * @date 2021/5/27 2:49
**/ **/
List<ApiGroupTreeWrapper> groupTree(ApiGroupRequest apiGroupRequest); List<ApiGroupTreeWrapper> groupTree(ApiGroupRequest apiGroupRequest);
/**
*
*
* @author majianguo
* @date 2021/5/28 5:27
**/
void editTreeSort(List<TreeSortRequest> treeSortRequestList);
} }

View File

@ -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.exception.enums.resource.ApiGroupExceptionEnum;
import cn.stylefeng.roses.kernel.system.api.pojo.resource.ApiGroupRequest; 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.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.ApiGroup;
import cn.stylefeng.roses.kernel.system.modular.resource.entity.ApiResource; import cn.stylefeng.roses.kernel.system.modular.resource.entity.ApiResource;
import cn.stylefeng.roses.kernel.system.modular.resource.entity.ApiResourceField; import cn.stylefeng.roses.kernel.system.modular.resource.entity.ApiResourceField;
@ -235,6 +236,49 @@ public class ApiGroupServiceImpl extends ServiceImpl<ApiGroupMapper, ApiGroup> i
return this.createTree(apiGroupTreeWrapperList); return this.createTree(apiGroupTreeWrapperList);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void editTreeSort(List<TreeSortRequest> treeSortRequestList) {
// 所有叶子节点
List<ApiGroup> apiGroupList = new ArrayList<>();
// 所有数据节点
List<ApiResource> 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 @Override
public List<ApiGroup> findList(ApiGroupRequest apiGroupRequest) { public List<ApiGroup> findList(ApiGroupRequest apiGroupRequest) {
LambdaQueryWrapper<ApiGroup> wrapper = this.createWrapper(apiGroupRequest); LambdaQueryWrapper<ApiGroup> wrapper = this.createWrapper(apiGroupRequest);