From 64b37dd64bbc2204637690890602f59efc7668b0 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Thu, 11 May 2023 14:58:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E5=A4=9A=E6=9D=A1=E6=9D=83?= =?UTF-8?q?=E9=99=90=E7=94=B3=E8=AF=B7=E6=97=B6=20=E6=95=B4=E5=90=88?= =?UTF-8?q?=E6=9D=83=E9=99=90=E4=B8=8D=E6=AD=A3=E7=A1=AEBug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/adc/da/report/eo/PowerApply.java | 18 +++++++++++++ .../service/impl/IReportServiceImpl.java | 26 +++++++++++++++++++ .../mapper/mysql/ReportManageMapper.xml | 2 -- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/PowerApply.java b/adc-da-report/src/main/java/com/adc/da/report/eo/PowerApply.java index 9ef92b0..accbd25 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/PowerApply.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/PowerApply.java @@ -8,6 +8,7 @@ import lombok.Data; import lombok.experimental.Accessors; import java.util.Date; +import java.util.Objects; /** * @author bu @@ -94,4 +95,21 @@ public class PowerApply { */ @TableField("power_source") private Integer powerSource; + + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + if (!(o instanceof PowerApply)) { + return false; + } + PowerApply other = (PowerApply) o; + return this.reportId.equals(other.reportId) && this.power.equals(other.power); + } + + @Override + public int hashCode() { + return Objects.hash(reportId, power); + } } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index 8e80341..07be563 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -415,7 +415,33 @@ public class IReportServiceImpl extends ServiceImpl reportVo.setPower(PREVIEW_DOWNLOAD); }); } else { + //其余员工 + //用户自己申请的权限 + List powerList = new ArrayList<>(); + powerList.add(PREVIEW_DOWNLOAD); + powerList.add(PREVIEW); + powerList.add(DOWNLOAD); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(PowerApply::getReportId, list.getRecords().stream().map(ReportVo::getId).collect(Collectors.toList())); + wrapper.in(PowerApply::getPower, powerList); + wrapper.eq(PowerApply::getUserId, UserUtils.getUserId()); + wrapper.eq(PowerApply::getDelFlag, 0); + List powerApplyList = iPowerApplyService.list(wrapper).stream().distinct().collect(Collectors.toList()); + + Map> reportPowerMap = powerApplyList.stream() + .collect(Collectors.groupingBy(PowerApply::getReportId)); + + //设置权限 list.getRecords().forEach(reportVo -> { + List powerApplies = reportPowerMap.get(reportVo.getId()); + if (powerApplies != null) { + if (powerApplies.size() == 1) { + reportVo.setPower(powerApplies.get(0).getPower()); + } else { + reportVo.setPower(PREVIEW_DOWNLOAD); + } + } + //只有用户没有权限的时候才给默认权限 if (reportVo.getPower() == null) { //其余人员只能预览公开报告(涉密等级:公开(内部公开)、隐私等级:不涉及用户隐私) diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml index 253af63..bbf0338 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml @@ -109,7 +109,6 @@ eo.createUserId AS createUserId, tu.USNAME AS uploader, eo.createDate AS createDate, - pa.power AS power, thumbUpCount.thumbUp AS thumbUp, clicksCount.clicks AS clicks, downloadCount.download AS download, @@ -118,7 +117,6 @@ TT_REPORT_MANAGE eo LEFT JOIN ts_user tu ON tu.USID = eo.createUserId LEFT JOIN tr_report_user ru ON eo.id = ru.reportId - LEFT JOIN power_apply pa ON pa.report_id = eo.id LEFT JOIN (SELECT report_id, COUNT(id) AS thumbUp FROM report_log_book WHERE type = 3 GROUP BY report_id) AS thumbUpCount ON eo.id = thumbUpCount.report_id LEFT JOIN (SELECT report_id, COUNT(id) AS clicks FROM report_log_book WHERE type = 1 GROUP BY report_id) AS clicksCount ON eo.id = clicksCount.report_id LEFT JOIN (SELECT report_id, COUNT(id) AS download FROM report_log_book WHERE type = 2 GROUP BY report_id) AS downloadCount ON eo.id = downloadCount.report_id