From db69b41375558690d61709badb868db090fb9f16 Mon Sep 17 00:00:00 2001 From: buaixuexideshitongxue <2936013465@qq.com> Date: Tue, 7 Apr 2026 16:49:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/ComplaintCollectionMapper.java | 4 + .../ComplaintCollectionServiceImpl.java | 39 ++-- .../mapper/ComplaintCollectionMapper.xml | 181 ++++++++++++++++++ 3 files changed, 201 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/biutag/supervision/mapper/ComplaintCollectionMapper.java b/src/main/java/com/biutag/supervision/mapper/ComplaintCollectionMapper.java index b2bc7a5..112d6aa 100644 --- a/src/main/java/com/biutag/supervision/mapper/ComplaintCollectionMapper.java +++ b/src/main/java/com/biutag/supervision/mapper/ComplaintCollectionMapper.java @@ -2,6 +2,7 @@ package com.biutag.supervision.mapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.biutag.supervision.pojo.dto.complaintCollection.ComplaintCollectionPageDTO; import com.biutag.supervision.pojo.entity.ComplaintCollection; import com.biutag.supervision.pojo.param.ComplaintCollection.ComplaintCollectionQueryParam; import com.biutag.supervision.repository.base.HBaseMapper; @@ -15,4 +16,7 @@ public interface ComplaintCollectionMapper extends HBaseMapper selectPageWithConditions(Page page, @Param("param") ComplaintCollectionQueryParam param); + + IPage selectPageWithNegative(Page page, @Param("param") ComplaintCollectionQueryParam param); + } diff --git a/src/main/java/com/biutag/supervision/service/complaintCollection/ComplaintCollectionServiceImpl.java b/src/main/java/com/biutag/supervision/service/complaintCollection/ComplaintCollectionServiceImpl.java index 02bdc5d..d6779bc 100644 --- a/src/main/java/com/biutag/supervision/service/complaintCollection/ComplaintCollectionServiceImpl.java +++ b/src/main/java/com/biutag/supervision/service/complaintCollection/ComplaintCollectionServiceImpl.java @@ -229,42 +229,35 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic if (!AppConstants.USER_TYPE_SUPER.equals(user.getUserType()) && (user.getRoleCodes().isEmpty() || user.getAuthSources().isEmpty() || user.getAuthDepartIds().isEmpty())) { return new Page().setTotal(0).setRecords(new ArrayList<>()); } + // 鉴权 如果不是超级管理员 if (!AppConstants.USER_TYPE_SUPER.equals(user.getUserType())) { - if (user.getRoleCodes().contains(RoleCodeEnum.SECOND_ADMIN.getCode()) - || user.getRoleCodes().contains(RoleCodeEnum.ADMIN_1_12337.getCode())) { - List orgIds = departService.getAllNodeIds(user.getAuthDepartIds()); - Set visibleSecondIds = new HashSet<>(orgIds); - if (StrUtil.isNotBlank(request.getSecondDepartId())) { - List reqAllIds = departService.getAllNodeIds(List.of(request.getSecondDepartId())); - visibleSecondIds.retainAll(new HashSet<>(reqAllIds)); - } + // 获取用户有权访问的所有下级机构ID + List allNodeIds = departService.getAllNodeIds(user.getAuthDepartIds()); + Set visibleSecondIds = new HashSet<>(allNodeIds); + // 如果前端传了二级机构,校验是否在用户权限范围内 + if (StrUtil.isNotBlank(request.getSecondDepartId())) { + // 获取前端选择的二级机构及其所有下级 + List reqAllIds = departService.getAllNodeIds(List.of(request.getSecondDepartId())); + // 取交集:用户权限 ∩ 前端选择 + visibleSecondIds.retainAll(new HashSet<>(reqAllIds)); + // 如果没有交集,说明用户没有访问该机构的权限 if (CollectionUtil.isEmpty(visibleSecondIds)) { return new Page().setTotal(0).setRecords(new ArrayList<>()); } - param.setSecondDepartIds(visibleSecondIds); - - } else if (user.getRoleCodes().contains(RoleCodeEnum.THREE_ADMIN.getCode())) { - return new Page().setTotal(0).setRecords(new ArrayList<>()); } - } else { + param.setSecondDepartIds(visibleSecondIds); + }else { + // 超级管理员:如果前端传了二级机构,只按该机构筛选 if (StrUtil.isNotBlank(request.getSecondDepartId())) { List reqAllIds = departService.getAllNodeIds(List.of(request.getSecondDepartId())); if (CollectionUtil.isNotEmpty(reqAllIds)) { param.setSecondDepartIds(new HashSet<>(reqAllIds)); - } else { - return new Page().setTotal(0).setRecords(new ArrayList<>()); } } } Page page = new Page<>(param.getCurrent(), param.getSize()); - IPage pageResult = complaintCollectionMapper.selectPageWithConditions(page, param); - - List list = pageResult.getRecords().stream().map(item -> { - ComplaintCollectionPageDTO dto = new ComplaintCollectionPageDTO(); - BeanUtil.copyProperties(item, dto); - return dto; - }).toList(); - + IPage pageResult = complaintCollectionMapper.selectPageWithNegative(page, param); + List list = pageResult.getRecords(); // 字典翻译和超时信息填充 if (CollectionUtil.isNotEmpty(list)) { Map dictLabelMap = buildDictLabelMap(SupDictEnum.SUSPECT_PROBLEM.getCode()); diff --git a/src/main/resources/mapper/ComplaintCollectionMapper.xml b/src/main/resources/mapper/ComplaintCollectionMapper.xml index 4e37033..fe9f0eb 100644 --- a/src/main/resources/mapper/ComplaintCollectionMapper.xml +++ b/src/main/resources/mapper/ComplaintCollectionMapper.xml @@ -248,4 +248,185 @@ ORDER BY discovery_time DESC, id DESC + + +