|  |  |  | 
|---|
|  |  |  | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
|---|
|  |  |  | import com.moral.constant.Constants; | 
|---|
|  |  |  | import com.moral.constant.ResponseCodeEnum; | 
|---|
|  |  |  | import com.sun.corba.se.spi.presentation.rmi.IDLNameTranslator; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  | 
|---|
|  |  |  | List<Menu> ownMenus = menuMapper.getMenusByGroupId(group.getId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /*判断每个菜单是否有子菜单,如果有则不传递 | 
|---|
|  |  |  | * 前端无法解决父菜单选中,子菜单没有全部选中回显问题。由后端处理的代码。*/ | 
|---|
|  |  |  | * 前端无法解决父菜单选中,子菜单没有全部选中回显问题。由后端处理的代码。*/ | 
|---|
|  |  |  | removeMenuWithChildren(ownMenus); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //封装返回结果 | 
|---|
|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | if (!ObjectUtils.isEmpty(childrenIds)) { | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @Description: 将传来的菜单集合封装成父子结构的集合 | 
|---|
|  |  |  | * @Param: [menus] | 
|---|
|  |  |  | * @return: java.util.List<com.moral.api.entity.Menu> | 
|---|
|  |  |  | * @Author: 陈凯裕 | 
|---|
|  |  |  | * @Date: 2021/5/13 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public void combinationParentChildrenMenus(List<Menu> menus){ | 
|---|
|  |  |  | * @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) { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @Description: 移除含有子菜单的菜单 | 
|---|
|  |  |  | * @Param: [menus] | 
|---|
|  |  |  | * @return: java.util.List<com.moral.api.entity.Menu> | 
|---|
|  |  |  | * @Author: 陈凯裕 | 
|---|
|  |  |  | * @Date: 2021/5/28 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private void removeMenuWithChildren(List<Menu> menus){ | 
|---|
|  |  |  | * @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); | 
|---|
|  |  |  | 
|---|
|  |  |  | menus.removeIf(new Predicate<Menu>() { | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public boolean test(Menu menu) { | 
|---|
|  |  |  | if(ObjectUtils.isEmpty(menuMap.get(menu.getId()).getChildren())) | 
|---|
|  |  |  | if (ObjectUtils.isEmpty(menuMap.get(menu.getId()).getChildren())) | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } | 
|---|