diff --git a/fastbee-admin/src/main/java/com/fastbee/web/controller/system/SysUserController.java b/fastbee-admin/src/main/java/com/fastbee/web/controller/system/SysUserController.java index e29b0c04..7af352f3 100644 --- a/fastbee-admin/src/main/java/com/fastbee/web/controller/system/SysUserController.java +++ b/fastbee-admin/src/main/java/com/fastbee/web/controller/system/SysUserController.java @@ -66,6 +66,19 @@ public class SysUserController extends BaseController { return getDataTable(list); } + /** + * 获取机构范围内用户列表 + * 超级管理员可查询全部人员,其他用户仅可查询本人机构及其子机构人员 + */ + @ApiOperation("获取机构范围内用户列表") + @PreAuthorize("@ss.hasAnyPermi('system:user:list,iot:project:list,iot:device:list')") + @GetMapping("/listByScope") + public TableDataInfo listByScope(SysUser user) { + startPage(); + List list = userService.selectUserListByScope(user); + return getDataTable(list); + } + @ApiOperation("导出用户列表") @Log(title = "用户管理", businessType = BusinessType.EXPORT) @PreAuthorize("@ss.hasPermi('system:user:export')") diff --git a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/ISysUserService.java b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/ISysUserService.java index fbb8c0e4..09251c4c 100644 --- a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/ISysUserService.java +++ b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/ISysUserService.java @@ -18,6 +18,15 @@ public interface ISysUserService { */ public List selectUserList(SysUser user); + /** + * 根据当前用户机构范围查询用户列表 + * 超级管理员可查询全部人员,其他用户仅可查询本人机构及其子机构人员 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + public List selectUserListByScope(SysUser user); + /** * 根据条件分页查询已分配用户角色列表 * diff --git a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysUserServiceImpl.java b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysUserServiceImpl.java index d737b0eb..ba6a570c 100644 --- a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysUserServiceImpl.java +++ b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysUserServiceImpl.java @@ -74,6 +74,33 @@ public class SysUserServiceImpl implements ISysUserService { return sysUserList; } + /** + * 根据当前用户机构范围查询用户列表 + * 超级管理员可查询全部人员,其他用户仅可查询本人机构及其子机构人员 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + @Override + public List selectUserListByScope(SysUser user) { + // 清空数据权限参数,防止注入并避免依赖角色数据范围配置 + user.getParams().put("dataScope", ""); + SysUser loginUser = getLoginUser().getUser(); + if (loginUser.isAdmin()) { + // 超级管理员查询全部人员 + user.setDeptId(null); + user.setShowChild(null); + } else { + // 非超级管理员强制限定为本人机构及其子机构 + if (loginUser.getDeptId() == null || loginUser.getDeptId() == 0L) { + return new ArrayList<>(); + } + user.setDeptId(loginUser.getDeptId()); + user.setShowChild(true); + } + return userMapper.selectUserList(user); + } + /** * 根据条件分页查询已分配用户角色列表 * diff --git a/yack-web/src/api/system/user.js b/yack-web/src/api/system/user.js index 98cd31e1..cdb7de04 100644 --- a/yack-web/src/api/system/user.js +++ b/yack-web/src/api/system/user.js @@ -10,6 +10,15 @@ export function listUser(query) { }); } +// 查询机构范围内用户列表(非超管仅可查询本人机构及其子机构人员) +export function listUserByScope(query) { + return request({ + url: '/system/user/listByScope', + method: 'get', + params: query, + }); +} + // 查询终端用户列表 export function terminalUserList(query) { return request({ diff --git a/yack-web/src/views/iot/project/index.vue b/yack-web/src/views/iot/project/index.vue index 4aa9483d..42296ef9 100644 --- a/yack-web/src/views/iot/project/index.vue +++ b/yack-web/src/views/iot/project/index.vue @@ -176,7 +176,7 @@