diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/constant/ResultCommon.java b/laws-modules/src/main/java/com/jero/modules/laws/common/constant/ResultCommon.java index 599bb68e..a5188ac9 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/constant/ResultCommon.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/constant/ResultCommon.java @@ -89,4 +89,6 @@ public class ResultCommon { public static final String FOLDER_ONLY_ONE = "folder.only.one"; + public static final String YOU_HAVE_NOT_DATA_AUTH = "you.have.not.data.auth"; + } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardAuthUserServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardAuthUserServiceImpl.java index 2cb795a2..787d3ca7 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardAuthUserServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardAuthUserServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.common.exception.JeroBootException; +import com.jero.common.util.MessageUtils; import com.jero.modules.laws.common.constant.FieldCommon; import com.jero.modules.laws.common.constant.ResultCommon; import com.jero.modules.laws.enterprise.entity.EnterpriseStandardAuthDept; @@ -68,6 +69,14 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl standardIdList = lawsStandardTempPermission.getStandardIdList(); + for (String id : standardIdList) { + if (!this.hasESAuth(UserUtils.getUserId(), Collections.singletonList(id))) { + LawsEnterpriseStandard es = enterpriseStandardService.getById(id); + throw new JeroBootException(MessageUtils.getMessage(ResultCommon.YOU_HAVE_NOT_DATA_AUTH, es.getStandardNumber())); + } + } + List esAuthUsers = new ArrayList<>(); for (String standardId : lawsStandardTempPermission.getStandardIdList()) { for (String userId : lawsStandardTempPermission.getUserIdList()) { @@ -152,6 +161,82 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl standardIds) { + List> records = new ArrayList<>(); + for (String id : standardIds) { + Map map = new HashMap<>(); + map.put(FieldCommon.ID, id); + records.add(map); + } + List departIdModels = sysUserDepartService.queryDepartIdsOfUser(userId); + List departIds = departIdModels.stream().map(DepartIdModel::getKey).collect(Collectors.toList()); + List departNames = departIdModels.stream().map(DepartIdModel::getTitle).collect(Collectors.toList()); + + List esList = enterpriseStandardService.list(new LambdaQueryWrapper() + .in(CollUtil.isNotEmpty(standardIds), LawsEnterpriseStandard::getId, standardIds) + .eq(LawsEnterpriseStandard::getDelFlag, YesOrNoEnum.NO.getValue())); + Map esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getId, e -> e)); + + // 查询临时授权人员 + Date date = new Date(); + LambdaQueryWrapper authUserWrapper = new LambdaQueryWrapper<>(); + authUserWrapper.in(CollUtil.isNotEmpty(standardIds), EnterpriseStandardAuthUser::getStandardId, standardIds); + authUserWrapper.eq(EnterpriseStandardAuthUser::getAuthUser, userId); + authUserWrapper.ge(EnterpriseStandardAuthUser::getAuthExpireDate, date); + List authUserList = list(authUserWrapper); + Set authStandardIds = authUserList.stream().map(EnterpriseStandardAuthUser::getStandardId).collect(Collectors.toSet()); + + // 查询授权部门-和临时授权部门 + LambdaQueryWrapper authDeptWrapper = new LambdaQueryWrapper<>(); + authDeptWrapper.in(CollUtil.isNotEmpty(standardIds), EnterpriseStandardAuthDept::getStandardId, standardIds); + authDeptWrapper.in(CollUtil.isNotEmpty(departIds), EnterpriseStandardAuthDept::getAuthDept, departIds); + List authDeptList = authDeptService.list(authDeptWrapper); + authDeptWrapper.ge(EnterpriseStandardAuthDept::getAuthExpireDate, date); + authDeptList.addAll(authDeptService.list(authDeptWrapper)); + authStandardIds.addAll(authDeptList.stream().map(EnterpriseStandardAuthDept::getStandardId).collect(Collectors.toSet())); + + // 企标级别授权的部门 + List standardLevelList = standardLevelService.list(); + List levelDeptIds = standardLevelList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList()); + + // 起草部门有所有企标的查看权限 + if (!departNames.isEmpty() && departNames.contains(draftDepartName)) { + // 全部设置为有权限 + records.forEach(kv -> kv.put(FieldCommon.DETAIL_FLAG, true)); + } + for (Map map : records) { + String standardId = (String) map.get(FieldCommon.ID); + LawsEnterpriseStandard es = esMap.get(standardId); + // 授权部门和临时权限 + if (authStandardIds.contains(standardId)) { + map.put(FieldCommon.DETAIL_FLAG, true); + continue; + } + // 等级分类 + String gradeClassification = es.getGradeClassification(); + // 全公司可以看 + if (gradeClassification.equals("1")) { + map.put(FieldCommon.DETAIL_FLAG, true); + continue; + } + // 企标等级分类级别可查看部门 + if (gradeClassification.equals("2") || gradeClassification.equals("3") || gradeClassification.equals("4")) { + if (levelDeptIds.stream().anyMatch(departIds::contains)) { + map.put(FieldCommon.DETAIL_FLAG, true); + continue; + } + } + map.put(FieldCommon.DETAIL_FLAG, false); + } + // 遍历map + for (Map map : records) { + if (!(boolean) map.get(FieldCommon.DETAIL_FLAG)) { + return false; + } + } + return true; + } + @Override public void editFlagSet(List> records) { // 只有创建人和管理员才有维护的权限 diff --git a/laws-single-startup/src/main/resources/i18n/messages.properties b/laws-single-startup/src/main/resources/i18n/messages.properties index 495c217e..f6cbc949 100644 --- a/laws-single-startup/src/main/resources/i18n/messages.properties +++ b/laws-single-startup/src/main/resources/i18n/messages.properties @@ -56,4 +56,5 @@ tag.error.2=\u8BE5\u5C55\u793A\u533A\u57DF\u6709\u5173\u8054\u6570\u636E\uFF0C\u check.data.error=\u8BF7\u9009\u62E9\u6570\u636E import.template.error=\u5BFC\u5165\u6A21\u677F\u9519\u8BEF zip.charset.error=zip\u538B\u7F29\u5305\u7F16\u7801\u9519\u8BEF -folder.only.one=\u538B\u7F29\u5305\u4E0B\u6709\u4E14\u53EA\u80FD\u6709\u4E00\u4E2A\u6587\u4EF6\u5939 \ No newline at end of file +folder.only.one=\u538B\u7F29\u5305\u4E0B\u6709\u4E14\u53EA\u80FD\u6709\u4E00\u4E2A\u6587\u4EF6\u5939 +you.have.not.data.auth=\u60A8\u6CA1\u6709{0}\u7684\u6570\u636E\u6743\u9650\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9 \ No newline at end of file diff --git a/laws-single-startup/src/main/resources/i18n/messages_en.properties b/laws-single-startup/src/main/resources/i18n/messages_en.properties index 43decfce..661624fc 100644 --- a/laws-single-startup/src/main/resources/i18n/messages_en.properties +++ b/laws-single-startup/src/main/resources/i18n/messages_en.properties @@ -59,4 +59,5 @@ tag.error.2=This exhibition area has associated data and cannot be deleted! check.data.error=Please select data import.template.error=Import template error zip.charset.error=Zip charset error -folder.only.one=Only one folder can be selected \ No newline at end of file +folder.only.one=Only one folder can be selected +you.have.not.data.auth=You haven't data permission of {0}, please select again! \ No newline at end of file diff --git a/laws-single-startup/src/main/resources/i18n/messages_zh.properties b/laws-single-startup/src/main/resources/i18n/messages_zh.properties index 4d2fc955..96c03623 100644 --- a/laws-single-startup/src/main/resources/i18n/messages_zh.properties +++ b/laws-single-startup/src/main/resources/i18n/messages_zh.properties @@ -58,4 +58,5 @@ tag.error.2=\u8BE5\u5C55\u793A\u533A\u57DF\u6709\u5173\u8054\u6570\u636E\uFF0C\u check.data.error=\u8BF7\u9009\u62E9\u6570\u636E import.template.error=\u5BFC\u5165\u6A21\u677F\u9519\u8BEF zip.charset.error=zip\u538B\u7F29\u5305\u7F16\u7801\u9519\u8BEF -folder.only.one=\u538B\u7F29\u5305\u4E0B\u6709\u4E14\u53EA\u80FD\u6709\u4E00\u4E2A\u6587\u4EF6\u5939 \ No newline at end of file +folder.only.one=\u538B\u7F29\u5305\u4E0B\u6709\u4E14\u53EA\u80FD\u6709\u4E00\u4E2A\u6587\u4EF6\u5939 +you.have.not.data.auth=\u60A8\u6CA1\u6709{0}\u7684\u6570\u636E\u6743\u9650\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9 \ No newline at end of file