From 866c5588d497cbf28a940775a47869bd2508a69f Mon Sep 17 00:00:00 2001 From: zhoushihao <zsh19950802@163.com> Date: 星期日, 28 四月 2024 14:15:19 +0800 Subject: [PATCH] 用户功能完成 --- hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java | 96 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 96 insertions(+), 0 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 8527a36..1f8f34e 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,13 +1,21 @@ package com.mes.menu.service.impl; import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mes.menu.entity.SysMenu; import com.mes.menu.mapper.SysMenuMapper; import com.mes.menu.service.SysMenuService; +import com.mes.userinfo.entity.SysUser; +import com.mes.userinfo.mapper.SysUserMapper; +import com.mes.userinfo.service.SysUserService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -23,10 +31,23 @@ @Slf4j public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService { + @Autowired + SysUserService sysUserService; + @Override public List<SysMenu> getMenuTree() { + //todo:闇�瑕佸厛鑾峰彇鐢ㄦ埛鐨勮鑹诧紝瑙掕壊涓嬬殑鑿滃崟鏉冮檺锛屾嬁鍒拌彍鍗昳d鑾峰彇鎵�鏈夎彍鍗� List<SysMenu> menuList = this.baseMapper.selectList(null); return create(menuList); + } + + @Override + public List<String> getAuthorityInfo(String userName) { + SysUser sysUser = sysUserService.listByUserName(userName); + + // 鑾峰彇鏉冮檺淇℃伅 + String authorityInfo = sysUserService.getUserAuthorityInfo(sysUser.getId());// ROLE_admin,ROLE_normal,sys:user:list,.... + String[] authorityInfoArray = StringUtils.tokenizeToStringArray(authorityInfo, ","); } @@ -64,4 +85,79 @@ return res; } + + @Autowired + SysUserMapper sysUserMapper; + + @Override + public List<SysMenuDto> getCurrentUserNav() { + String username = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + SysUser sysUser = sysUserService.getByUsername(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