获取子菜单方法
/***通过传入当前菜单id,获取当前id的子菜单 且子菜单里也有子菜单及其信息,直到子菜单没有子菜单了,递归结束* @param id 当前菜单的id* @param menus 要查询的菜单范围* @return 该id的子菜单*/private List<Menu> getChild(Long id,List<Menu> menus){List<Menu> childList = new ArrayList<>();for (Menu menu : menus) {Pid().equals(id)){//当菜单范围内的父id等于传入的id,获取该id的所有子列表childList.add(menu);}}for (Menu menu : childList) {//当上面循环语句查询不到子菜单,长度为0,自然也就不会递归调用了//将该id的子菜单便利,通过递归调用,给每一个子菜单赋值子菜单List<Menu> child = Id(), menus);menu.setSubMenu(child);}if(childList.size()==0){//子菜单的长度为0,返回null,null不会被jackson解析return null;}return childList;}
获取树状的菜单结构
@Overridepublic List<Menu> findTreeMenu(){List<Menu> menus = findAllMenu(); //先获取你想要在哪些菜单范围内搜索List<Menu> rootMenus = new ArrayList<>();for (Menu menu : menus) {//从最上级菜单开始展示Pid().equals(0L)){rootMenus.add(menu);}}for (Menu rootMenu : rootMenus) {//把最上级菜单的子菜单获取到,子菜单的子菜单也会获取到(目前是三层,由于是递归调用,100 层也没问题)List<Menu> child = Id(), menus);rootMenu.setSubMenu(child);}return rootMenus;}
利用postman测接口,返回数据如下
[{"id": 1,"menuname": "B2C销售管理","pid": 0,"url": "/qwe","subMenu": [{"id": 1001,"menuname": "订单显示","pid": 1,"url": "/fsd","subMenu": [{"id": 1001001,"menuname": "订单添加","pid": 1001,"url": "/fg"}]},{"id": 1002,"menuname": "销售出库单","pid": 1,"url": "/gk","subMenu": [{"id": 1002001,"menuname": "销售出库单修改","pid": 1002,"url": "/gh"}]},{"id": 1003,"menuname": "销售退货单","pid": 1,"url": "/jmf","subMenu": [{"id": 1003001,"menuname": "销售退货单修改","pid": 1003,"url": "/il,.j"}]},{"id": 1004,"menuname": "网店订单导入","pid": 1,"url": "/dh","subMenu": [{"id": 1004001,"menuname": "网店订单导入修改","pid": 1004,"url": "/gfjnf"}]}]},{"id": 2,"menuname": "商品与赠品管理","pid": 0,"url": "/asd","subMenu": [{"id": 2001,"menuname": "商品管理","pid": 2,"url": "/fhj","subMenu": [{"id": 2001001,"menuname": "商品管理添加","pid": 2001,"url": "/ghj"}]},{"id": 2002,"menuname": "商品品牌管理","pid": 2,"url": "/dahj","subMenu": [{"id": 2002001,"menuname": " 商品品牌管理添加","pid": 2002,"url": "/ghkjghkj"}]},{"id": 2003,"menuname": "商品类型管理","pid": 2,"url": "/drhfjn","subMenu": [{"id": 2003001,"menuname": "商品类型管理添加","pid": 2003,"url": "/fghf"}]},{"id": 2004,"menuname": "赠品管理","pid": 2,"url": "/tmkt","subMenu": [{"id": 2004001,"menuname": "添加赠品","pid": 2004,"url": "/iu"},{"id": 2004002,"menuname": "详情(查询)","pid": 2004,"url": "/fhg"},{"id": 2004003,"menuname": "修改数量","pid": 2004,"url": "/kl"},{"id": 2004004,"menuname": "商品转赠品","pid": 2004,"url": "/goodsToPresent"},{"id": 2004005,"menuname": "赠品转商品","pid": 2004,"url": "/qwde"},{"id": 2004006,"menuname": "审核","pid": 2004,"url": "/qwfqwf"}]},{"id": 2005,"menuname": "促销活动申请与审批","pid": 2,"url": "/gfh","subMenu": [{"id": 2005001,"menuname": "促销活动申请与审批添加","pid": 2005,"url": "/qwdeq"}]},{"id": 2006,"menuname": "价格调整申请与审批","pid": 2,"url": "/dhdtf","subMenu": [{"id": 2006001,"menuname": " 价格调整申请与审批添加","pid": 2006,"url": "/cvbnv"}]}]},{"id": 3,"menuname": "售后管理","pid": 0,"url": "/zxc","subMenu": [{"id": 3001,"menuname": "返厂出入库管理","pid": 3,"url": "/fgjnf","subMenu": [{"id": 3001001,"menuname": " 返厂出入库管理添加","pid": 3001,"url": "/cbvf"}]},{"id": 3002,"menuname": "退换货申请管理","pid": 3,"url": "/fhtgfh","subMenu": [{"id": 3002001,"menuname": " 退换货申请管理添加","pid": 3002,"url": "/cvbcv"}]},{"id": 3003,"menuname": "申诉管理","pid": 3,"url": "/ghmgh","subMenu": [{"id": 3003001,"menuname": "申诉管理添加","pid": 3003,"url": "/ghk"}]}]},{"id": 4,"menuname": "系统管理","pid": 0,"url": "/rty","subMenu": [{"id": 4001,"menuname": "用户管理(账号管理)","pid": 4,"url": "/fgjn","subMenu": [{"id": 4001001,"menuname": "添加用户","pid": 4001,"url": "lkjh"},{"id": 4001002,"menuname": "用户详情","pid": 4001,"url": "/userManage"},{"id": 4001003,"menuname": "用户修改","pid": 4001,"url": "/dfbh"}]},{"id": 4002,"menuname": "角色管理(职位管理)","pid": 4,"url": "/fgjj","subMenu": [{"id": 4002001,"menuname": "添加角色","pid": 4002,"url": "/ijughf"},{"id": 4002002,"menuname": "角色详情","pid": 4002,"url": "/ujyhgfb"},{"id": 4002003,"menuname": "角色修改","pid": 4002,"url": "/ujyhgf"}]},{"id": 4003,"menuname": "权限管理","pid": 4,"url": "/fhn","subMenu": [{"id": 4003001,"menuname": "添加权限","pid": 4003,"url": "/fthgb"},{"id": 4003002,"menuname": "权限相亲","pid": 4003,"url": "/dfg"},{"id": 4003003,"menuname": "权限修改","pid": 4003,"url": "/yhkumj"},{"id": 4003004,"menuname": "权限报表","pid": 4003,"url": "/wazs"}]},{"id": 4004,"menuname": "日志管理","pid": 4,"url": "/fgngf","subMenu": [{"id": 4004001,"menuname": "用户日志","pid": 4004,"url": "/logManage"},{"id": 4004002,"menuname": "商品日志","pid": 4004,"url": "/asf"}]}]}
]
实体类设计如下
import batisplus.annotation.TableField;
import batisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;import java.util.List;@Data
@TableName("t_menu")
@JsonInclude(JsonInclude.Include.NON_NULL)// 不是null的数据才会被携带到返回数据中
public class Menu {private Long id;private String menuname;private Long pid;private String url;@TableField(exist = false)private List<Menu> subMenu;}
数据库设计如下
本文发布于:2024-01-29 12:15:16,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170650172015215.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |