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