From eaa3785837a740f1231400a8f790931d6e87185f Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Thu, 16 Nov 2023 14:37:23 +0800
Subject: [PATCH] 菜单配置标签
---
src/main/java/org/springblade/modules/system/mapper/MenuMapper.xml | 4 +
src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java | 20 +++++++--
src/main/java/org/springblade/modules/system/entity/Menu.java | 5 ++
src/main/java/org/springblade/modules/system/dto/MenuDTO.java | 6 ++
src/main/java/org/springblade/modules/label/mapper/LabelMapper.xml | 5 ++
src/main/java/org/springblade/modules/label/service/ILabelService.java | 3 +
src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java | 28 ++++++++++++-
src/main/java/org/springblade/modules/label/controller/LabelController.java | 22 ++++++-----
src/main/java/org/springblade/modules/system/service/IMenuService.java | 3 +
src/main/java/org/springblade/modules/label/mapper/LabelMapper.java | 3 +
src/main/java/org/springblade/modules/system/controller/MenuController.java | 13 +++++-
src/main/java/org/springblade/modules/system/vo/MenuVO.java | 3 +
12 files changed, 91 insertions(+), 24 deletions(-)
diff --git a/src/main/java/org/springblade/modules/label/controller/LabelController.java b/src/main/java/org/springblade/modules/label/controller/LabelController.java
index 4a31741..aa2678d 100644
--- a/src/main/java/org/springblade/modules/label/controller/LabelController.java
+++ b/src/main/java/org/springblade/modules/label/controller/LabelController.java
@@ -22,6 +22,7 @@
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
+import org.springblade.common.node.TreeIntegerNode;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
@@ -71,16 +72,6 @@
return R.data(LabelWrapper.build().pageVO(pages));
}
- /**
- * 标签管理 分页
- */
- @GetMapping("/tree")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "分页", notes = "传入label")
- public R<List<LabelVO>> tree(LabelEntity label) {
- List<LabelVO> pages = labelService.tree(label);
- return R.data( pages);
- }
/**
* 标签管理 自定义分页
@@ -104,6 +95,17 @@
}
/**
+ * 标签管理 分页
+ */
+ @GetMapping("/tree")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "树形接口", notes = "传入label")
+ public R<List<TreeIntegerNode>> tree(LabelVO label) {
+ List<TreeIntegerNode> pages = labelService.tree(label);
+ return R.data( pages);
+ }
+
+ /**
* 标签管理 新增
*/
@PostMapping("/save")
diff --git a/src/main/java/org/springblade/modules/label/mapper/LabelMapper.java b/src/main/java/org/springblade/modules/label/mapper/LabelMapper.java
index cd24e5e..5a27ad7 100644
--- a/src/main/java/org/springblade/modules/label/mapper/LabelMapper.java
+++ b/src/main/java/org/springblade/modules/label/mapper/LabelMapper.java
@@ -52,4 +52,7 @@
*/
@MapKey(value = "id")
Map<Integer, TreeIntegerNode> getLabelList(@Param("label") LabelVO label);
+
+ @MapKey(value = "id")
+ Map<Integer, TreeIntegerNode> getLabelTreeList(@Param("label") LabelVO label);
}
diff --git a/src/main/java/org/springblade/modules/label/mapper/LabelMapper.xml b/src/main/java/org/springblade/modules/label/mapper/LabelMapper.xml
index 5a4273f..1850a3a 100644
--- a/src/main/java/org/springblade/modules/label/mapper/LabelMapper.xml
+++ b/src/main/java/org/springblade/modules/label/mapper/LabelMapper.xml
@@ -28,4 +28,9 @@
</select>
+ <select id="getLabelTreeList" resultType="org.springblade.common.node.TreeIntegerNode">
+ select id as id,parent_id as parentId,label_name as name FROM jczz_label where is_deleted = 0
+ </select>
+
+
</mapper>
diff --git a/src/main/java/org/springblade/modules/label/service/ILabelService.java b/src/main/java/org/springblade/modules/label/service/ILabelService.java
index 97473c8..f123b4a 100644
--- a/src/main/java/org/springblade/modules/label/service/ILabelService.java
+++ b/src/main/java/org/springblade/modules/label/service/ILabelService.java
@@ -17,6 +17,7 @@
package org.springblade.modules.label.service;
import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.common.node.TreeIntegerNode;
import org.springblade.modules.label.entity.LabelEntity;
import org.springblade.modules.label.vo.LabelVO;
import org.springblade.core.mp.base.BaseService;
@@ -48,5 +49,5 @@
*/
Object getLabelList(LabelVO label);
- List<LabelVO> tree(LabelEntity label);
+ List<TreeIntegerNode> tree(LabelVO label);
}
diff --git a/src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java b/src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java
index 2f5d8d5..7f0e1ab 100644
--- a/src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java
+++ b/src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java
@@ -16,15 +16,15 @@
*/
package org.springblade.modules.label.service.impl;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.common.node.TreeIntegerNode;
import org.springblade.common.utils.NodeTreeUtil;
import org.springblade.modules.label.entity.LabelEntity;
-import org.springblade.modules.label.vo.LabelVO;
import org.springblade.modules.label.mapper.LabelMapper;
import org.springblade.modules.label.service.ILabelService;
-import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.modules.label.vo.LabelVO;
import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List;
@@ -53,7 +53,17 @@
}
@Override
- public List<LabelVO> tree(LabelEntity label) {
- return null;
+ public List<TreeIntegerNode> tree(LabelVO label) {
+ List<TreeIntegerNode> nodeTree = NodeTreeUtil.getNodeTree(baseMapper.getLabelTreeList(label));
+ nodeTree.forEach(node -> recursion(node));
+ return nodeTree;
+ }
+
+ private void recursion(TreeIntegerNode node) {
+ if (node.getChildren() != null && node.getChildren().size() > 0) {
+ node.getChildren().forEach(node2 -> recursion(node2));
+ } else {
+ node.setChildren(null);
+ }
}
}
diff --git a/src/main/java/org/springblade/modules/system/controller/MenuController.java b/src/main/java/org/springblade/modules/system/controller/MenuController.java
index 578148d..7e4cd4d 100644
--- a/src/main/java/org/springblade/modules/system/controller/MenuController.java
+++ b/src/main/java/org/springblade/modules/system/controller/MenuController.java
@@ -16,10 +16,12 @@
*/
package org.springblade.modules.system.controller;
+import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.*;
import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.launch.constant.AppConstant;
@@ -31,7 +33,9 @@
import org.springblade.core.tool.constant.RoleConstant;
import org.springblade.core.tool.node.TreeNode;
import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
+import org.springblade.modules.system.dto.MenuDTO;
import org.springblade.modules.system.entity.Menu;
import org.springblade.modules.system.entity.TopMenu;
import org.springblade.modules.system.service.IMenuService;
@@ -73,7 +77,12 @@
@ApiOperation(value = "详情", notes = "传入menu")
public R<MenuVO> detail(Menu menu) {
Menu detail = menuService.getOne(Condition.getQueryWrapper(menu));
- return R.data(MenuWrapper.build().entityVO(detail));
+ MenuVO menuVO = MenuWrapper.build().entityVO(detail);
+ if(StringUtils.isNotBlank(menuVO.getLabelStr())){
+ List<List<String>> lists = (List<List<String>>) JSON.parse(menuVO.getLabelStr() );
+ menuVO.setLabelList(lists);
+ }
+ return R.data(menuVO);
}
/**
@@ -159,7 +168,7 @@
@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
@ApiOperationSupport(order = 6)
@ApiOperation(value = "新增或修改", notes = "传入menu")
- public R submit(@Valid @RequestBody Menu menu) {
+ public R submit(@Valid @RequestBody MenuDTO menu) {
if (menuService.submit(menu)) {
CacheUtil.clear(MENU_CACHE);
CacheUtil.clear(MENU_CACHE, Boolean.FALSE);
diff --git a/src/main/java/org/springblade/modules/system/dto/MenuDTO.java b/src/main/java/org/springblade/modules/system/dto/MenuDTO.java
index 34d5f3f..edff016 100644
--- a/src/main/java/org/springblade/modules/system/dto/MenuDTO.java
+++ b/src/main/java/org/springblade/modules/system/dto/MenuDTO.java
@@ -17,8 +17,10 @@
package org.springblade.modules.system.dto;
import lombok.Data;
+import org.springblade.modules.system.entity.Menu;
import java.io.Serializable;
+import java.util.List;
/**
* 数据传输对象实体类
@@ -26,8 +28,10 @@
* @author Chill
*/
@Data
-public class MenuDTO implements Serializable {
+public class MenuDTO extends Menu implements Serializable {
private static final long serialVersionUID = 1L;
private String alias;
private String path;
+
+ private List<List<String>> labelList;
}
diff --git a/src/main/java/org/springblade/modules/system/entity/Menu.java b/src/main/java/org/springblade/modules/system/entity/Menu.java
index 3b5259d..45b0b8f 100644
--- a/src/main/java/org/springblade/modules/system/entity/Menu.java
+++ b/src/main/java/org/springblade/modules/system/entity/Menu.java
@@ -130,6 +130,11 @@
@TableField("background")
private String background;
+ /** 标签对象 */
+ @ApiModelProperty(value = "标签对象", example = "")
+ @TableField("label_str")
+ private String labelStr;
+
@Override
public boolean equals(Object obj) {
diff --git a/src/main/java/org/springblade/modules/system/mapper/MenuMapper.xml b/src/main/java/org/springblade/modules/system/mapper/MenuMapper.xml
index 2bc6a0f..d3f0e4e 100644
--- a/src/main/java/org/springblade/modules/system/mapper/MenuMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/MenuMapper.xml
@@ -21,6 +21,7 @@
<result property="pictureImg" column="picture_img" />
<result property="labelId" column="label_id" />
<result property="background" column="background" />
+ <result property="labelStr" column="label_str" />
</resultMap>
<resultMap id="menuVOResultMap" type="org.springblade.modules.system.vo.MenuVO">
@@ -66,7 +67,8 @@
is_deleted,
picture_img,
label_id,
- background
+ background,
+ label_str
from
blade_menu
</sql>
diff --git a/src/main/java/org/springblade/modules/system/service/IMenuService.java b/src/main/java/org/springblade/modules/system/service/IMenuService.java
index 61b3b58..bed0809 100644
--- a/src/main/java/org/springblade/modules/system/service/IMenuService.java
+++ b/src/main/java/org/springblade/modules/system/service/IMenuService.java
@@ -20,6 +20,7 @@
import org.springblade.core.secure.BladeUser;
import org.springblade.core.tool.node.TreeNode;
import org.springblade.core.tool.support.Kv;
+import org.springblade.modules.system.dto.MenuDTO;
import org.springblade.modules.system.entity.Menu;
import org.springblade.modules.system.vo.MenuVO;
@@ -170,6 +171,6 @@
* @param menu
* @return
*/
- boolean submit(Menu menu);
+ boolean submit(MenuDTO menu);
}
diff --git a/src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java
index 12c97b4..fc8174b 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java
@@ -16,6 +16,7 @@
*/
package org.springblade.modules.system.service.impl;
+import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -79,7 +80,14 @@
if (Func.isEmpty(Func.toStr(param.get(PARENT_ID)))) {
parentId = null;
}
- return baseMapper.lazyList(parentId, param);
+ List<MenuVO> menuVOS = baseMapper.lazyList(parentId, param);
+ for (MenuVO menuVO : menuVOS) {
+ if(StringUtils.isNotBlank(menuVO.getLabelStr())){
+ List<List<String>> lists = (List<List<String>>)JSON.parse(menuVO.getLabelStr() );
+ menuVO.setLabelList(lists);
+ }
+ }
+ return menuVOS;
}
@Override
@@ -87,7 +95,14 @@
if (Func.isEmpty(Func.toStr(param.get(PARENT_ID)))) {
parentId = null;
}
- return baseMapper.lazyMenuList(parentId, param);
+ List<MenuVO> menuVOS = baseMapper.lazyList(parentId, param);
+ for (MenuVO menuVO : menuVOS) {
+ if(StringUtils.isNotBlank(menuVO.getLabelStr())){
+ List<List<String>> lists = (List<List<String>>)JSON.parse(menuVO.getLabelStr() );
+ menuVO.setLabelList(lists);
+ }
+ }
+ return menuVOS;
}
public static final List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5, 6, 11, null);
@@ -315,7 +330,7 @@
}
@Override
- public boolean submit(Menu menu) {
+ public boolean submit(MenuDTO menu) {
LambdaQueryWrapper<Menu> menuQueryWrapper = Wrappers.lambdaQuery();
if (menu.getId() == null) {
menuQueryWrapper.eq(Menu::getCode, menu.getCode()).or(
@@ -341,6 +356,13 @@
throw new ServiceException("父节点只可选择菜单类型!");
}
}
+ menu.setLabelStr(JSON.toJSONString(menu.getLabelList()));
+ List<List<String>> labelList = menu.getLabelList();
+ StringBuffer stringBuffer = new StringBuffer();
+ for (List<String> strings : labelList) {
+ stringBuffer.append(strings.get(2)).append(",");
+ }
+ menu.setLabelId(stringBuffer.toString());
menu.setIsDeleted(BladeConstant.DB_NOT_DELETED);
return saveOrUpdate(menu);
}
diff --git a/src/main/java/org/springblade/modules/system/vo/MenuVO.java b/src/main/java/org/springblade/modules/system/vo/MenuVO.java
index 3f44789..541ba66 100644
--- a/src/main/java/org/springblade/modules/system/vo/MenuVO.java
+++ b/src/main/java/org/springblade/modules/system/vo/MenuVO.java
@@ -51,6 +51,9 @@
@JsonSerialize(using = ToStringSerializer.class)
private Long parentId;
+
+ private List<List<String>> labelList;
+
/**
* 子孙节点
*/
--
Gitblit v1.9.3