From 19792073aeb0462088208334b4bd4241571630d4 Mon Sep 17 00:00:00 2001 From: kaiyu <404897439@qq.com> Date: Tue, 27 Apr 2021 09:13:43 +0800 Subject: [PATCH] screen-manage 菜单删除和添加功能 --- screen-manage/src/main/java/com/moral/api/entity/Menu.java | 6 screen-manage/src/main/java/com/moral/api/pojo/form/menu/MenuDeleteForm.java | 24 ++ screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuDeleteVO.java | 24 ++ screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java | 182 ++++++++++++++++++ screen-manage/src/main/java/com/moral/api/pojo/form/menu/MenuInsertForm.java | 42 ++++ screen-manage/src/main/java/com/moral/api/controller/MenuController.java | 134 ++++++++++++ screen-manage/src/main/java/com/moral/api/pojo/dto/menu/MenuQueryDTO.java | 2 screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuQueryVO.java | 67 ++++++ screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuVO.java | 7 screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuInsertVO.java | 26 ++ screen-manage/src/main/java/com/moral/api/service/MenuService.java | 29 ++ 11 files changed, 529 insertions(+), 14 deletions(-) diff --git a/screen-manage/src/main/java/com/moral/api/controller/MenuController.java b/screen-manage/src/main/java/com/moral/api/controller/MenuController.java index e12f46d..a3e3447 100644 --- a/screen-manage/src/main/java/com/moral/api/controller/MenuController.java +++ b/screen-manage/src/main/java/com/moral/api/controller/MenuController.java @@ -1,14 +1,24 @@ package com.moral.api.controller; +import com.moral.api.entity.Menu; +import com.moral.api.pojo.dto.menu.MenuDTO; +import com.moral.api.pojo.dto.menu.MenuQueryDTO; +import com.moral.api.pojo.form.menu.MenuDeleteForm; +import com.moral.api.pojo.form.menu.MenuInsertForm; +import com.moral.api.pojo.vo.menu.MenuDeleteVO; +import com.moral.api.pojo.vo.menu.MenuInsertVO; import com.moral.api.pojo.vo.menu.MenuQueryVO; -import com.moral.api.pojo.vo.menu.MenuVO; +import com.moral.api.service.MenuService; +import com.moral.constant.ResponseCodeEnum; import com.moral.constant.ResultMessage; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; /** * @ClassName MenuController @@ -23,9 +33,117 @@ @RestController @RequestMapping("/menu") public class MenuController { - @GetMapping("queryMock") - public ResultMessage queryMock(){ + @Autowired + MenuService menuService; - return null; + @GetMapping("queryMock") + public ResultMessage queryMock() { + MenuQueryDTO dto = new MenuQueryDTO(); + Menu menu1 = new Menu(); + Menu menu11 = new Menu(); + Menu menu111 = new Menu(); + Menu menu12 = new Menu(); + Menu menu121 = new Menu(); + Menu menu13 = new Menu(); + + Menu menu2 = new Menu(); + Menu menu21 = new Menu(); + Menu menu211 = new Menu(); + Menu menu22 = new Menu(); + Menu menu23 = new Menu(); + Menu menu24 = new Menu(); + Menu menu241 = new Menu(); + Menu menu2411 = new Menu(); + menu1.setName("menu 1"); + menu1.setId(1); + menu11.setName("menu 1-1"); + menu11.setId(2); + menu111.setName("menu 1-1-1"); + menu111.setId(3); + menu12.setName("menu 1-2"); + menu12.setId(4); + menu121.setName("menu 1-2-1"); + menu121.setId(5); + menu13.setName("menu 1-3"); + menu13.setId(6); + menu2.setName("menu 2"); + menu2.setId(7); + menu21.setName("menu 2-1"); + menu21.setId(8); + menu211.setName("menu 2-1-1"); + menu211.setId(9); + menu22.setName("menu 2-2"); + menu22.setId(10); + menu23.setName("menu 2-3"); + menu23.setId(11); + menu24.setName("menu 2-4"); + menu24.setId(12); + menu241.setName("menu 2-4-1"); + menu241.setId(13); + menu2411.setName("menu 2-4-1-1"); + menu2411.setId(14); + menu12.setChildren(Arrays.asList(menu121)); + menu11.setChildren(Arrays.asList(menu111)); + menu1.setChildren(Arrays.asList(menu11, menu12, menu13)); + menu241.setChildren(Arrays.asList(menu2411)); + menu24.setChildren(Arrays.asList(menu241)); + menu21.setChildren(Arrays.asList(menu211)); + menu2.setChildren(Arrays.asList(menu21, menu22, menu23, menu24)); + + MenuDTO dto1 = new MenuDTO(); + MenuDTO dto2 = new MenuDTO(); + dto1.setMenu(menu1); + dto2.setMenu(menu2); + + dto.setDtos(Arrays.asList(dto1, dto2)); + dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); + dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); + + MenuQueryVO vo = MenuQueryVO.convert(dto); + return new ResultMessage(dto.getCode(), dto.getMsg(), vo); } + + @GetMapping("query") + public ResultMessage query() { + //������������������ + MenuQueryDTO dto = menuService.queryAllMenu(); + + //��������������������������� + MenuQueryVO vo = MenuQueryVO.convert(dto); + + return new ResultMessage(dto.getCode(), dto.getMsg(), vo); + } + + @PostMapping("insert") + public ResultMessage insert(@RequestBody MenuInsertForm form) { + //������������������������ + if (!form.valid()) + return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), + ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); + + //������������������ + MenuDTO dto = menuService.insertMenu(form); + + //������������������������ + MenuInsertVO vo = MenuInsertVO.convert(dto); + + return new ResultMessage(dto.getCode(), dto.getMsg(), vo); + } + + @PostMapping("delete") + public ResultMessage delete(@RequestBody MenuDeleteForm form){ + //������������������������ + if (!form.valid()) + return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), + ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); + + //������������������ + MenuDTO dto = menuService.deleteMenu(form); + + //������������������������ + MenuInsertVO vo = MenuDeleteVO.convert(dto); + + return new ResultMessage(dto.getCode(), dto.getMsg(), vo); + } + } diff --git a/screen-manage/src/main/java/com/moral/api/entity/Menu.java b/screen-manage/src/main/java/com/moral/api/entity/Menu.java index 5c90fda..9d6164f 100644 --- a/screen-manage/src/main/java/com/moral/api/entity/Menu.java +++ b/screen-manage/src/main/java/com/moral/api/entity/Menu.java @@ -1,11 +1,13 @@ package com.moral.api.entity; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.annotation.TableId; import java.time.LocalDateTime; import java.io.Serializable; import java.util.Date; +import java.util.List; import lombok.Data; import lombok.EqualsAndHashCode; @@ -53,6 +55,7 @@ /** * ��������������������������� */ + @TableField(value="`order`") private Integer order; /** @@ -70,6 +73,9 @@ */ private String isDelete; + @TableField(exist = false) + private List<Menu> children; + @Override protected Serializable pkVal() { diff --git a/screen-manage/src/main/java/com/moral/api/pojo/dto/menu/MenuQueryDto.java b/screen-manage/src/main/java/com/moral/api/pojo/dto/menu/MenuQueryDTO.java similarity index 91% rename from screen-manage/src/main/java/com/moral/api/pojo/dto/menu/MenuQueryDto.java rename to screen-manage/src/main/java/com/moral/api/pojo/dto/menu/MenuQueryDTO.java index fbc0ba7..0546d18 100644 --- a/screen-manage/src/main/java/com/moral/api/pojo/dto/menu/MenuQueryDto.java +++ b/screen-manage/src/main/java/com/moral/api/pojo/dto/menu/MenuQueryDTO.java @@ -12,7 +12,7 @@ * @Version TODO **/ @Data -public class MenuQueryDto { +public class MenuQueryDTO { private Integer code; diff --git a/screen-manage/src/main/java/com/moral/api/pojo/form/menu/MenuDeleteForm.java b/screen-manage/src/main/java/com/moral/api/pojo/form/menu/MenuDeleteForm.java new file mode 100644 index 0000000..0f1b513 --- /dev/null +++ b/screen-manage/src/main/java/com/moral/api/pojo/form/menu/MenuDeleteForm.java @@ -0,0 +1,24 @@ +package com.moral.api.pojo.form.menu; + +import lombok.Data; +import org.aspectj.lang.annotation.DeclareAnnotation; + +/** + * @ClassName MenuDeleteForm + * @Description TODO + * @Author ��������� + * @Date 2021/4/26 14:36 + * @Version TODO + **/ +@Data +public class MenuDeleteForm { + + private Integer id; + + public boolean valid(){ + if(id==null||id==0){ + return false; + } + return true; + } +} diff --git a/screen-manage/src/main/java/com/moral/api/pojo/form/menu/MenuInsertForm.java b/screen-manage/src/main/java/com/moral/api/pojo/form/menu/MenuInsertForm.java new file mode 100644 index 0000000..f7dc779 --- /dev/null +++ b/screen-manage/src/main/java/com/moral/api/pojo/form/menu/MenuInsertForm.java @@ -0,0 +1,42 @@ +package com.moral.api.pojo.form.menu; + +import com.moral.api.entity.Menu; +import lombok.Data; +import org.springframework.util.ObjectUtils; + +/** + * @ClassName MenuInsertForm + * @Description TODO + * @Author ��������� + * @Date 2021/4/26 11:02 + * @Version TODO + **/ +@Data +public class MenuInsertForm { + + private String name; + + private String url; + + private Integer parentId; + + private Integer order; + + public boolean valid(){ + if( + ObjectUtils.isEmpty(name)|| + ObjectUtils.isEmpty(order) + ) + return false; + return true; + } + + public Menu formConvertEntity(){ + Menu menu = new Menu(); + menu.setName(name); + menu.setParentId(parentId); + menu.setUrl(url); + menu.setOrder(order); + return menu; + } +} diff --git a/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuDeleteVO.java b/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuDeleteVO.java new file mode 100644 index 0000000..dc3d111 --- /dev/null +++ b/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuDeleteVO.java @@ -0,0 +1,24 @@ +package com.moral.api.pojo.vo.menu; + +import com.moral.api.entity.Menu; +import com.moral.api.pojo.dto.menu.MenuDTO; +import com.moral.constant.ResponseCodeEnum; + +/** + * @ClassName MenuDeleteVO + * @Description TODO + * @Author ��������� + * @Date 2021/4/26 15:09 + * @Version TODO + **/ +public class MenuDeleteVO extends MenuVO { + public static MenuInsertVO convert(MenuDTO dto) { + if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode()) + return null; + MenuInsertVO vo = new MenuInsertVO(); + Menu menu = dto.getMenu(); + vo.setId(menu.getId()); + vo.setName(menu.getName()); + return vo; + } +} diff --git a/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuInsertVO.java b/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuInsertVO.java new file mode 100644 index 0000000..5949b11 --- /dev/null +++ b/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuInsertVO.java @@ -0,0 +1,26 @@ +package com.moral.api.pojo.vo.menu; + +import com.moral.api.entity.Menu; +import com.moral.api.pojo.dto.menu.MenuDTO; +import com.moral.constant.ResponseCodeEnum; + +/** + * @ClassName MenuInsertVO + * @Description TODO + * @Author ��������� + * @Date 2021/4/26 11:40 + * @Version TODO + **/ +public class MenuInsertVO extends MenuVO { + + public static MenuInsertVO convert(MenuDTO dto) { + if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode()) + return null; + MenuInsertVO vo = new MenuInsertVO(); + Menu menu = dto.getMenu(); + vo.setId(menu.getId()); + vo.setParentId(menu.getParentId()); + vo.setName(menu.getName()); + return vo; + } +} diff --git a/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuQueryVO.java b/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuQueryVO.java index 5613bca..6c0a1f0 100644 --- a/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuQueryVO.java +++ b/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuQueryVO.java @@ -1,8 +1,16 @@ package com.moral.api.pojo.vo.menu; -import com.moral.api.pojo.dto.menu.MenuQueryDto; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.moral.api.entity.Menu; +import com.moral.api.pojo.dto.menu.MenuDTO; +import com.moral.api.pojo.dto.menu.MenuQueryDTO; +import com.moral.constant.ResponseCodeEnum; import lombok.Data; +import org.springframework.util.ObjectUtils; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.List; /** @@ -13,11 +21,64 @@ * @Version TODO **/ @Data +@JsonInclude(JsonInclude.Include.NON_EMPTY) public class MenuQueryVO { List<MenuVO> vos; - public static MenuQueryVO convert(MenuQueryDto dto){ - return null; + public static MenuQueryVO convert(MenuQueryDTO dto) { + if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode()) + return null; + MenuQueryVO vo = new MenuQueryVO(); + List<MenuDTO> dtos = dto.getDtos(); + List<MenuVO> vos = new ArrayList<>(); + for (MenuDTO menuDTO : dtos) { + MenuVO menuVO = convertToQueryPage(menuDTO); + vos.add(menuVO); + } + //������������������������ + Collections.sort(vos, new Comparator<MenuVO>() { + @Override + public int compare(MenuVO o1, MenuVO o2) { + return o1.getOrder() - o2.getOrder(); + } + }); + vo.setVos(vos); + return vo; } + + private static MenuVO convertToQueryPage(MenuDTO dto) { + Menu menu = dto.getMenu(); + MenuVO menuVO = convertToQueryPage(menu); + return menuVO; + } + + private static MenuVO convertToQueryPage(Menu menu) { + MenuVO vo = new MenuVO(); + vo.setId(menu.getId()); + vo.setParentId(menu.getParentId()); + vo.setUrl(menu.getUrl()); + vo.setIcon(menu.getIcon()); + vo.setName(menu.getName()); + vo.setOrder(menu.getOrder()); + List<MenuVO> vos = new ArrayList<>(); + List<Menu> children = menu.getChildren(); + if (!ObjectUtils.isEmpty(children)) { + //���children���������������������order������ + Collections.sort(children, new Comparator<Menu>() { + @Override + public int compare(Menu o1, Menu o2) { + return o1.getOrder() - o2.getOrder(); + } + }); + for (Menu child : children) { + MenuVO menuVO = convertToQueryPage(child); + vos.add(menuVO); + } + vo.setChildren(vos); + } + return vo; + } + } + diff --git a/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuVO.java b/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuVO.java index 6523e61..6a83cf9 100644 --- a/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuVO.java +++ b/screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuVO.java @@ -1,5 +1,8 @@ package com.moral.api.pojo.vo.menu; +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + import java.util.List; /** @@ -9,6 +12,8 @@ * @Date 2021/4/25 10:04 * @Version TODO **/ +@Data +@JsonInclude(JsonInclude.Include.NON_EMPTY) public class MenuVO { private Integer id; @@ -22,8 +27,6 @@ private String icon; private Integer order; - - private Integer level; private List<MenuVO> children; } diff --git a/screen-manage/src/main/java/com/moral/api/service/MenuService.java b/screen-manage/src/main/java/com/moral/api/service/MenuService.java index 43e1ffe..e9b4e8a 100644 --- a/screen-manage/src/main/java/com/moral/api/service/MenuService.java +++ b/screen-manage/src/main/java/com/moral/api/service/MenuService.java @@ -2,6 +2,10 @@ import com.moral.api.entity.Menu; import com.baomidou.mybatisplus.extension.service.IService; +import com.moral.api.pojo.dto.menu.MenuDTO; +import com.moral.api.pojo.dto.menu.MenuQueryDTO; +import com.moral.api.pojo.form.menu.MenuDeleteForm; +import com.moral.api.pojo.form.menu.MenuInsertForm; /** * <p> @@ -12,5 +16,30 @@ * @since 2021-03-09 */ public interface MenuService extends IService<Menu> { + /** + * @Description: ������������������ + * @Param: [] + * @return: com.moral.api.pojo.dto.menu.MenuQueryDTO + * @Author: ��������� + * @Date: 2021/4/25 + */ + MenuQueryDTO queryAllMenu(); + /** + * @Description: ������������ + * @Param: [form] + * @return: com.moral.api.pojo.dto.menu.MenuDTO + * @Author: ��������� + * @Date: 2021/4/26 + */ + MenuDTO insertMenu(MenuInsertForm form); + + /** + * @Description: ������������ + * @Param: [form] + * @return: com.moral.api.pojo.dto.menu.MenuDTO + * @Author: ��������� + * @Date: 2021/4/26 + */ + MenuDTO deleteMenu(MenuDeleteForm form); } diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java index 5047a8c..efcaec9 100644 --- a/screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java +++ b/screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java @@ -1,10 +1,28 @@ package com.moral.api.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.moral.api.entity.ManageMenu; import com.moral.api.entity.Menu; import com.moral.api.mapper.MenuMapper; +import com.moral.api.pojo.dto.menu.MenuDTO; +import com.moral.api.pojo.dto.menu.MenuQueryDTO; +import com.moral.api.pojo.form.menu.MenuDeleteForm; +import com.moral.api.pojo.form.menu.MenuInsertForm; import com.moral.api.service.MenuService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.moral.constant.Constants; +import com.moral.constant.ResponseCodeEnum; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Predicate; /** * <p> @@ -17,4 +35,168 @@ @Service public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements MenuService { + @Autowired + MenuMapper menuMapper; + + @Override + public MenuQueryDTO queryAllMenu() { + //������������������ + MenuQueryDTO dto = new MenuQueryDTO(); + //������������������ + List<Menu> menus = menuMapper.selectList(null); + //������menu������������ + Map<Integer, Menu> menuMap = new HashMap<>(); + for (Menu menu : menus) { + menuMap.put(menu.getId(), menu); + menu.setChildren(new ArrayList<>());//��������������� + } + for (Menu menu : menus) { + combinationParentChildrenMenus(menuMap, menu); + } + //������������������ + menus.removeIf(new Predicate<Menu>() { + @Override + public boolean test(Menu menu) { + if (menu.getParentId().equals(0)) + return false; + return true; + } + }); + //���������������DTO + List<MenuDTO> dtos = new ArrayList<>(); + for (Menu menu : menus) { + MenuDTO menuDTO = new MenuDTO(); + menuDTO.setMenu(menu); + dtos.add(menuDTO); + } + dto.setDtos(dtos); + dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); + dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); + return dto; + } + + @Override + @Transactional + public MenuDTO insertMenu(MenuInsertForm form) { + //������������������ + MenuDTO dto = new MenuDTO(); + //������ + Menu menu = form.formConvertEntity(); + //������������������������ + Menu existMenu = new Menu(); + existMenu.setName(menu.getName()); + existMenu.setIsDelete(Constants.NOT_DELETE); + QueryWrapper existWrapper = new QueryWrapper(); + existWrapper.setEntity(existMenu); + Menu existMenuResult = menuMapper.selectOne(existWrapper); + if (!ObjectUtils.isEmpty(existMenuResult)) { + dto.setCode(ResponseCodeEnum.MENU_IS_EXIST.getCode()); + dto.setMsg(ResponseCodeEnum.MENU_IS_EXIST.getMsg()); + return dto; + } + //������������������ + menuMapper.insert(menu); + //������������������ + dto.setMenu(menu); + dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); + dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); + return dto; + } + + @Override + public MenuDTO deleteMenu(MenuDeleteForm form) { + //������������������ + MenuDTO dto = new MenuDTO(); + //������ + Integer id = form.getId(); + //������������������������ + Menu existMenu = menuMapper.selectById(id); + if (ObjectUtils.isEmpty(existMenu)) { + dto.setCode(ResponseCodeEnum.MENU_IS_NULL.getCode()); + dto.setMsg(ResponseCodeEnum.MENU_IS_NULL.getMsg()); + return dto; + } + //������������������ + existMenu.setIsDelete(Constants.DELETE); + menuMapper.updateById(existMenu); + //��������������������� + List<Integer> childrenIds = getChildrenIdsByParentId(id); + UpdateWrapper wrapper = new UpdateWrapper(); + wrapper.in("id",childrenIds); + wrapper.set("is_delete",Constants.DELETE); + menuMapper.update(null,wrapper); + //������������������ + dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); + dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); + dto.setMenu(existMenu); + return dto; + } + + private void combinationParentChildrenMenus(Map<Integer, Menu> menuMap, Menu menu) { + Integer parentId = menu.getParentId(); + Menu parentMenu = menuMap.get(parentId); + if (!ObjectUtils.isEmpty(parentMenu)) { + parentMenu.getChildren().add(menu); + } + } + + /** + * @Description: ���������������id���������������children���menu������ + * @Param: [id] + * @return: com.moral.api.entity.Menu + * @Author: ��������� + * @Date: 2021/4/26 + */ + private Menu getMenuAndChildrenById(Integer id){ + //������������������ + List<Menu> menus = menuMapper.selectList(null); + //������menu������������ + Map<Integer, Menu> menuMap = new HashMap<>(); + for (Menu menu : menus) { + menuMap.put(menu.getId(), menu); + menu.setChildren(new ArrayList<>());//��������������� + } + for (Menu menu : menus) { + combinationParentChildrenMenus(menuMap, menu); + } + Menu menu = menuMap.get(id); + return menu; + } + + /** + * @Description: ������������������������������������id������ + * @Param: [id] + * @return: java.util.List<java.lang.Integer> + * @Author: ��������� + * @Date: 2021/4/26 + */ + private List<Integer> getChildrenIdsByParentId(Integer id){ + Menu parentMenu = getMenuAndChildrenById(id); + List<Menu> children = parentMenu.getChildren(); + List<Integer> childrenIds = new ArrayList<>(); + for (Menu child : children) { + recursiveAccess(child,childrenIds); + } + return childrenIds; + } + + + /** + * @Description: ���������������������id��������������� + * @Param: [menu, ids] + * @return: void + * @Author: ��������� + * @Date: 2021/4/26 + */ + private void recursiveAccess(Menu menu,List<Integer> ids){ + ids.add(menu.getId()); + List<Menu> children = menu.getChildren(); + if(!ObjectUtils.isEmpty(children)){ + for (Menu child : children) { + recursiveAccess(child,ids); + } + } + } + } + -- Gitblit v1.8.0