From f62e505a7345394e3a9a378bd6844b8642b72be8 Mon Sep 17 00:00:00 2001 From: Rui_Li <877258667@qq.com> Date: Mon, 6 Jan 2025 14:34:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=83=E9=99=90=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/controller/SysMenuController.java | 44 +++++++++++++++++-- .../spring/modules/sys/dao/SysMenuDao.java | 8 ++++ .../modules/sys/service/SysMenuService.java | 7 +++ .../sys/service/impl/SysMenuServiceImpl.java | 7 ++- .../sys/service/impl/SysRoleServiceImpl.java | 2 +- src/main/resources/mapper/sys/SysMenuDao.xml | 16 +++++++ src/main/resources/mapper/sys/SysUserDao.xml | 4 +- 7 files changed, 80 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/spring/modules/sys/controller/SysMenuController.java b/src/main/java/com/spring/modules/sys/controller/SysMenuController.java index 12307de8..0abd1843 100644 --- a/src/main/java/com/spring/modules/sys/controller/SysMenuController.java +++ b/src/main/java/com/spring/modules/sys/controller/SysMenuController.java @@ -13,13 +13,16 @@ import com.spring.modules.sys.entity.dto.SysMenuEntityDto; import com.spring.modules.sys.service.ShiroService; import com.spring.modules.sys.service.SysMenuService; import com.spring.modules.sys.service.SysObjectLanguageMenuService; +import com.spring.modules.sys.service.SysRoleMenuService; import org.apache.commons.lang.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Set; /** @@ -31,6 +34,8 @@ public class SysMenuController extends AbstractController { @Autowired private SysMenuService sysMenuService; @Autowired + private SysRoleMenuService sysRoleMenuService; + @Autowired private ShiroService shiroService; @Autowired private SysObjectLanguageMenuService sysObjectLanguageMenuService; @@ -53,14 +58,32 @@ public class SysMenuController extends AbstractController { @RequiresPermissions("sys:menu:list") public List list() { //sysMenuService.lambdaQuery().orderBy(true,true,SysMenuEntity::getOrderNum).list(); - List menuList = sysMenuService.list(); - for (SysMenuEntity sysMenuEntity : menuList) { + List menuList = null; + //判断是否是admin + if (getUserId() == Constant.SUPER_ADMIN) { + menuList = sysMenuService.list(); + }else { + //查询当前用户的权限 + menuList = sysMenuService.getUserMenuListByUserId(getUserId()); + } + //先转map + Map nameMap = new HashMap<>(); + for (SysMenuEntity sysMenuEntity : menuList){ + nameMap.put(sysMenuEntity.getMenuId(), sysMenuEntity.getName()); + } + /* for (SysMenuEntity sysMenuEntity : menuList) { SysMenuEntity parentMenuEntity = sysMenuService.getById(sysMenuEntity.getParentId()); if (parentMenuEntity != null) { sysMenuEntity.setParentName(parentMenuEntity.getName()); } + }*/ + for(SysMenuEntity sysMenuEntity : menuList){ + String parentId = sysMenuEntity.getParentId(); + //判断是否需要第二次查询数据 + if (nameMap.containsKey(parentId)){ + sysMenuEntity.setParentName(nameMap.get(parentId)); + } } - return menuList; } @@ -72,12 +95,25 @@ public class SysMenuController extends AbstractController { @RequiresPermissions("sys:menu:list") public List listLanguage(@PathVariable String language) { List menuList = sysMenuService.listLanguage(language); - for (SysMenuEntity sysMenuEntity : menuList) { + //先转map + Map nameMap = new HashMap<>(); + for (SysMenuEntity sysMenuEntity : menuList){ + nameMap.put(sysMenuEntity.getMenuId(), sysMenuEntity.getName()); + } + /*for (SysMenuEntity sysMenuEntity : menuList) { System.out.println(sysMenuEntity.getParentId()); SysMenuEntity parentMenuEntity = sysMenuService.getByIdLanguage(sysMenuEntity.getParentId(), language); if (parentMenuEntity != null) { sysMenuEntity.setParentName(parentMenuEntity.getName()); } + }*/ + //优化查询次数 + for(SysMenuEntity sysMenuEntity : menuList){ + String parentId = sysMenuEntity.getParentId(); + //判断是否需要第二次查询数据 + if (nameMap.containsKey(parentId)){ + sysMenuEntity.setParentName(nameMap.get(parentId)); + } } return menuList; } diff --git a/src/main/java/com/spring/modules/sys/dao/SysMenuDao.java b/src/main/java/com/spring/modules/sys/dao/SysMenuDao.java index b7aecb70..4af981c1 100644 --- a/src/main/java/com/spring/modules/sys/dao/SysMenuDao.java +++ b/src/main/java/com/spring/modules/sys/dao/SysMenuDao.java @@ -48,4 +48,12 @@ public interface SysMenuDao extends BaseMapper { * @return */ List searchMenuLanguageById(SysObjectLanguageMenu sysObjectLanguageMenu); + + /** + * @description: 查询当前用户有的权限列表 + * @author LR + * @date 2025/1/6 13:42 + * @version 1.0 + */ + List getUserMenuListByUserId(Long userId); } diff --git a/src/main/java/com/spring/modules/sys/service/SysMenuService.java b/src/main/java/com/spring/modules/sys/service/SysMenuService.java index a31a6638..dfd995d4 100644 --- a/src/main/java/com/spring/modules/sys/service/SysMenuService.java +++ b/src/main/java/com/spring/modules/sys/service/SysMenuService.java @@ -60,4 +60,11 @@ public interface SysMenuService extends IService { Boolean saveMenuLanguage(List sysObjectLanguageMenu); + /** + * @description: 查询菜单列表 + * @author LR + * @date 2025/1/6 13:59 + * @version 1.0 + */ + List getUserMenuListByUserId(Long userId); } diff --git a/src/main/java/com/spring/modules/sys/service/impl/SysMenuServiceImpl.java b/src/main/java/com/spring/modules/sys/service/impl/SysMenuServiceImpl.java index 619ddfef..75af3db4 100644 --- a/src/main/java/com/spring/modules/sys/service/impl/SysMenuServiceImpl.java +++ b/src/main/java/com/spring/modules/sys/service/impl/SysMenuServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.spring.common.utils.Constant; import com.spring.common.utils.MapUtils; import com.spring.modules.sys.entity.SysObjectLanguageMenu; +import com.spring.modules.sys.entity.SysRoleMenuEntity; import com.spring.modules.sys.service.SysObjectLanguageMenuService; import com.spring.modules.sys.service.SysRoleMenuService; import com.spring.modules.sys.service.SysUserService; @@ -17,6 +18,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; +import java.util.Collections; import java.util.List; @@ -148,7 +150,10 @@ public class SysMenuServiceImpl extends ServiceImpl i return sysObjectLanguageMenuService.saveSysObjectLanguageMenu(sysObjectLanguageMenu); } - + @Override + public List getUserMenuListByUserId(Long userId) { + return sysMenuDao.getUserMenuListByUserId(userId); + } } diff --git a/src/main/java/com/spring/modules/sys/service/impl/SysRoleServiceImpl.java b/src/main/java/com/spring/modules/sys/service/impl/SysRoleServiceImpl.java index 863cf45e..684c9905 100644 --- a/src/main/java/com/spring/modules/sys/service/impl/SysRoleServiceImpl.java +++ b/src/main/java/com/spring/modules/sys/service/impl/SysRoleServiceImpl.java @@ -50,7 +50,7 @@ public class SysRoleServiceImpl extends ServiceImpl i new Query().getPage(params), new QueryWrapper() .like(StringUtils.isNotBlank(roleName),"role_name", roleName) - //.eq(createUserId != null,"create_user_id", createUserId) + .eq(createUserId != null,"create_user_id", createUserId) ); return new PageUtils(page); diff --git a/src/main/resources/mapper/sys/SysMenuDao.xml b/src/main/resources/mapper/sys/SysMenuDao.xml index e9b8b68e..d5a451ac 100644 --- a/src/main/resources/mapper/sys/SysMenuDao.xml +++ b/src/main/resources/mapper/sys/SysMenuDao.xml @@ -86,4 +86,20 @@ + + + \ No newline at end of file diff --git a/src/main/resources/mapper/sys/SysUserDao.xml b/src/main/resources/mapper/sys/SysUserDao.xml index 38e0aea7..db81eae2 100644 --- a/src/main/resources/mapper/sys/SysUserDao.xml +++ b/src/main/resources/mapper/sys/SysUserDao.xml @@ -84,9 +84,9 @@ AND domain_Control_Account like #{query.domainControlAccount} - +