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