From 974eb5be0e53b3a2e4387306171fdd5ba1089e6d Mon Sep 17 00:00:00 2001 From: caihaohan Date: Wed, 1 Nov 2023 15:05:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E4=BC=81=E6=A0=87=E6=96=B0=E6=9D=83?= =?UTF-8?q?=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../laws/common/constant/FieldCommon.java | 5 ++ .../laws/common/constant/ResultCommon.java | 2 + .../service/impl/LawsCommonServiceImpl.java | 11 +++ .../EnterpriseStandardAuthUserService.java | 12 +++ ...EnterpriseStandardAuthUserServiceImpl.java | 90 ++++++++++++++++--- .../main/resources/i18n/messages.properties | 3 +- .../resources/i18n/messages_en.properties | 3 +- .../resources/i18n/messages_zh.properties | 5 +- 8 files changed, 115 insertions(+), 16 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java b/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java index 85f7f725..da4a0213 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java @@ -62,6 +62,11 @@ public class FieldCommon { public static final String COLLECTION_FLAG = "collectionFlag"; // 查看详情权限标识 public static final String DETAIL_FLAG = "detailFlag"; + // 编辑删除权限标识 + public static final String EDIT_FLAG = "editFlag"; + // 创建人字段 + public static final String CREATE_BY = "create_by"; + // 我的收藏 public static final String MY_COLLECTION = "MyCollection"; // 主键 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 757441ae..9e490a3e 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 @@ -63,5 +63,7 @@ public class ResultCommon { public static final String TASK_HANDLER_ERROR = "task.handler.error"; // 只有处理人可以操作 + public static final String NO_AUTH = "no.auth"; // 只有处理人可以操作 + } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java index d5875556..2965107a 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java @@ -36,6 +36,7 @@ import com.jero.modules.personal.service.ILawsBrowsingHistoryService; import com.jero.modules.personal.service.ILawsStandardCollectionService; import com.jero.modules.split.entity.SarFileSplitInfoEO; import com.jero.modules.split.service.ISarFileSplitInfoService; +import com.jero.modules.sys.utils.UserUtils; import com.jero.modules.system.entity.SysDepart; import com.jero.modules.system.entity.SysDictItem; import com.jero.modules.system.entity.SysUser; @@ -166,6 +167,8 @@ public class LawsCommonServiceImpl implements ILawsCommonService { if (module.equals(TableNameEnum.ENTERPRISE_STANDARDS.getValue())) { // 是否能查看详情 esAuthUserService.detailFlagSet(infoPage.getRecords()); + // 是否能编辑删除 + esAuthUserService.editFlagSet(infoPage.getRecords()); } // 是否收藏判断标识 collectionFlag(infoPage.getRecords()); @@ -1047,6 +1050,14 @@ public class LawsCommonServiceImpl implements ILawsCommonService { **/ @Override public String deleteByIdsAndModule(String ids, String module) { + // 如果是企标的话 校验删除的ids是否有权限 + if (TableNameEnum.ENTERPRISE_STANDARDS.getValue().equals(module)) { + boolean auth = esAuthUserService.verifyESDeleteAuth(ids, UserUtils.getUserId()); + if (!auth) { + throw new JeroBootException(MessageUtils.getMessage(ResultCommon.NO_AUTH)); + } + } + // 获取要操作的表名 String tableName = TableNameEnum.getTableName(module); // 获取要删除的id集合 diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/EnterpriseStandardAuthUserService.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/EnterpriseStandardAuthUserService.java index 246ea22a..62cbc191 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/EnterpriseStandardAuthUserService.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/EnterpriseStandardAuthUserService.java @@ -16,7 +16,19 @@ public interface EnterpriseStandardAuthUserService extends IService> records); + /** + * 编辑权限设置 + * @param records + */ + void editFlagSet(List> records); + boolean detailPermissionByUser(String standardNumber, String userId, String user); + + boolean verifyESDeleteAuth(String ids, String userId); } 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 bd76e8f6..61ee2db0 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 @@ -18,10 +18,14 @@ import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; import com.jero.modules.sys.entity.LawsEnterpriseStandardLevel; import com.jero.modules.sys.service.ILawsEnterpriseStandardLevelService; import com.jero.modules.sys.utils.UserUtils; +import com.jero.modules.system.entity.SysDepart; import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.service.ISysDepartService; +import com.jero.modules.system.service.ISysRoleService; import com.jero.modules.system.service.ISysUserService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -45,12 +49,23 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl esAuthUsers = new ArrayList<>(); @@ -74,6 +89,7 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl standardIds = new ArrayList<>(); records.forEach(kv -> standardIds.add(String.valueOf(kv.get(FieldCommon.ID)))); List esList = enterpriseStandardService.list(new LambdaQueryWrapper() @@ -103,11 +119,22 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl standardLevelList = standardLevelService.list(); List levelDeptIds = standardLevelList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList()); + // 起草部门有所有企标的查看权限 + if (dept.getDepartName().equals(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); // 等级分类 String gradeClassification = es.getGradeClassification(); + String mainDraftUser = es.getMainDraftingUser(); + // 主起草人可以看 + if (userId.equals(mainDraftUser)) { + map.put(FieldCommon.DETAIL_FLAG, true); + continue; + } // 全公司可以看 if (gradeClassification.equals("1")) { map.put(FieldCommon.DETAIL_FLAG, true); @@ -132,21 +159,40 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl> records) { + // 只有创建人和管理员才有维护的权限 + String userId = UserUtils.getUserId(); + SysUser currentUser = sysUserService.getById(userId); + if (currentUser.getRoleCode().equals(FieldCommon.ROLE_ADMIN)) { + records.forEach(kv -> kv.put(FieldCommon.EDIT_FLAG, true)); + return; + } + for (Map map : records) { + String createBy = (String) map.get(FieldCommon.CREATE_BY); + if (userId.equals(createBy)) { + map.put(FieldCommon.EDIT_FLAG, true); + } else { + map.put(FieldCommon.EDIT_FLAG, false); + } + } + } + @Override public boolean detailPermissionByUser(String standardId, String standardNumber, String userId) { SysUser user = sysUserService.getById(userId); String deptId = user.getDepartIds(); + SysDepart dept = sysDepartService.getById(deptId); + // 起草部门有全部企标的查看权限 + if (dept.getDepartName().equals(draftDepartName)) { + return true; + } + if (StringUtils.isBlank(standardId) && StringUtils.isBlank(standardNumber)) { throw new JeroBootException(ResultCommon.EMPTY_COMMON, "id和标准号不能同时为空"); } @@ -168,12 +214,6 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl list = enterpriseStandardService.list(new LambdaQueryWrapper().in(LawsEnterpriseStandard::getId, ids)); + // 如果不是创建人,则直接返回false + for (LawsEnterpriseStandard es : list) { + if (!es.getCreateBy().equals(userId)) { + return false; + } + } + return true; + } } diff --git a/laws-single-startup/src/main/resources/i18n/messages.properties b/laws-single-startup/src/main/resources/i18n/messages.properties index 0d8c8786..49538475 100644 --- a/laws-single-startup/src/main/resources/i18n/messages.properties +++ b/laws-single-startup/src/main/resources/i18n/messages.properties @@ -47,4 +47,5 @@ select.level.two.tree.node=\u8BF7\u5148\u9009\u62E9\u4E8C\u7EA7\u53CA\u4EE5\u4E0 export.error=\u5BFC\u51FA\u9519\u8BEF import.error=\u5BFC\u5165\u9519\u8BEF please.upload.zip.archive=\u6570\u636E\u5BFC\u5165\u5931\u8D25\uFF0C\u8BF7\u4E0A\u4F20zip\u538B\u7F29\u5305 -task.handler.error=\u53EA\u6709\u5904\u7406\u4EBA\u53EF\u4EE5\u64CD\u4F5C \ No newline at end of file +task.handler.error=\u53EA\u6709\u5904\u7406\u4EBA\u53EF\u4EE5\u64CD\u4F5C +no.auth=\u6CA1\u6709\u64CD\u4F5C\u6743\u9650 \ 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 c1583c7d..14439c6e 100644 --- a/laws-single-startup/src/main/resources/i18n/messages_en.properties +++ b/laws-single-startup/src/main/resources/i18n/messages_en.properties @@ -50,4 +50,5 @@ select.level.two.tree.node=Please select a level 2 or lower system first export.error=Export error import.error=Import error please.upload.zip.archive=Data import failed, please upload zip archive -task.handler.error=Only the handler can operate \ No newline at end of file +task.handler.error=Only the handler can operate +no.auth=No permission to operate \ 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 5584b243..3f7f1a3d 100644 --- a/laws-single-startup/src/main/resources/i18n/messages_zh.properties +++ b/laws-single-startup/src/main/resources/i18n/messages_zh.properties @@ -16,7 +16,7 @@ message.exists.standard.number=\u6807\u51C6\u7F16\u53F7\u5DF2\u7ECF\u5B58\u5728 message.no.exists.param=\u53C2\u6570{0}\u4E0D\u5B58\u5728 message.no.permission=\u6CA1\u6709\u6570\u636E\u64CD\u4F5C\u6743\u9650 message.select.data=\u8BF7\u9009\u62E9\u6570\u636E -message.exist.sub.folders=文件夹下有子文件夹 ,该文件夹不允许删除 +message.exist.sub.folders=\u6587\u4EF6\u5939\u4E0B\u6709\u5B50\u6587\u4EF6\u5939 \uFF0C\u8BE5\u6587\u4EF6\u5939\u4E0D\u5141\u8BB8\u5220\u9664 successfully.cleared=\u6E05\u9664\u6210\u529F successfully.deleted=\u5220\u9664\u6210\u529F @@ -49,4 +49,5 @@ select.level.two.tree.node=\u8BF7\u5148\u9009\u62E9\u4E8C\u7EA7\u53CA\u4EE5\u4E0 export.zip.archive.error=\u5BFC\u51FA\u9519\u8BEF import.zip.archive.error=\u5BFC\u5165\u9519\u8BEF please.upload.zip.archive=\u6570\u636E\u5BFC\u5165\u5931\u8D25\uFF0C\u8BF7\u4E0A\u4F20zip\u538B\u7F29\u5305 -task.handler.error=\u53EA\u6709\u5904\u7406\u4EBA\u53EF\u4EE5\u64CD\u4F5C \ No newline at end of file +task.handler.error=\u53EA\u6709\u5904\u7406\u4EBA\u53EF\u4EE5\u64CD\u4F5C +no.auth=\u6CA1\u6709\u64CD\u4F5C\u6743\u9650 \ No newline at end of file