diff --git a/src/main/java/net/geedge/asw/module/sys/dao/SysRoleDao.java b/src/main/java/net/geedge/asw/module/sys/dao/SysRoleDao.java index a0b8d82..f0be82f 100644 --- a/src/main/java/net/geedge/asw/module/sys/dao/SysRoleDao.java +++ b/src/main/java/net/geedge/asw/module/sys/dao/SysRoleDao.java @@ -13,9 +13,8 @@ import net.geedge.asw.module.sys.entity.SysRoleEntity; @Mapper public interface SysRoleDao extends BaseMapper { - @Select("select sr.* from sys_role sr left join sys_user_role sur on sr.id = sur.role_id where sur.user_id = #{userId}") - public List findRoleByUserId(String userId); - @Select("select sm.* from sys_menu sm LEFT JOIN sys_role_menu srm on sm.id = srm.menu_id LEFT JOIN sys_user_role sur on srm.role_id = sur.role_id where sur.user_id = #{userId} and sm.state = 1 order by sm.order") - public List findMenuByUserId(String userId); + + @Select("select sm.* from sys_menu sm LEFT JOIN sys_role_menu srm on sm.id = srm.menu_id LEFT JOIN sys_user_role sur on srm.role_id = sur.role_id where sur.role_id = #{roleId} and sm.state = 1 order by sm.order") + public List findMenuByRoleId(String roleId); } diff --git a/src/main/java/net/geedge/asw/module/sys/service/impl/SysAuthServiceImpl.java b/src/main/java/net/geedge/asw/module/sys/service/impl/SysAuthServiceImpl.java index c8f109f..2f938c1 100644 --- a/src/main/java/net/geedge/asw/module/sys/service/impl/SysAuthServiceImpl.java +++ b/src/main/java/net/geedge/asw/module/sys/service/impl/SysAuthServiceImpl.java @@ -76,45 +76,42 @@ public class SysAuthServiceImpl implements ISysAuthService { SysUserEntity sysUserEntity = userDao.selectById(userId); String accessLevel = sysUserEntity.getAccessLevel(); - List workspaceEntityList = workspaceService.list(); - if (accessLevel.equalsIgnoreCase("regular")) { - List workbookMemberEntityList = workspaceMemberService.list(new LambdaQueryWrapper().eq(WorkspaceMemberEntity::getUserId, userId)); - List workspaceIdList = workbookMemberEntityList.stream().map(x -> x.getWorkspaceId()).toList(); - workspaceEntityList = workspaceService.list(new LambdaQueryWrapper().in(WorkspaceEntity::getId, workspaceIdList)); - // public workspace - List publicWorkspaces = workspaceService.list(new LambdaQueryWrapper().eq(WorkspaceEntity::getVisibility, "public")); - workspaceEntityList.addAll(publicWorkspaces); - } - SysRoleEntity role = roleDao.findRoleByUserId(userId).get(0); - // 组织 button 数据 - List menuList = roleDao.findMenuByUserId(userId); - List buttonList = menuList.stream().filter(menu -> T.StrUtil.equalsIgnoreCase(menu.getType(), "button")) - .map(menu -> menu.getName()).collect(Collectors.toList()); - role.setButtons(buttonList); - - //生成 menu tree结构 - Map> groupMap = menuList.stream() - .filter(menu -> !T.StrUtil.equalsIgnoreCase(menu.getPid(), "0")) - .collect(Collectors.groupingBy(SysMenuEntity::getPid)); - - menuList.forEach(menu -> { - menu.setChildren(groupMap.get(menu.getId())); - }); - - List collect = menuList.stream() - .filter(menu -> T.StrUtil.equals(menu.getPid(), "0")) - .filter(menu -> T.StrUtil.equals(menu.getType(), "menu")) - .collect(Collectors.toList()); - role.setMenus(collect); + List workbookMemberEntityList = workspaceMemberService.list(new LambdaQueryWrapper().eq(WorkspaceMemberEntity::getUserId, userId)); List records = ListUtil.list(false); - for (WorkspaceEntity workspace : workspaceEntityList) { + for (WorkspaceMemberEntity workspaceMemberEntity : workbookMemberEntityList) { + WorkspaceEntity workspace = workspaceService.getById(workspaceMemberEntity.getWorkspaceId()); + SysRoleEntity role = roleDao.selectById(workspaceMemberEntity.getRoleId()); + + // 组织 button 数据 + List menuList = roleDao.findMenuByRoleId(workspaceMemberEntity.getRoleId()); + List buttonList = menuList.stream().filter(menu -> T.StrUtil.equalsIgnoreCase(menu.getType(), "button")) + .map(menu -> menu.getName()).collect(Collectors.toList()); + role.setButtons(buttonList); + + //生成 menu tree结构 + Map> groupMap = menuList.stream() + .filter(menu -> !T.StrUtil.equalsIgnoreCase(menu.getPid(), "0")) + .collect(Collectors.groupingBy(SysMenuEntity::getPid)); + + menuList.forEach(menu -> { + menu.setChildren(groupMap.get(menu.getId())); + }); + + List collect = menuList.stream() + .filter(menu -> T.StrUtil.equals(menu.getPid(), "0")) + .filter(menu -> T.StrUtil.equals(menu.getType(), "menu")) + .collect(Collectors.toList()); + role.setMenus(collect); + Map map = MapUtil.builder() .put("workspace", workspace) - .put("role", role) + .put("role",role) .build(); + records.add(map); } + Map result = T.MapUtil.newHashMap(); result.put("records", records); result.put("accessLevel", accessLevel); diff --git a/src/main/resources/db/migration/R__AZ_sys_role_menu.sql b/src/main/resources/db/migration/R__AZ_sys_role_menu.sql index 3a241ff..bd35223 100644 --- a/src/main/resources/db/migration/R__AZ_sys_role_menu.sql +++ b/src/main/resources/db/migration/R__AZ_sys_role_menu.sql @@ -41,11 +41,10 @@ INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '1'); -- common -INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('common', '1001'); -INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('common', '2001'); -INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('common', '3001'); -INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('common', '4001'); -INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('common', '5001'); -INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('common', '6001'); -INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('common', '7001'); -INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('common', '1'); \ No newline at end of file +INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('readonly', '1001'); +INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('readonly', '2001'); +INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('readonly', '3001'); +INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('readonly', '4001'); +INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('readonly', '5001'); +INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('readonly', '6001'); +INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('readonly', '7001'); \ No newline at end of file diff --git a/src/main/resources/db/migration/V1.0.01__INIT_TABLES.sql b/src/main/resources/db/migration/V1.0.01__INIT_TABLES.sql index 268c649..2aef0aa 100644 --- a/src/main/resources/db/migration/V1.0.01__INIT_TABLES.sql +++ b/src/main/resources/db/migration/V1.0.01__INIT_TABLES.sql @@ -44,7 +44,7 @@ CREATE TABLE `sys_role` ( -- 添加内置角色 INSERT INTO `sys_role` (`id`, `name`, `i18n`, `remark`, `build_in`, `create_timestamp`) VALUES ('admin', 'admin', 'admin', 'admin', 1, UNIX_TIMESTAMP(NOW())*1000); -INSERT INTO `sys_role` (`id`, `name`, `i18n`, `remark`, `build_in`, `create_timestamp`) VALUES ('common', 'common', 'common', 'common', 1, UNIX_TIMESTAMP(NOW())*1000); +INSERT INTO `sys_role` (`id`, `name`, `i18n`, `remark`, `build_in`, `create_timestamp`) VALUES ('readonly', 'readonly', 'readonly', 'readonly', 1, UNIX_TIMESTAMP(NOW())*1000); DROP TABLE IF EXISTS `sys_menu`;