| | |
| | | package com.mes.menu.service.impl; |
| | | |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | 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; |
| | | |
| | |
| | | |
| | | @Override |
| | | public List<String> getAuthorityInfo(String userName) { |
| | | SysUser sysUser = sysUserService.listByUserName(userName); |
| | | log.info("获取用户信息,用户名为{}", userName); |
| | | SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, userName)); |
| | | |
| | | // 获取权限信息 |
| | | String authorityInfo = sysUserService.getUserAuthorityInfo(sysUser.getId());// ROLE_admin,ROLE_normal,sys:user:list,.... |
| | | String[] authorityInfoArray = StringUtils.tokenizeToStringArray(authorityInfo, ","); |
| | | // ROLE_admin,ROLE_normal,sys:user:list,.... |
| | | return sysUserService.getUserAuthorityInfo(sysUser.getId()); |
| | | } |
| | | |
| | | |
| | |
| | | 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); |
| | | |
| | | // 实体转DTO |
| | | 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; |
| | | } |
| | | // |
| | | // @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); |
| | | // |
| | | // // 实体转DTO |
| | | // 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; |
| | | // } |
| | | |
| | | } |