From a4996c1c5db0bcfe037cdf62c323a0371f62be2e Mon Sep 17 00:00:00 2001 From: zhugongping Date: Sun, 9 Aug 2026 08:08:06 +0800 Subject: [PATCH] =?UTF-8?q?20260808:bug=E4=BF=AE=E5=A4=8D=EF=BC=8C?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=88=97=E8=A1=A8=E5=8F=AA=E8=83=BD=E6=9F=A5?= =?UTF-8?q?=E8=87=AA=E5=B7=B1=E5=8D=B3=E4=BB=A5=E4=B8=8B=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/system/SysUserController.java | 13 +++++++++ .../system/service/ISysUserService.java | 9 +++++++ .../service/impl/SysUserServiceImpl.java | 27 +++++++++++++++++++ yack-web/src/api/system/user.js | 9 +++++++ yack-web/src/views/iot/project/index.vue | 4 +-- 5 files changed, 60 insertions(+), 2 deletions(-) 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 @@