From 9a49aa0b254e3872124e2ff998cbb2ddfc461ec6 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期三, 24 四月 2024 15:35:07 +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