From 280f2485f6e31fc73d44817c3249cf7e3d082598 Mon Sep 17 00:00:00 2001 From: hucs Date: Thu, 13 Jun 2024 18:23:41 +0800 Subject: [PATCH] fix --- .../admin/common/aspect/DataScopeAspect.java | 2 +- .../service/impl/SysTenantServiceImpl.java | 38 ++++++++++--------- .../system/controller/SysUserController.java | 10 ++--- .../modules/system/entity/SysUserEntity.java | 7 +--- .../system/service/impl/LoginServiceImpl.java | 4 +- .../service/impl/SysMenuServiceImpl.java | 18 +++++++-- .../service/impl/SysRoleServiceImpl.java | 5 ++- .../service/impl/SysUserServiceImpl.java | 7 +++- .../com/starry/admin/utils/SecurityUtils.java | 11 ++---- .../resources/mapper/system/SysUserMapper.xml | 5 ++- .../starry/common/domain/BasePageEntity.java | 1 + 11 files changed, 62 insertions(+), 46 deletions(-) diff --git a/play-admin/src/main/java/com/starry/admin/common/aspect/DataScopeAspect.java b/play-admin/src/main/java/com/starry/admin/common/aspect/DataScopeAspect.java index 02c7d44..90aeb15 100644 --- a/play-admin/src/main/java/com/starry/admin/common/aspect/DataScopeAspect.java +++ b/play-admin/src/main/java/com/starry/admin/common/aspect/DataScopeAspect.java @@ -125,7 +125,7 @@ public class DataScopeAspect { if (StringUtils.isNotNull(loginUser)) { SysUserEntity currentUser = loginUser.getUser(); // 如果是超级管理员,则不过滤数据 - if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin()) { + if (StringUtils.isNotNull(currentUser) && SysUserEntity.isAdmin(currentUser)) { String permission = StringUtils.defaultIfEmpty(controllerDataScope.permission(), CustomSecurityContextHolder.getPermission()); dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(), controllerDataScope.userAlias(), permission); diff --git a/play-admin/src/main/java/com/starry/admin/modules/platform/service/impl/SysTenantServiceImpl.java b/play-admin/src/main/java/com/starry/admin/modules/platform/service/impl/SysTenantServiceImpl.java index 8515f3d..0577f8b 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/platform/service/impl/SysTenantServiceImpl.java +++ b/play-admin/src/main/java/com/starry/admin/modules/platform/service/impl/SysTenantServiceImpl.java @@ -202,26 +202,25 @@ public class SysTenantServiceImpl extends ServiceImpl menuList = menuMapper.selectMenuList(new SysMenuEntity()); - if (CollectionUtil.isNotEmpty(menuList)) { - List roleMenuEntityList = menuList.stream().map(menu -> { + + //List menuList = menuMapper.selectMenuList(new SysMenuEntity()); + SysTenantPackageEntity sysTenantPackage = tenantPackageMapper.selectById(sysTenantEntity.getPackageId()); + List subMeuns = Arrays.asList(sysTenantPackage.getMenuIds().split(",")); + if (CollectionUtil.isNotEmpty(subMeuns)) { + List roleMenuEntityList = subMeuns.stream().map(menu -> { SysRoleMenuEntity rm = new SysRoleMenuEntity(); rm.setRoleId(operator.getRoleId()); - rm.setMenuId(menu.getMenuId()); + rm.setMenuId(Long.valueOf(menu)); return rm; }).collect(Collectors.toList()); roleMenuService.saveBatch(roleMenuEntityList); @@ -328,9 +330,8 @@ public class SysTenantServiceImpl extends ServiceImpl map = new HashMap<>(8); List roles = roleService.selectRoleList(new SysRoleEntity()); - map.put("roles", SysUserEntity.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); - if (userId != null) { - SysUserEntity user = userService.selectUserById(userId); - map.put("roleIds", user.getRoles().stream().map(SysRoleEntity::getRoleId).collect(Collectors.toList())); - map.put("user", user); - } + map.put("roles", SysUserEntity.isAdmin(user) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); + map.put("roleIds", user.getRoles().stream().map(SysRoleEntity::getRoleId).collect(Collectors.toList())); + map.put("user", user); return R.ok(map); } diff --git a/play-admin/src/main/java/com/starry/admin/modules/system/entity/SysUserEntity.java b/play-admin/src/main/java/com/starry/admin/modules/system/entity/SysUserEntity.java index e4f7572..ce405ce 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/system/entity/SysUserEntity.java +++ b/play-admin/src/main/java/com/starry/admin/modules/system/entity/SysUserEntity.java @@ -106,12 +106,9 @@ public class SysUserEntity extends BaseEntity { @TableField(exist = false) private Long roleId; - public static boolean isAdmin(String userId) { - return "6dcb2da45fef4768a6511f9c14e18072".equals(userId); - } - public boolean isAdmin() { - return isAdmin(this.userId); + public static boolean isAdmin(SysUserEntity user) { + return user.getSuperAdmin(); } diff --git a/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/LoginServiceImpl.java b/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/LoginServiceImpl.java index 3d8913c..6cd83c0 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/LoginServiceImpl.java +++ b/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/LoginServiceImpl.java @@ -86,7 +86,7 @@ public class LoginServiceImpl implements LoginService { public Set getMenuPermission(SysUserEntity user) { Set perms = new HashSet<>(); // 超级管理员拥有所有权限 - if (SecurityUtils.isAdmin(user.getUserId())) { + if (SecurityUtils.isAdmin(user)) { perms.add("*:*:*"); } else { perms = menuService.selectMenuPermsByUserId(user.getUserId()); @@ -98,7 +98,7 @@ public class LoginServiceImpl implements LoginService { public Set getRolePermission(SysUserEntity user) { Set roles = new HashSet<>(); // 超级管理员拥有所有权限 - if (SecurityUtils.isAdmin(user.getUserId())) { + if (SecurityUtils.isAdmin(user)) { roles.add("admin"); } else { roles = roleService.selectRolePermissionByUserId(user.getUserId()); diff --git a/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/SysMenuServiceImpl.java b/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/SysMenuServiceImpl.java index 9e76baa..b4f9477 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/SysMenuServiceImpl.java +++ b/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/SysMenuServiceImpl.java @@ -8,9 +8,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.starry.admin.common.domain.TreeSelect; import com.starry.admin.modules.system.entity.SysMenuEntity; import com.starry.admin.modules.system.entity.SysRoleEntity; +import com.starry.admin.modules.system.entity.SysUserEntity; import com.starry.admin.modules.system.mapper.SysMenuMapper; import com.starry.admin.modules.system.mapper.SysRoleMapper; import com.starry.admin.modules.system.service.SysMenuService; +import com.starry.admin.modules.system.service.SysUserService; import com.starry.admin.modules.system.vo.MetaVo; import com.starry.admin.modules.system.vo.RouterVo; import com.starry.admin.modules.system.vo.SimpleMenu; @@ -37,6 +39,8 @@ public class SysMenuServiceImpl extends ServiceImpl listPage(SysMenuEntity menu, String userId, Integer pageSize, Integer pageNum) { Page page = new Page<>(pageNum, pageSize); // 超级管理员显示所有菜单信息 - if (SecurityUtils.isAdmin(userId)) { + if (SecurityUtils.isAdmin(userService.selectUserById(userId))) { return baseMapper.selectPage(page, new LambdaQueryWrapper().eq(SysMenuEntity::getStatus, 1)); } else { List menuList = baseMapper.selectMenuListByUserId(menu, userId, page); @@ -60,7 +64,7 @@ public class SysMenuServiceImpl extends ServiceImpl selectMenuList(SysMenuEntity menu, String userId) { List menuList; // 超级管理员显示所有菜单信息 - if (SecurityUtils.isAdmin(userId)) { + if (SecurityUtils.isAdmin(userService.selectUserById(userId))) { menuList = baseMapper.selectMenuList(menu); } else { menuList = baseMapper.selectMenuListByUserId(menu, userId); @@ -138,11 +142,19 @@ public class SysMenuServiceImpl extends ServiceImpl selectMenuTreeByUserId(String userId) { List menus; - if (SecurityUtils.isAdmin(userId)) { + SysUserEntity user = userService.selectUserById(userId); + if (SecurityUtils.isAdmin(user)) { menus = baseMapper.selectMenuTreeAll(); + if (!user.getUserId().equals("6dcb2da45fef4768a6511f9c14e18072")) { + if (CollectionUtil.isNotEmpty(menus)) { + List menuIds = Arrays.asList(2L, 3L, 5L, 26L, 47L, 48L); + menus = menus.stream().filter(ca -> !menuIds.contains(ca.getMenuId())).collect(Collectors.toList()); + } + } } else { menus = baseMapper.selectMenuTreeByUserId(userId); } + return getChildPerms(menus, 0); } diff --git a/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/SysRoleServiceImpl.java b/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/SysRoleServiceImpl.java index d919195..aa20069 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/SysRoleServiceImpl.java +++ b/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/SysRoleServiceImpl.java @@ -14,6 +14,7 @@ import com.starry.admin.modules.system.mapper.SysUserRoleMapper; import com.starry.admin.modules.system.service.SysRoleMenuService; import com.starry.admin.modules.system.service.SysRoleService; import com.starry.admin.modules.system.service.SysUserRoleService; +import com.starry.admin.modules.system.service.SysUserService; import com.starry.admin.utils.SecurityUtils; import com.starry.common.constant.UserConstants; import com.starry.common.utils.StringUtils; @@ -44,6 +45,8 @@ public class SysRoleServiceImpl extends ServiceImpl roles = this.selectRoleList(role); diff --git a/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/SysUserServiceImpl.java b/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/SysUserServiceImpl.java index 0c02e5e..58ac077 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/SysUserServiceImpl.java +++ b/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/SysUserServiceImpl.java @@ -29,6 +29,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -143,7 +144,11 @@ public class SysUserServiceImpl extends ServiceImpl + @@ -50,6 +51,7 @@ u.created_time, u.dept_id, u.tenant_id, + u.super_admin, d.dept_name, r.role_id, r.role_name, @@ -82,6 +84,7 @@ u.dept_id, u.created_time, d.dept_name, + u.super_admin, d.leader from sys_user u left join sys_dept d on u.dept_id = d.dept_id and d.deleted = 0 @@ -127,7 +130,7 @@ AND u.mobile like concat('%', #{query.mobile}, '%') - ${query.params.dataScope} + ${query.dataScope}