From 03de668d9a46dcd7dd61a5b9fa87a567d63cd6a7 Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Mon, 24 Jun 2024 18:15:02 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E7=94=9F=E4=BA=A7=E5=8D=95=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E6=97=A5=E5=BF=97=E6=A0=87=E7=AD=BE=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=EF=BC=9B=202=E3=80=81=E7=B3=BB=E7=BB=9F=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E5=A2=9E=E5=8A=A0=E7=BB=84=E7=BB=87=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=91=98=E5=92=8C=E6=99=AE=E9=80=9A=E4=BA=BA=E7=9A=84?= =?UTF-8?q?=E5=88=A4=E6=96=AD=EF=BC=9B=203=E3=80=81=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=8E=88=E6=9D=83=E5=A2=9E=E5=8A=A0organid?= =?UTF-8?q?=E5=92=8C=E8=A7=92=E8=89=B2=E7=9A=84organid=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E7=9A=84=E5=A4=84=E7=90=86=EF=BC=8C=E8=A7=A3=E5=86=B3=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E6=B2=A1=E6=9C=89=E4=BC=A0organid=E5=AF=BC=E8=87=B4ro?= =?UTF-8?q?lemenu=E6=9C=AC=E6=9C=BA=E6=9E=84=E4=BA=BA=E7=9C=8B=E4=B8=8D?= =?UTF-8?q?=E5=88=B0=E7=9A=84=E6=83=85=E5=86=B5=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/order/OrderController.java | 2 +- .../permission/PermissionController.java | 3 +-- .../permission/PermissionServiceImpl.java | 25 ++++++++++++++----- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java index 4b46dcae8..f8197359c 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java @@ -237,7 +237,7 @@ public class OrderController { @Parameter(name = "type", description = "文件类型", required = true) }) @PreAuthorize("@ss.hasPermission('production:manager-list:create')") - @OperateLog(type = EXPORT) + @OperateLog(type = IMPORT) public void exportTest(@RequestPart("file") MultipartFile file, @RequestParam(value = "type", required = false, defaultValue = "true") Integer type, HttpServletResponse response) throws IOException { diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/permission/PermissionController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/permission/PermissionController.java index f9ebe39e9..95655f945 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/permission/PermissionController.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/permission/PermissionController.java @@ -73,9 +73,8 @@ public class PermissionController { reqVO.getMenuIds().removeIf(menuId -> !CollUtil.contains(menuIds, menuId)); }); } - Long organId = reqVO.getOrganId() == null? OrganContextHolder.getOrganId(): reqVO.getOrganId(); // 执行菜单的分配 - permissionService.assignRoleMenu(reqVO.getRoleId(), reqVO.getMenuIds(), organId); + permissionService.assignRoleMenu(reqVO.getRoleId(), reqVO.getMenuIds(), reqVO.getOrganId()); return success(true); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java index 0c4b49f9f..98daa913c 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java @@ -166,6 +166,15 @@ public class PermissionServiceImpl implements PermissionService { }else { dbMenuIds = convertSet(roleMenuMapper.selectListByRoleId(roleId), RoleMenuDO::getMenuId); } + // 查询角色获取角色的组织id,如果没有传入组织id就跟角色的组织统一 + RoleDO role = roleService.getRole(roleId); + if (Objects.isNull(role)) { + throw new ServiceException(ErrorCodeConstants.ROLE_NOT_EXISTS); + } + if (Objects.isNull(organId)) { + organId = role.getOrganId(); + } + final Long finalOrganId = organId; // 计算新增和删除的菜单编号 Set menuIdList = CollUtil.emptyIfNull(menuIds); @@ -180,7 +189,7 @@ public class PermissionServiceImpl implements PermissionService { if (isOrganRole) { entity.setOrganId(InternalRoleConstants.INTERNAL_ROLE_ORGAN_ID); }else { - entity.setOrganId(organId); + entity.setOrganId(finalOrganId); } return entity; }; @@ -195,11 +204,11 @@ public class PermissionServiceImpl implements PermissionService { if (CollectionUtil.isNotEmpty(createMenuIds) || CollectionUtil.isNotEmpty(deleteMenuIds)) { CompletableFuture.runAsync(() -> { // 当前操作人和所操作的目标菜单机构不同时,清空MENU_ROLE_ID_LIST:目标机构id:菜单id的缓存 - if (ObjectUtil.notEqual(organId, currentOrganId)) { + if (ObjectUtil.notEqual(finalOrganId, currentOrganId)) { // 获取新增和删除菜单id的并集 Collection delMenuIds = CollUtil.union(createMenuIds, deleteMenuIds); // 构建批量删除的key集合 - Set delKeys = delMenuIds.stream().map(menuId -> String.format(String.valueOf(new StringBuffer(RedisKeyConstants.MENU_ROLE_ID_LIST).append(":%s:%s")), organId, menuId)).collect(Collectors.toSet()); + Set delKeys = delMenuIds.stream().map(menuId -> String.format(String.valueOf(new StringBuffer(RedisKeyConstants.MENU_ROLE_ID_LIST).append(":%s:%s")), finalOrganId, menuId)).collect(Collectors.toSet()); Long batchDelNum = redisTemplate.delete(delKeys); log.info("[assignRoleMenu] 批量删除redis[MENU_ROLE_ID_LIST]数量:{}", batchDelNum); } @@ -264,9 +273,13 @@ public class PermissionServiceImpl implements PermissionService { if (roleService.hasAnySuperAdmin(roleIds)) { return convertSet(menuService.getMenuList(), MenuDO::getId); } - // 如果是非管理员的情况下,获得拥有的菜单编号 - List from = roleMenuMapper.selectListByRoleIdsAndOrganId(roleIds, OrganContextHolder.getOrganId()); - return convertSet(from, RoleMenuDO::getMenuId); + if (roleIds.contains(InternalRoleConstants.ORGAN_ADMIN_ROLE_ID)) { + // 组织管理员不限制组织id + return convertSet(roleMenuMapper.selectListByRoleId(roleIds), RoleMenuDO::getMenuId); + } else { + // 普通成员只能看组织id下的菜单 + return convertSet(roleMenuMapper.selectListByRoleIdsAndOrganId(roleIds, OrganContextHolder.getOrganId()), RoleMenuDO::getMenuId); + } } @Override