From e6854d2d97f55827a04c28a1dbee62a27b64ffa6 Mon Sep 17 00:00:00 2001 From: kaiyu <404897439@qq.com> Date: Fri, 28 May 2021 14:47:13 +0800 Subject: [PATCH] screen-manage 更改前台菜单回显逻辑 --- screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java | 141 ++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 116 insertions(+), 25 deletions(-) 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 25cc2a6..137a78a 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 @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.moral.api.config.mybatis.wrapper.NullFilterWrapper; +import com.moral.api.entity.Group; import com.moral.api.entity.Menu; +import com.moral.api.mapper.GroupMenuMapper; import com.moral.api.mapper.MenuMapper; import com.moral.api.pojo.dto.menu.MenuDTO; import com.moral.api.pojo.dto.menu.MenuQueryDTO; @@ -12,6 +14,7 @@ import com.moral.api.pojo.form.menu.MenuInsertForm; import com.moral.api.pojo.form.menu.MenuQueryNamesForm; import com.moral.api.pojo.form.menu.MenuUpdateForm; +import com.moral.api.service.GroupService; import com.moral.api.service.MenuService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.constant.Constants; @@ -40,36 +43,55 @@ @Autowired MenuMapper menuMapper; + @Autowired + GroupService groupService; + @Autowired + GroupMenuMapper groupMenuMapper; @Override - public MenuQueryDTO queryAllMenu() { + public MenuQueryDTO queryAllMenus() { //������������������ MenuQueryDTO dto = new MenuQueryDTO(); //������������������ QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("is_delete", Constants.NOT_DELETE); List<Menu> menus = menuMapper.selectList(wrapper); - //������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; - } - }); + //��������������������� + combinationParentChildrenMenus(menus); //���������������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 + public MenuQueryDTO queryAdminGroupMenusByOrganizationId(Integer organizationId) { + //������������������ + MenuQueryDTO dto = new MenuQueryDTO(); + //������������admin������ + Group group = groupService.queryAdminGroupByOrganizationId(organizationId); + if (ObjectUtils.isEmpty(group)) {//������������������������������������������������ + dto.setCode(ResponseCodeEnum.ORGANIZATION_USER_NOT_EXIST.getCode()); + dto.setMsg(ResponseCodeEnum.ORGANIZATION_USER_NOT_EXIST.getMsg()); + return dto; + } + //��������������������������������������� + List<Menu> ownMenus = menuMapper.getMenusByGroupId(group.getId()); + + /*������������������������������������������������������������ + * ���������������������������������������������������������������������������������������������������������*/ + removeMenuWithChildren(ownMenus); + + //������������������ + List<MenuDTO> dtos = new ArrayList<>(); + for (Menu menu : ownMenus) { MenuDTO menuDTO = new MenuDTO(); menuDTO.setMenu(menu); dtos.add(menuDTO); @@ -110,6 +132,7 @@ } @Override + @Transactional public MenuDTO deleteMenu(MenuDeleteForm form) { //������������������ MenuDTO dto = new MenuDTO(); @@ -130,10 +153,17 @@ wrapper.set("is_delete", Constants.DELETE); menuMapper.update(null, wrapper); } - //��������������� + //������������ existMenu.setIsDelete(Constants.DELETE); menuMapper.updateById(existMenu); - + //��������������������������������������������� + UpdateWrapper deleteGroupMenuWrapper = new UpdateWrapper(); + List<Integer> allMenuIds = new ArrayList<>(); + allMenuIds.add(id); + allMenuIds.addAll(childrenIds); + deleteGroupMenuWrapper.in("menu_id",allMenuIds); + deleteGroupMenuWrapper.set("is_delete",Constants.DELETE); + groupMenuMapper.update(null,deleteGroupMenuWrapper); //������������������ dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); @@ -180,7 +210,7 @@ //������������ NullFilterWrapper<Menu> wrapper = new NullFilterWrapper<>(); wrapper.eq("is_delete", Constants.NOT_DELETE); - wrapper.like("name",name); + wrapper.like("name", name); List<Menu> menus = menuMapper.selectList(wrapper); //���������id������������������������ List<Integer> childrenIds = getChildrenIdsByParentId(id);//���������������������id������ @@ -211,6 +241,35 @@ return dto; } + + /** + * @Description: ������������������������������������������������������ + * @Param: [menus] + * @return: java.util.List<com.moral.api.entity.Menu> + * @Author: ��������� + * @Date: 2021/5/13 + */ + public void combinationParentChildrenMenus(List<Menu> menus){ + //������menu������������ + Map<Integer, Menu> menuMap = new HashMap<>(); + for (Menu menu : menus) { + menuMap.put(menu.getId(), menu); + menu.setChildren(new ArrayList<>());//��������������� + } + for (Menu menu : menus) { + putMenuToParentMenu(menuMap, menu); + } + //������������������ + menus.removeIf(new Predicate<Menu>() { + @Override + public boolean test(Menu menu) { + if (menu.getParentId().equals(0)) + return false; + return true; + } + }); + } + /** * @Description: ������������menu������menuMap��������������������� * @Param: [menuMap, menu] @@ -218,7 +277,7 @@ * @Author: ��������� * @Date: 2021/5/6 */ - private void combinationParentChildrenMenus(Map<Integer, Menu> menuMap, Menu menu) { + private void putMenuToParentMenu(Map<Integer, Menu> menuMap, Menu menu) { Integer parentId = menu.getParentId(); Menu parentMenu = menuMap.get(parentId); if (!ObjectUtils.isEmpty(parentMenu)) { @@ -245,7 +304,7 @@ menu.setChildren(new ArrayList<>());//��������������� } for (Menu menu : menus) { - combinationParentChildrenMenus(menuMap, menu); + putMenuToParentMenu(menuMap, menu); } Menu menu = menuMap.get(id); return menu; @@ -273,7 +332,7 @@ /** - * @Description: ���������������������id��������������� + * @Description: ������������������������children���id��������������� * @Param: [menu, ids] * @return: void * @Author: ��������� @@ -289,4 +348,36 @@ } } + /** + * @Description: ������������������������������ + * @Param: [menus] + * @return: java.util.List<com.moral.api.entity.Menu> + * @Author: ��������� + * @Date: 2021/5/28 + */ + private void removeMenuWithChildren(List<Menu> menus){ + //������������������ + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("is_delete", Constants.NOT_DELETE); + List<Menu> allMenus = menuMapper.selectList(wrapper); + //������menu������������ + Map<Integer, Menu> menuMap = new HashMap<>(); + for (Menu menu : allMenus) { + menuMap.put(menu.getId(), menu); + menu.setChildren(new ArrayList<>());//��������������� + } + for (Menu menu : allMenus) { + putMenuToParentMenu(menuMap, menu); + } + //������������������������������ + menus.removeIf(new Predicate<Menu>() { + @Override + public boolean test(Menu menu) { + if(ObjectUtils.isEmpty(menuMap.get(menu.getId()).getChildren())) + return false; + return true; + } + }); + } + } -- Gitblit v1.8.0