From 2c2d541aa1c5060b47c1ba5c6e3d192b2ff82fef Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期日, 28 四月 2024 14:15:21 +0800
Subject: [PATCH] fixbug:权限功能实现用户重复登录异常

---
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java |    2 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java                        |    2 
 /dev/null                                                                                                     |   20 --
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java          |   63 +++----
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java                     |   15 +
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/LoginUser.java                  |    2 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java   |   47 +++++
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java       |  161 +++++++++----------
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java          |  117 --------------
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java            |   10 +
 10 files changed, 180 insertions(+), 259 deletions(-)

diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java
index e993f38..074f98b 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java
@@ -60,8 +60,10 @@
         String redisKey = "login:" + userid;
         LoginUser loginUser = redisUtil.getCacheObject(redisKey);
         if (Objects.isNull(loginUser)) {
+            response.setHeader("token", "");
             throw new RuntimeException("鐢ㄦ埛鏈櫥褰�");
         }
+
         //瀛樺叆SecurityContextHolder锛屼互渚涘悗闈㈢殑杩囨护鍣ㄤ娇鐢�
         List<String> permissionKeyList = menuMapper.selectPermsByUserId(Long.parseLong(userid));
         List<GrantedAuthority> authorities = permissionKeyList.stream().
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java
index e097010..d11f2bc 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java
@@ -217,4 +217,19 @@
     public Collection<String> keys(final String pattern) {
         return redisTemplate.keys(pattern);
     }
+
+    /**
+     * 鍒ゆ柇key鏄惁瀛樺湪
+     *
+     * @param key 閿�
+     * @return true 瀛樺湪 false涓嶅瓨鍦�
+     */
+    public boolean hasKey(String key) {
+        try {
+            return redisTemplate.hasKey(key);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java
index 347731d..919fdb9 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java
@@ -1,23 +1,17 @@
 package com.mes.menu.controller;
 
 
-import cn.hutool.core.map.MapUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.mes.base.BaseController;
 import com.mes.menu.entity.SysMenu;
-import com.mes.menu.service.SysMenuService;
 import com.mes.role.entity.SysRoleMenu;
-import com.mes.userinfo.entity.SysUser;
 import com.mes.utils.Result;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.util.StringUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -32,10 +26,6 @@
 @RestController
 @RequestMapping("/menu/sysMenu")
 public class SysMenuController extends BaseController {
-
-    @Autowired
-    SysMenuService sysMenuService;
-
     @ApiOperation("鑾峰彇鐢ㄦ埛鏈夋潈闄愮殑鎵�鏈夎彍鍗�")
     @GetMapping("/list")
     public Result<List<SysMenu>> getMenuTree(String userName) {
@@ -56,20 +46,21 @@
      */
     @GetMapping("/nav")
     public Result nav(String userName) {
-        SysUser sysUser = sysUserService.getByUsername(userName);
-
-        // 鑾峰彇鏉冮檺淇℃伅
-        String authorityInfo = sysUserService.getUserAuthorityInfo(sysUser.getId());// ROLE_admin,ROLE_normal,sys:user:list,....
-        String[] authorityInfoArray = StringUtils.tokenizeToStringArray(authorityInfo, ",");
-
-        // 鑾峰彇瀵艰埅鏍忎俊鎭�
-        List<SysMenuDto> navs = sysMenuService.getCurrentUserNav();
-
-        return Result.success(MapUtil.builder()
-                .put("authoritys", authorityInfoArray)
-                .put("nav", navs)
-                .map()
-        );
+//        SysUser sysUser = sysUserService.listByUserNameName(userName);
+//
+//        // 鑾峰彇鏉冮檺淇℃伅
+//       sysUserService.getUserAuthorityInfo(sysUser.getId());// ROLE_admin,ROLE_normal,sys:user:list,....
+//        String[] authorityInfoArray = StringUtils.tokenizeToStringArray(authorityInfo, ",");
+//
+//        // 鑾峰彇瀵艰埅鏍忎俊鎭�
+//        List<SysMenuDto> navs = sysMenuService.getCurrentUserNav();
+//
+//        return Result.success(MapUtil.builder()
+//                .put("authoritys", authorityInfoArray)
+//                .put("nav", navs)
+//                .map()
+//        );
+        return null;
     }
 
     @GetMapping("/info/{id}")
@@ -78,29 +69,23 @@
         return Result.success(sysMenuService.getById(id));
     }
 
-    @GetMapping("/list")
-    @PreAuthorize("hasAuthority('sys:menu:list')")
-    public Result list() {
-
-        List<SysMenu> menus = sysMenuService.tree();
-        return Result.success(menus);
-    }
+//    @GetMapping("/list")
+//    @PreAuthorize("hasAuthority('sys:menu:list')")
+//    public Result list() {
+//
+////        List<SysMenu> menus = sysMenuService.tree();
+//        return Result.success(null);
+//    }
 
     @PostMapping("/save")
     @PreAuthorize("hasAuthority('sys:menu:save')")
     public Result save(@Validated @RequestBody SysMenu sysMenu) {
-
-        sysMenu.setCreated(LocalDateTime.now());
-
-        sysMenuService.save(sysMenu);
-        return Result.success(sysMenu);
+        return Result.success(sysMenuService.save(sysMenu));
     }
 
     @PostMapping("/update")
     @PreAuthorize("hasAuthority('sys:menu:update')")
     public Result update(@Validated @RequestBody SysMenu sysMenu) {
-
-        sysMenu.setUpdated(LocalDateTime.now());
 
         sysMenuService.updateById(sysMenu);
 
@@ -115,7 +100,7 @@
 
         int count = sysMenuService.count(new QueryWrapper<SysMenu>().eq("parent_id", id));
         if (count > 0) {
-            return Result.fail("璇峰厛鍒犻櫎瀛愯彍鍗�");
+            return Result.error("璇峰厛鍒犻櫎瀛愯彍鍗�");
         }
 
         // 娓呴櫎鎵�鏈変笌璇ヨ彍鍗曠浉鍏崇殑鏉冮檺缂撳瓨
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java
index 9ae6597..683ca4c 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java
@@ -30,7 +30,7 @@
      * 鑷id
      */
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
 
     /**
      * 鐖秈d
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 1f8f34e..884b2ed 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,21 +1,17 @@
 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;
 
@@ -43,11 +39,12 @@
 
     @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());
     }
 
 
@@ -85,79 +82,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;
-    }
+//
+//    @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;
+//    }
 
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java
index 18ee6a6..8cb18bf 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java
@@ -1,23 +1,9 @@
 package com.mes.role.controller;
 
 
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.mes.role.entity.SysRole;
-import com.mes.role.entity.SysRoleMenu;
-import com.mes.userinfo.entity.SysUserRole;
-import com.mes.utils.Result;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
+import com.mes.base.BaseController;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 /**
  * <p>
@@ -29,101 +15,6 @@
  */
 @RestController
 @RequestMapping("/role/sys-role")
-public class SysRoleController {
-    @PreAuthorize("hasAuthority('sys:role:list')")
-    @GetMapping("/info/{id}")
-    public Result info(@PathVariable("id") Long id) {
-
-        SysRole sysRole = sysRoleService.getById(id);
-
-        // 鑾峰彇瑙掕壊鐩稿叧鑱旂殑鑿滃崟id
-        List<SysRoleMenu> roleMenus = sysRoleMenuService.list(new QueryWrapper<SysRoleMenu>().eq("role_id", id));
-        List<Long> menuIds = roleMenus.stream().map(p -> p.getMenuId()).collect(Collectors.toList());
-
-        sysRole.setMenuIds(menuIds);
-        return Result.success(sysRole);
-    }
-
-    @PreAuthorize("hasAuthority('sys:role:list')")
-    @GetMapping("/list")
-    public Result list(String name) {
-
-        Page<SysRole> pageData = sysRoleService.page(getPage(),
-                new QueryWrapper<SysRole>()
-                        .like(StrUtil.isNotBlank(name), "name", name)
-        );
-
-        return Result.success(pageData);
-    }
-
-    @PostMapping("/save")
-    @PreAuthorize("hasAuthority('sys:role:save')")
-    public Result save(@Validated @RequestBody SysRole sysRole) {
-
-        sysRole.setCreated(LocalDateTime.now());
-        sysRole.setStatu(Const.STATUS_ON);
-
-        sysRoleService.save(sysRole);
-        return Result.success(sysRole);
-    }
-
-    @PostMapping("/update")
-    @PreAuthorize("hasAuthority('sys:role:update')")
-    public Result update(@Validated @RequestBody SysRole sysRole) {
-
-        sysRole.setUpdated(LocalDateTime.now());
-
-        sysRoleService.updateById(sysRole);
-
-        // 鏇存柊缂撳瓨
-        sysUserService.clearUserAuthorityInfoByRoleId(sysRole.getId());
-
-        return Result.success(sysRole);
-    }
-
-    @PostMapping("/delete")
-    @PreAuthorize("hasAuthority('sys:role:delete')")
-    @Transactional
-    public Result info(@RequestBody Long[] ids) {
-
-        sysRoleService.removeByIds(Arrays.asList(ids));
-
-        // 鍒犻櫎涓棿琛�
-        sysUserRoleService.remove(new QueryWrapper<SysUserRole>().in("role_id", ids));
-        sysRoleMenuService.remove(new QueryWrapper<SysRoleMenu>().in("role_id", ids));
-
-        // 缂撳瓨鍚屾鍒犻櫎
-        Arrays.stream(ids).forEach(id -> {
-            // 鏇存柊缂撳瓨
-            sysUserService.clearUserAuthorityInfoByRoleId(id);
-        });
-
-        return Result.success("");
-    }
-
-    @Transactional
-    @PostMapping("/perm/{roleId}")
-    @PreAuthorize("hasAuthority('sys:role:perm')")
-    public Result info(@PathVariable("roleId") Long roleId, @RequestBody Long[] menuIds) {
-
-        List<SysRoleMenu> sysRoleMenus = new ArrayList<>();
-
-        Arrays.stream(menuIds).forEach(menuId -> {
-            SysRoleMenu roleMenu = new SysRoleMenu();
-            roleMenu.setMenuId(menuId);
-            roleMenu.setRoleId(roleId);
-
-            sysRoleMenus.add(roleMenu);
-        });
-
-        // 鍏堝垹闄ゅ師鏉ョ殑璁板綍锛屽啀淇濆瓨鏂扮殑
-        sysRoleMenuService.remove(new QueryWrapper<SysRoleMenu>().eq("role_id", roleId));
-        sysRoleMenuService.saveBatch(sysRoleMenus);
-
-        // 鍒犻櫎缂撳瓨
-        sysUserService.clearUserAuthorityInfoByRoleId(roleId);
-
-        return Result.success(menuIds);
-    }
+public class SysRoleController extends BaseController {
 }
 
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleMenuController.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleMenuController.java
deleted file mode 100644
index 77b3175..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleMenuController.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.mes.role.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 鍓嶇鎺у埗鍣�
- * </p>
- *
- * @author zhoush
- * @since 2024-04-11
- */
-@RestController
-@RequestMapping("/role/sys-role-menu")
-public class SysRoleMenuController {
-
-}
-
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/LoginUser.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/LoginUser.java
index 97e036f..d60a05f 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/LoginUser.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/LoginUser.java
@@ -28,7 +28,7 @@
     /**
      * 瀛樺偍SpringSecurity璋冪敤getAuthorities()鏂规硶鑾峰彇鐨勬潈闄愪俊鎭殑闆嗗悎
      */
-//    @JSONField(serialize = false)
+    @JSONField(serialize = false)
     private List<GrantedAuthority> authorities;
 
 
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java
index 419b4c7..87cc2cd 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java
@@ -72,4 +72,14 @@
      * @return
      */
     String deleteUser(List<Long> ids);
+
+    /**
+     * 鑾峰彇鐢ㄦ埛瑙掕壊鏉冮檺淇℃伅
+     *
+     * @param userId
+     * @return
+     */
+    List<String> getUserAuthorityInfo(Long userId);
+
+    void clearUserAuthorityInfoByMenuId(Long userId);
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java
index 001b1fa..c674fea 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java
@@ -9,6 +9,7 @@
 import com.mes.common.utils.RedisUtil;
 import com.mes.menu.mapper.SysMenuMapper;
 import com.mes.role.entity.SysRole;
+import com.mes.role.service.SysRoleService;
 import com.mes.userinfo.entity.LoginUser;
 import com.mes.userinfo.entity.SysUser;
 import com.mes.userinfo.entity.SysUserRole;
@@ -35,6 +36,7 @@
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -61,7 +63,10 @@
     @Resource
     private SysUserRoleService sysUserRoleService;
 
-    @Autowired
+    @Resource
+    private SysRoleService sysRoleService;
+
+    @Resource
     BCryptPasswordEncoder passwordEncoder;
 
     @Override
@@ -74,12 +79,12 @@
         //浣跨敤userid鐢熸垚token
         LoginUser loginUser = (LoginUser) authenticate.getPrincipal();
         String userId = loginUser.getUser().getId().toString();
-        String jwt = JwtUtil.createJWT(userId);
+        String jwt = JwtUtil.generateToken(userId);
 
         //鏌ヨ鏉冮檺淇℃伅
 //        List<String> perms = sysMenuMapper.selectPermsByUserId(userId);
         //authenticate瀛樺叆redis
-        redisUtil.setCacheObject("login:" + userId, loginUser.getAuthorities());
+        redisUtil.setCacheObject("login:" + userId, loginUser);
         //鎶妕oken鍝嶅簲缁欏墠绔�
         HashMap<String, String> map = new HashMap<>();
         map.put("token", jwt);
@@ -154,6 +159,42 @@
 
     }
 
+    @Override
+    public List<String> getUserAuthorityInfo(Long userId) {
+        SysUser sysUser = baseMapper.selectById(userId);
+
+        //  ROLE_admin,ROLE_normal,sys:user:list,....
+        String authority = "";
+        if (redisUtil.hasKey("GrantedAuthority:" + sysUser.getUserName())) {
+            authority = redisUtil.getCacheObject("GrantedAuthority:" + sysUser.getUserName());
+
+        } else {
+            // 鑾峰彇瑙掕壊缂栫爜
+            List<SysRole> roles = sysRoleService.list(new QueryWrapper<SysRole>()
+                    .inSql("id", "select role_id from sys_user_role where user_id = " + userId));
+
+            if (roles.size() > 0) {
+                String roleCodes = roles.stream().map(r -> "ROLE_" + r.getRoleKey()).collect(Collectors.joining(","));
+                authority = roleCodes.concat(",");
+            }
+
+            // 鑾峰彇鑿滃崟鎿嶄綔缂栫爜
+            List<String> perms = sysMenuMapper.selectPermsByUserId(userId);
+            if (perms.size() > 0) {
+                String menuPerms = String.join(",", perms);
+                authority = authority.concat(menuPerms);
+            }
+
+            redisUtil.setCacheObject("GrantedAuthority:" + sysUser.getUserName(), authority, 60 * 60, TimeUnit.SECONDS);
+        }
+        return Arrays.stream(authority.split(",")).collect(Collectors.toList());
+    }
+
+    @Override
+    public void clearUserAuthorityInfoByMenuId(Long userId) {
+
+    }
+
     /**
      * 瀹炵幇UserDetailsService鎺ュ彛锛屼粠鏁版嵁搴撳唴鑾峰彇鐢ㄦ埛鍙婃潈闄愪俊鎭�
      *

--
Gitblit v1.8.0