linwe
2023-11-16 eaa3785837a740f1231400a8f790931d6e87185f
菜单配置标签
12 files modified
115 ■■■■ changed files
src/main/java/org/springblade/modules/label/controller/LabelController.java 22 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/label/mapper/LabelMapper.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/label/mapper/LabelMapper.xml 5 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/label/service/ILabelService.java 3 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java 20 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/controller/MenuController.java 13 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/dto/MenuDTO.java 6 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/entity/Menu.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/MenuMapper.xml 4 ●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/IMenuService.java 3 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java 28 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/vo/MenuVO.java 3 ●●●●● patch | view | raw | blame | history
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;
    /**
     * 子孙节点
     */