From 59e91a4e9ddaf23cebb12993c774aa899ab22d16 Mon Sep 17 00:00:00 2001
From: 郑永安 <zyazyz250@sina.com>
Date: Mon, 19 Jun 2023 14:22:45 +0800
Subject: [PATCH] 描述
---
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