From 1b4d9b2dd4ed07758241d1143890b3a86b3c0641 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期日, 28 四月 2024 14:15:49 +0800
Subject: [PATCH] 权限管理开发基本功能已完成,待前端对接

---
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java |  158 ++++++++++++++++++++++++----------------------------
 1 files changed, 72 insertions(+), 86 deletions(-)

diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
index 884b2ed..b4d0fc6 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
@@ -1,18 +1,28 @@
 package com.mes.menu.service.impl;
 
+import cn.hutool.core.map.MapUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.mes.common.utils.UserInfoUtils;
+import com.mes.entity.request.GeneralRequest;
 import com.mes.menu.entity.SysMenu;
 import com.mes.menu.mapper.SysMenuMapper;
 import com.mes.menu.service.SysMenuService;
+import com.mes.role.entity.SysRoleMenu;
+import com.mes.role.service.SysRoleMenuService;
 import com.mes.userinfo.entity.SysUser;
+import com.mes.userinfo.entity.SysUserRole;
+import com.mes.userinfo.mapper.SysUserRoleMapper;
 import com.mes.userinfo.service.SysUserService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -30,21 +40,75 @@
     @Autowired
     SysUserService sysUserService;
 
+    @Autowired
+    SysUserRoleMapper sysUserRoleMapper;
+
+    @Autowired
+    SysRoleMenuService sysRoleMenuService;
+
     @Override
-    public List<SysMenu> getMenuTree() {
+    public SysMenu updateMenu(SysMenu menu) {
+        baseMapper.updateById(menu);
+        // 娓呴櫎鎵�鏈変笌璇ヨ彍鍗曠浉鍏崇殑鏉冮檺缂撳瓨
+        sysUserService.clearUserAuthorityInfoByMenuId(menu.getId());
+        return menu;
+    }
+
+    @Override
+    public List<SysMenu> getMenuTree(GeneralRequest request) {
         //todo:闇�瑕佸厛鑾峰彇鐢ㄦ埛鐨勮鑹诧紝瑙掕壊涓嬬殑鑿滃崟鏉冮檺锛屾嬁鍒拌彍鍗昳d鑾峰彇鎵�鏈夎彍鍗�
-        List<SysMenu> menuList = this.baseMapper.selectList(null);
+        SysUser user = UserInfoUtils.get();
+        MPJLambdaWrapper<SysUserRole> wrapper = new MPJLambdaWrapper<>();
+
+        wrapper.selectAll(SysMenu.class).distinct()
+                .leftJoin(SysUser.class, SysUser::getId, SysUserRole::getUserId)
+                .leftJoin(SysRoleMenu.class, SysRoleMenu::getRoleId, SysUserRole::getRoleId)
+                .leftJoin(SysMenu.class, SysMenu::getId, SysRoleMenu::getMenuId)
+                .eq(SysUser::getId, user.getId())
+                .like(StringUtils.isNotBlank(request.getKey()), SysMenu::getMenuName, request.getKey());
+
+        List<SysMenu> menuList = sysUserRoleMapper.selectJoinList(SysMenu.class, wrapper);
         return create(menuList);
     }
 
     @Override
-    public List<String> getAuthorityInfo(String userName) {
-        log.info("鑾峰彇鐢ㄦ埛淇℃伅锛岀敤鎴峰悕涓簕}", userName);
-        SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, userName));
-
+    public List<String> getAuthorityInfo() {
+        SysUser user = UserInfoUtils.get();
+        log.info("鑾峰彇鐢ㄦ埛淇℃伅锛岀敤鎴峰悕涓簕}", user);
         // 鑾峰彇鏉冮檺淇℃伅
         // ROLE_admin,ROLE_normal,sys:user:list,....
-        return sysUserService.getUserAuthorityInfo(sysUser.getId());
+        return sysUserService.getUserAuthorityInfo(user.getId());
+    }
+
+    @Override
+    public Map<Object, Object> nav() {
+        List<SysMenu> menuTree = getMenuTree(new GeneralRequest());
+        List<String> authorityInfo = getAuthorityInfo();
+        return MapUtil.builder().put("authoritys", authorityInfo)
+                .put("tree", menuTree).map();
+    }
+
+    @Override
+    public String deleteMenu(Long menuId) {
+        int count = this.count(new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getParentId, menuId));
+        if (count > 0) {
+            return "鏃犳硶鍒犻櫎,璇峰厛鍒犻櫎瀛愯彍鍗�";
+        }
+
+        // 娓呴櫎鎵�鏈変笌璇ヨ彍鍗曠浉鍏崇殑鏉冮檺缂撳瓨
+        sysUserService.clearUserAuthorityInfoByMenuId(menuId);
+
+        this.removeById(menuId);
+
+        // 鍚屾鍒犻櫎涓棿鍏宠仈琛�
+        sysRoleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getMenuId, menuId));
+        return "鍒犻櫎鎴愬姛";
+    }
+
+    @Override
+    public String batchDeleteMenu(List<Long> menuIds) {
+        menuIds.stream().forEach(e -> deleteMenu(e));
+        return "鎵归噺鍒犻櫎鎴愬姛";
     }
 
 
@@ -74,87 +138,9 @@
     private List<SysMenu> getChildren(SysMenu menu, List<SysMenu> menus) {
         List<SysMenu> res = menus.stream()
                 .filter(item -> item.getParentId().equals(menu.getId()))
-                .map(item -> {
-                    item.setChildren(getChildren(item, menus));
-                    return item;
-                }).collect(Collectors.toList());
+                .collect(Collectors.toList());
         log.info("鑿滃崟鏍�:{}", JSONUtil.toJsonStr(res));
         return res;
     }
-
-//
-//    @Autowired
-//    SysUserMapper sysUserMapper;
-//
-//    @Override
-//    public List<SysMenuDto> getCurrentUserNav() {
-//        String username = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
-//        SysUser sysUser = sysUserService.listByUserNameName(username);
-//
-//        List<Long> menuIds = sysUserMapper.getNavMenuIds(sysUser.getId());
-//        List<SysMenu> menus = this.listByIds(menuIds);
-//
-//        // 杞爲鐘剁粨鏋�
-//        List<SysMenu> menuTree = buildTreeMenu(menus);
-//
-//        // 瀹炰綋杞珼TO
-//        return convert(menuTree);
-//    }
-//
-//    @Override
-//    public List<SysMenu> tree() {
-//        // 鑾峰彇鎵�鏈夎彍鍗曚俊鎭�
-//        List<SysMenu> sysMenus = this.list(new QueryWrapper<SysMenu>().orderByAsc("orderNum"));
-//
-//        // 杞垚鏍戠姸缁撴瀯
-//        return buildTreeMenu(sysMenus);
-//    }
-//
-//    private List<SysMenuDto> convert(List<SysMenu> menuTree) {
-//        List<SysMenuDto> menuDtos = new ArrayList<>();
-//
-//        menuTree.forEach(m -> {
-//            SysMenuDto dto = new SysMenuDto();
-//
-//            dto.setId(m.getId());
-//            dto.setName(m.getPerms());
-//            dto.setTitle(m.getName());
-//            dto.setComponent(m.getComponent());
-//            dto.setPath(m.getPath());
-//
-//            if (m.getChildren().size() > 0) {
-//
-//                // 瀛愯妭鐐硅皟鐢ㄥ綋鍓嶆柟娉曡繘琛屽啀娆¤浆鎹�
-//                dto.setChildren(convert(m.getChildren()));
-//            }
-//
-//            menuDtos.add(dto);
-//        });
-//
-//        return menuDtos;
-//    }
-//
-//    private List<SysMenu> buildTreeMenu(List<SysMenu> menus) {
-//
-//        List<SysMenu> finalMenus = new ArrayList<>();
-//
-//        // 鍏堝悇鑷鎵惧埌鍚勮嚜鐨勫瀛�
-//        for (SysMenu menu : menus) {
-//
-//            for (SysMenu e : menus) {
-//                if (menu.getId() == e.getParentId()) {
-//                    menu.getChildren().add(e);
-//                }
-//            }
-//
-//            // 鎻愬彇鍑虹埗鑺傜偣
-//            if (menu.getParentId() == 0L) {
-//                finalMenus.add(menu);
-//            }
-//        }
-//
-//        System.out.println(JSONUtil.toJsonStr(finalMenus));
-//        return finalMenus;
-//    }
 
 }

--
Gitblit v1.8.0