博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
构建树形菜单数据
阅读量:5174 次
发布时间:2019-06-13

本文共 5771 字,大约阅读时间需要 19 分钟。

菜单实体:@Datapublic class SysMenu {    /**     * 菜单编码     */    @ApiModelProperty(value="菜单编码",name="rowId",example="菜单编码")    private String rowId;    /**     * 菜单名称     */    @ApiModelProperty(value="菜单名称",name="name",example="菜单名称")    private String name;    /**     * 父ID     */    @ApiModelProperty(value="父ID",name="parentId",example="父ID")    private String parentId;    /**     *     */    @ApiModelProperty(value="",name="iconCls",example="")    private String iconCls;    /**     * url     */    @ApiModelProperty(value="url",name="url",example="url")    private String url;    /**     * 值     */    @ApiModelProperty(value="值",name="sort",example="值")    private Long sort;    /**     * 版本号     */    @ApiModelProperty(value="版本号",name="version",example="版本号")    private String version;    /**     * 修改人     */    @ApiModelProperty(value="修改人",name="updateUserid",example="修改人")    private String updateUserid;    /**     * 修改时间     */    @ApiModelProperty(value="修改时间",name="updatedt",example="修改时间")    private Date updatedt;    /**     * 创建人     */    @ApiModelProperty(value="创建人",name="userid",example="创建人")    private String userid;    /**     * 创建时间     */    @ApiModelProperty(value="创建时间",name="insdt",example="创建时间")    private Date insdt;    /**     * 类型     */    @ApiModelProperty(value="类型",name="type",example="类型")    private String type;    @ApiModelProperty(value="父节点名",name="parentName",example="父节点名")    private String parentName;    @ApiModelProperty(value="是否可见",name="visible",example="是否可见")    private String visible;    @ApiModelProperty(value="权限标识",name="access",example="权限标识")    private String access;    /**     * 是否被选中     */    private boolean checked = false;    @ApiModelProperty(value="是否是收藏(0:不是,1:是)",name="access",example="是否是收藏(0:不是,1:是)")    private String isFavorite;    /**     *子节点     * @return     */    @ApiModelProperty(value = "子菜单, 查询时返回")    private List
childrens = new ArrayList<>();}@Datapublic class SysMenuDto { /** * 菜单编码 */ @ApiModelProperty(value="菜单编码",name="id",example="菜单编码") private String id; /** * 菜单名称 */ @ApiModelProperty(value="菜单名称",name="text",example="菜单名称") private String text; /** * 父ID */ @ApiModelProperty(value="父ID",name="parentId",example="父ID") private String parentId; /** * */ @ApiModelProperty(value="",name="iconCls",example="") private String iconCls; /** * url */ @ApiModelProperty(value="url",name="url",example="url") private String url; @ApiModelProperty(value="类型",name="type",example="类型") private String type; @ApiModelProperty(value="父节点名",name="parentName",example="父节点名") private String parentName; @ApiModelProperty(value="是否可见",name="visible",example="是否可见") private String visible; @ApiModelProperty(value="权限标识",name="access",example="权限标识") private String access; /** * 是否被选中 */ private boolean checked = false; @ApiModelProperty(value="是否是收藏(0:不是,1:是)",name="access",example="是否是收藏(0:不是,1:是)") private String isFavorite; /** * 值 */ @ApiModelProperty(value="值",name="sort",example="值") private Long sort; /** *子节点 * @return */ @ApiModelProperty(value = "子菜单, 查询时返回") private List
childrens; public static SysMenuDto convertSysMenuEntity(SysMenu entity) { SysMenuDto sysMenuDto = new SysMenuDto(); sysMenuDto.setId(entity.getRowId()); sysMenuDto.setText(entity.getName()); sysMenuDto.setParentId(entity.getParentId()); sysMenuDto.setIconCls(entity.getIconCls()); sysMenuDto.setUrl(entity.getUrl()); sysMenuDto.setChecked(entity.isChecked()); sysMenuDto.setAccess(entity.getAccess()); sysMenuDto.setParentName(entity.getParentName()); sysMenuDto.setVisible(entity.getVisible()); sysMenuDto.setType(entity.getType()); sysMenuDto.setIsFavorite(entity.getIsFavorite()); sysMenuDto.setSort(entity.getSort()); return sysMenuDto; }}构建递归方法查询子节点: private void getTreeStructure(SysMenuDto root, List
orgs) { for (SysMenu org : orgs) { if (org.getParentId().equals(root.getId())) { SysMenuDto s = SysMenuDto.convertSysMenuEntity(org); getTreeStructure(s, orgs); if (root.getChildrens() == null) { root.setChildrens(new ArrayList<>()); } root.getChildrens().add(s); } } }调用递归方法构建数据:public Map
getSysMenuTreeData(String pDid, String pRowId) { List
list = new ArrayList<>(); //查询菜单列表 List
sysMenuList = sysRoleMapper.findList(); //修改时查询已选中的权限 if (!StringUtils.isEmpty(pRowId)) { SysRole sysRole = sysRoleMapper.selectByPrimaryKey(pRowId, pDid); if (null != sysRole && !StringUtils.isEmpty(sysRole.getMenu())) { //已选中的权限列表 就是拥有的菜单编码 List
menuList = Arrays.asList(sysRole.getMenu().split(",")); logger.info("选中的权限列表:{}", JsonUtil.obj2String(menuList)); for (SysMenu sysMenu : sysMenuList) { //如果菜单已被选中,则设置为true if (menuList.contains(sysMenu.getRowId())) { sysMenu.setChecked(true); } } } } //获取该经销商默认设置的系统菜单版本 String verdion = sysRoleMapper.selectVersion(pDid); //获取顶级菜单 List
topMenuList = sysRoleMapper.selectTopMenu(verdion); if (null == topMenuList) { return null; } for (SysMenu menu : topMenuList) { SysMenuDto s = SysMenuDto.convertSysMenuEntity(menu); getTreeStructure(s, sysMenuList); list.add(s); } logger.info("获取最终菜单:{}", JsonUtil.obj2String(list)); Map
map = new HashMap<>(); map.put("Id", "0"); map.put("text", "全选"); map.put("childrens", list); return map; }

 

转载于:https://www.cnblogs.com/pan-my/p/11428443.html

你可能感兴趣的文章
实验三
查看>>
第二十三模板 11模板参数提供默认值
查看>>
【转】32位plsql连接64位oracle
查看>>
python 抓取,解析页面(网站汇总)
查看>>
js校验json格式
查看>>
第一天,来报道
查看>>
java获取客户端请求IP地址(公网ip)
查看>>
mybatis同时启用mapperscanner和传统DAO
查看>>
了解认识asp.net运行机制
查看>>
使用WebStorm/IDEA上传本地项目到GitHub
查看>>
专业卡与游戏卡的区别
查看>>
zhw大神线段树姿势
查看>>
黑马程序员-Java基础-面向对象—多态、Object类、内部类、异常
查看>>
javascript中获取标准URL的参数
查看>>
php openssl 生成公私钥,根据网上文章整理的
查看>>
什么才是忠诚度?
查看>>
Webdriver中关于driver.navigate().to()和driver.get()使用的区别---转载
查看>>
Databases: MySQL tRIGger--chinese character-set php
查看>>
postgresql
查看>>
SQL日期形式转换
查看>>