对比新文件 |
| | |
| | | package com.gk.firework.Service.ServiceImpl; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.gk.firework.Domain.PermissionInfo; |
| | | import com.gk.firework.Domain.UserInfo; |
| | | import com.gk.firework.Domain.Vo.Menu; |
| | | import com.gk.firework.Domain.Vo.SortData; |
| | | import com.gk.firework.Mapper.PermissionInfoMapper; |
| | | import com.gk.firework.Service.PermissionService; |
| | | import com.gk.firework.Service.UserService; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Comparator; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service("PermissionService") |
| | | public class PermissionServiceImpl extends ServiceImpl<PermissionInfoMapper, PermissionInfo> implements PermissionService { |
| | | @Autowired |
| | | private PermissionInfoMapper permissionInfoMapper; |
| | | @Autowired |
| | | private UserService userService; |
| | | |
| | | @Override |
| | | public List<Menu> selectByUserId(String userId) { |
| | | List<Menu> menus = new ArrayList<>(); |
| | | |
| | | UserInfo userInfo = userService.getById(Integer.parseInt(userId)); |
| | | if (null != userInfo && null != userInfo.getType()){ |
| | | List<PermissionInfo> permissionInfoList = permissionInfoMapper.selectAll(); |
| | | if (userInfo.getType() == 1){ |
| | | //返回所有菜单 |
| | | for (PermissionInfo permissionInfo : permissionInfoList){ |
| | | //一级菜单 |
| | | if (null == permissionInfo.getParentid()){ |
| | | Menu pmenu = new Menu(); |
| | | BeanUtils.copyProperties(permissionInfo,pmenu,Menu.class); |
| | | List<Menu> iterateMenuList = iterateMenus(permissionInfoList,permissionInfo.getId()); |
| | | pmenu.setChildren(iterateMenuList); |
| | | menus.add(pmenu); |
| | | } |
| | | } |
| | | }else if (userInfo.getType() == 2){ |
| | | //排除系统管理 |
| | | for (PermissionInfo permissionInfo : permissionInfoList){ |
| | | //一级菜单 |
| | | if (null == permissionInfo.getParentid() && !permissionInfo.getTitle().equals("权限管理")){ |
| | | Menu pmenu = new Menu(); |
| | | BeanUtils.copyProperties(permissionInfo,pmenu,Menu.class); |
| | | List<Menu> iterateMenuList = iterateMenus(permissionInfoList,permissionInfo.getId()); |
| | | pmenu.setChildren(iterateMenuList); |
| | | menus.add(pmenu); |
| | | } |
| | | } |
| | | }else { |
| | | permissionInfoList = permissionInfoMapper.selectByUserId(userId); |
| | | menus = addMenuList(permissionInfoList); |
| | | // for (PermissionInfo permissionInfo : permissionInfoList){ |
| | | // Menu pmenu = new Menu(); |
| | | // BeanUtils.copyProperties(permissionInfo,pmenu,Menu.class); |
| | | // List<Menu> iterateMenuList = iterateMenus(permissionInfoList,permissionInfo.getId()); |
| | | // if (iterateMenuList.size() > 0) { |
| | | // pmenu.setChildren(iterateMenuList); |
| | | // menus.add(pmenu); |
| | | // } |
| | | // } |
| | | } |
| | | } |
| | | return menus; |
| | | } |
| | | |
| | | private List<Menu> iterateMenus(List<PermissionInfo> permissionInfoList, Integer pid) { |
| | | List<Menu> result = new ArrayList<Menu>(); |
| | | for (PermissionInfo resource : permissionInfoList) { |
| | | Integer menuid = resource.getId();//获取菜单的id |
| | | Integer parentid = resource.getParentid();//获取菜单的父id |
| | | if(null != parentid && (parentid.equals(pid))){ |
| | | Menu pmenu = new Menu(); |
| | | BeanUtils.copyProperties(resource,pmenu,Menu.class); |
| | | List<Menu> iterateMenu = iterateMenus(permissionInfoList,menuid); |
| | | pmenu.setChildren(iterateMenu); |
| | | result.add(pmenu); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | private List<Menu> addMenuList(List<PermissionInfo> permissionInfoList) { |
| | | List<Menu> menuList = new ArrayList<Menu>(); |
| | | //一级菜单 |
| | | for (PermissionInfo permissionInfo : permissionInfoList) { |
| | | if (permissionInfo.getType() == 1 && permissionInfo.getLevel() == 1 && permissionInfo.getStatus() == 1){ |
| | | Menu menu = new Menu(); |
| | | BeanUtils.copyProperties(permissionInfo,menu,Menu.class); |
| | | List<Menu> childList = new ArrayList<Menu>(); |
| | | menu.setChildren(childList); |
| | | menuList.add(menu); |
| | | } |
| | | } |
| | | //二级菜单 |
| | | for (PermissionInfo permissionInfo : permissionInfoList) { |
| | | if (permissionInfo.getType() == 1 && permissionInfo.getLevel() == 2 && permissionInfo.getStatus() == 1){ |
| | | boolean isfound = false; |
| | | for (Menu menu : menuList){ |
| | | if (menu.getId().equals(permissionInfo.getParentid())){ |
| | | Menu pmenu = new Menu(); |
| | | BeanUtils.copyProperties(permissionInfo,pmenu,Menu.class); |
| | | List<Menu> secList = iterateMenus(permissionInfoList,permissionInfo.getId()); |
| | | pmenu.setChildren(secList); |
| | | menu.getChildren().add(pmenu); |
| | | isfound = true; |
| | | break; |
| | | } |
| | | } |
| | | if (!isfound){ |
| | | PermissionInfo onePermission = this.getById(permissionInfo.getParentid()); |
| | | if (onePermission != null) { |
| | | Menu childmenu = new Menu(); |
| | | BeanUtils.copyProperties(permissionInfo,childmenu,Menu.class); |
| | | List<Menu> secList = new ArrayList<Menu>(); |
| | | childmenu.setChildren(secList); |
| | | |
| | | Menu onemenu = new Menu(); |
| | | BeanUtils.copyProperties(onePermission,onemenu,Menu.class); |
| | | List<Menu> childList = new ArrayList<Menu>(); |
| | | childList.add(childmenu); |
| | | onemenu.setChildren(childList); |
| | | menuList.add(onemenu); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | return menuList.stream().sorted(Comparator.comparing(Menu::getSortorder)).collect(Collectors.toList()); |
| | | } |
| | | |
| | | |
| | | } |