From f65443d8abeaedc9d102324565e8368e7c9d90c8 Mon Sep 17 00:00:00 2001 From: 郑永安 <zyazyz250@sina.com> Date: 星期一, 19 六月 2023 14:41:54 +0800 Subject: [PATCH] commit --- src/main/java/com/gk/firework/Service/ServiceImpl/PermissionServiceImpl.java | 142 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 142 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/gk/firework/Service/ServiceImpl/PermissionServiceImpl.java b/src/main/java/com/gk/firework/Service/ServiceImpl/PermissionServiceImpl.java new file mode 100644 index 0000000..ebbd558 --- /dev/null +++ b/src/main/java/com/gk/firework/Service/ServiceImpl/PermissionServiceImpl.java @@ -0,0 +1,142 @@ +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()); + } + + +} -- Gitblit v1.9.2