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") 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); } 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> 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); } 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); } } } 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); 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; } 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) { 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> 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); } 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); } 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; /** * 子孙节点 */