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