diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysProfileController.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysProfileController.java index c759cd0..6c56c19 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysProfileController.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysProfileController.java @@ -122,7 +122,7 @@ public class SysProfileController extends BaseController { return error("文件服务异常,请联系管理员"); } String url = fileResult.getData().getUrl(); - if (userService.updateUserAvatar(loginUser.getUsername(), url)) { + if (userService.updateUserAvatar(loginUser.getUsernameOrEmail(), url)) { // 更新缓存用户头像 loginUser.getSysUser().setAvatar(url); tokenService.setLoginUser(loginUser); diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysUserController.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysUserController.java index 3c73b2e..be39263 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysUserController.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysUserController.java @@ -1,5 +1,6 @@ package com.muyu.system.controller; +import com.muyu.common.core.constant.CacheConstants; import com.muyu.common.core.domain.Result; import com.muyu.common.core.utils.StringUtils; import com.muyu.common.core.utils.poi.ExcelUtil; @@ -7,6 +8,7 @@ import com.muyu.common.core.web.controller.BaseController; import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.common.log.annotation.Log; import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.redis.service.RedisService; import com.muyu.common.security.annotation.InnerAuth; import com.muyu.common.security.annotation.RequiresPermissions; import com.muyu.common.security.utils.SecurityUtils; @@ -56,6 +58,10 @@ public class SysUserController extends BaseController { @Autowired private SysConfigService configService; + @Autowired + private RedisService redisService; + @Autowired + private SysUserOnlineService userOnlineService; /** * 获取用户列表 */ diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java index e4e2ec8..8690452 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java @@ -59,18 +59,68 @@ public class SysMenuServiceImpl extends ServiceImpl impl * @return 菜单列表 */ @Override - public List selectMenuList (SysMenu menu, Long userId) { + public List selectMenuList(SysMenu menu, Long userId) { + // 初始化返回的菜单列表和临时存储父菜单的列表 + List allMenuList = null;; List menuList = null; + + // 判断用户是否为管理员 + boolean isAdmin = SysUser.isAdmin(userId); + // 管理员显示所有菜单信息 - if (SysUser.isAdmin(userId)) { + if (isAdmin) { menuList = menuMapper.selectMenuList(menu); } else { + // 非管理员情况下,将用户ID添加至参数中,查询用户对应菜单信息 menu.getParams().put("userId", userId); menuList = menuMapper.selectMenuListByUserId(menu); } + + // 当查询结果仅有一个菜单时,进行以下操作: + if (menuList.size() == 1) { + SysMenu sysMenu = menuList.get(0); + + // 递归查找当前菜单的所有父级菜单并加入到menuList中 + this.getMenuList(menuList, sysMenu); + + // 创建一个新的菜单对象,设置其权限与传入菜单相同 + SysMenu newMenu = new SysMenu(); + newMenu.setPerms(menu.getPerms()); + + // 根据用户是否为管理员,查询全部菜单或用户对应菜单 + allMenuList = isAdmin ? menuMapper.selectMenuList(null) : menuMapper.selectMenuListByUserId(newMenu); + + // 查找当前菜单的子节点 + List childList = this.getChildList(allMenuList, sysMenu); + + // 将子节点列表合并到最终返回的菜单列表中 + menuList.addAll(childList); + } + + // 返回处理后的菜单列表 return menuList; } + /** + * 通过递归找节点(父级菜单) + */ + public void getMenuList(List menuList, SysMenu menu) { + // 当父菜单ID为0(即顶级菜单)时,停止递归 + if (menu.getParentId().equals(0L)) { + return; + } else { + // 查询当前菜单的父级菜单 + SysMenu sysMenu = this.selectMenuById(menu.getParentId()); + + // 将父级菜单添加到menuList中 + menuList.add(sysMenu); + + // 继续递归查找父级菜单的上级菜单 + getMenuList(menuList, sysMenu); + } + } + + /** * 根据用户ID查询权限 *