From 4aba28d27175b994097d686da9f5049f88e3d5e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=BB=B4=E4=BC=9F?= Date: Tue, 12 Sep 2023 10:59:39 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=92=E8=89=B2=E5=AD=98=E9=87=8F=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=B8=85=E6=B4=97=E9=AA=8C=E8=AF=81=E5=AE=8C=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tyr/server/job/OMSRoleJobHandler.java | 84 +++++++------------ 1 file changed, 30 insertions(+), 54 deletions(-) diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/job/OMSRoleJobHandler.java b/tyr-server/src/main/java/cn/axzo/tyr/server/job/OMSRoleJobHandler.java index e63fd03f..77486a3a 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/job/OMSRoleJobHandler.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/job/OMSRoleJobHandler.java @@ -49,6 +49,7 @@ public class OMSRoleJobHandler extends IJobHandler { /** * 清洗OMS角色相关数据(注:先通过SQL检查和清除脏数据,要不然无法保证各个实体的关联关系) + * * @param s * @return * @throws Exception @@ -57,6 +58,7 @@ public class OMSRoleJobHandler extends IJobHandler { @Override @XxlJob("OMSRoleJobHandler") public ReturnT execute(String s) throws Exception { + log.info("OMSRoleJobHandler start"); // 创建角色分组 SaasRoleGroup roleGroup = new SaasRoleGroup(); roleGroup.setWorkspaceTypeCode("6"); @@ -74,7 +76,6 @@ public class OMSRoleJobHandler extends IJobHandler { oldRole.forEach(e -> { e.setWorkspaceId(-1l); e.setOwnerOuId(-1l); - e.setWorkspaceType(-1); e.setFitOuTypeBit(-1); e.setFitOuNodeTypeBit(-1); e.setPositionTemplateId(-1l); @@ -93,6 +94,8 @@ public class OMSRoleJobHandler extends IJobHandler { roleGroupRelationDao.saveBatch(roleGroupRelation); // 查询角色关联的角色,打包成新的权限集 ArrayList deletePgroup = new ArrayList<>(); + ArrayList deletePgroupRoleRelation = new ArrayList<>(); + ArrayList deletePgroupPermissionRelation = new ArrayList<>(); oldRole.forEach(role -> { List pgroupRoleRelation = pgroupRoleRelationDao.lambdaQuery().eq(SaasPgroupRoleRelation::getRoleId, role.getId()).list(); if (CollectionUtils.isEmpty(pgroupRoleRelation)) { @@ -101,58 +104,25 @@ public class OMSRoleJobHandler extends IJobHandler { List permissionGroup = saasPermissionGroupDao.lambdaQuery().in(BaseEntity::getId, pgroupRoleRelation.stream().map(SaasPgroupRoleRelation::getGroupId).collect(Collectors.toList())).list(); if (CollectionUtils.isEmpty(permissionGroup)) { // 删除角色权限集关联关系 - pgroupRoleRelation.forEach(e -> { - pgroupRoleRelationDao.lambdaUpdate() - .eq(BaseEntity::getId, e.getId()) - .set(BaseEntity::getIsDelete, e.getId()) - .update(); - }); + deletePgroupRoleRelation.addAll(pgroupRoleRelation); return; } List pgroupPermissionRelation = pgroupPermissionRelationDao.lambdaQuery().in(SaasPgroupPermissionRelation::getGroupId, permissionGroup.stream().map(BaseEntity::getId).collect(Collectors.toList())).list(); if (CollectionUtils.isEmpty(pgroupPermissionRelation)) { // 如果没查到权限则表示当前权限集是无意义的,删掉 - permissionGroup.forEach(e -> { - // 只能通过这种方式删除 update不能删除 - saasPermissionGroupDao.lambdaUpdate() - .eq(BaseEntity::getId, e.getId()) - .set(BaseEntity::getIsDelete, e.getId()) - .update(); - }); + deletePgroup.addAll(permissionGroup); // 删除角色权限集关联关系 - pgroupRoleRelation.forEach(e -> { - pgroupRoleRelationDao.lambdaUpdate() - .eq(BaseEntity::getId, e.getId()) - .set(BaseEntity::getIsDelete, e.getId()) - .update(); - }); + deletePgroupRoleRelation.addAll(pgroupRoleRelation); return; } List feature = featureDao.lambdaQuery().in(BaseEntity::getId, pgroupPermissionRelation.stream().map(SaasPgroupPermissionRelation::getFeatureId).collect(Collectors.toList())).list(); if (CollectionUtils.isEmpty(feature)) { // 删除权限集权限关联关系 - pgroupPermissionRelation.forEach(e -> { - // 只能通过这种方式删除 update不能删除 - pgroupPermissionRelationDao.lambdaUpdate() - .eq(BaseEntity::getId, e.getId()) - .set(BaseEntity::getIsDelete, e.getId()) - .update(); - }); + deletePgroupPermissionRelation.addAll(pgroupPermissionRelation); // 如果没查到权限则表示当前权限集是无意义的,删掉 - permissionGroup.forEach(e -> { - // 只能通过这种方式删除 update不能删除 - saasPermissionGroupDao.lambdaUpdate() - .eq(BaseEntity::getId, e.getId()) - .set(BaseEntity::getIsDelete, e.getId()) - .update(); - }); + deletePgroup.addAll(permissionGroup); // 删除角色权限集关联关系 - pgroupRoleRelation.forEach(e -> { - pgroupRoleRelationDao.lambdaUpdate() - .eq(BaseEntity::getId, e.getId()) - .set(BaseEntity::getIsDelete, e.getId()) - .update(); - }); + deletePgroupRoleRelation.addAll(pgroupRoleRelation); return; } // 创建新的权限集 @@ -181,20 +151,25 @@ public class OMSRoleJobHandler extends IJobHandler { saasPgroupPermissionRelation.setUpdateBy(-1L); pgroupPermissionRelationDao.save(saasPgroupPermissionRelation); }); - // 删除老的权限集权限关联关系 - pgroupPermissionRelation.forEach(e -> { - pgroupPermissionRelationDao.lambdaUpdate() - .eq(BaseEntity::getId, e.getId()) - .set(BaseEntity::getIsDelete, e.getId()) - .update(); - }); - // 删除老的角色权限集关联关系 - pgroupRoleRelation.forEach(e -> { - pgroupRoleRelationDao.lambdaUpdate() - .eq(BaseEntity::getId, e.getId()) - .set(BaseEntity::getIsDelete, e.getId()) - .update(); - }); + // 暂存待删除数据 + deletePgroupPermissionRelation.addAll(pgroupPermissionRelation); + // 暂存待删除数据 + deletePgroupRoleRelation.addAll(pgroupRoleRelation); + }); + // 所有的数据都不能在循环中删,要不然下一次循环中就查不到了 + // 删除老的权限集权限关联关系 + deletePgroupPermissionRelation.forEach(e -> { + pgroupPermissionRelationDao.lambdaUpdate() + .eq(BaseEntity::getId, e.getId()) + .set(BaseEntity::getIsDelete, e.getId()) + .update(); + }); + // 删除老的角色权限集关联关系 + deletePgroupRoleRelation.forEach(e -> { + pgroupRoleRelationDao.lambdaUpdate() + .eq(BaseEntity::getId, e.getId()) + .set(BaseEntity::getIsDelete, e.getId()) + .update(); }); // 删除权限集 deletePgroup.forEach(e -> { @@ -203,6 +178,7 @@ public class OMSRoleJobHandler extends IJobHandler { .set(BaseEntity::getIsDelete, e.getId()) .update(); }); + log.info("OMSRoleJobHandler end"); return ReturnT.SUCCESS; } }