From 79c33ce2f24fa7034ca9072c557e02d87d85970e Mon Sep 17 00:00:00 2001 From: yangsong Date: Tue, 19 Sep 2023 14:19:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=B9=E8=A7=92=E8=89=B2=E9=80=9A=E7=94=A8?= =?UTF-8?q?=E6=9D=83=E9=99=90=E9=9B=86=E5=AD=98=E5=9C=A8=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/model/vo/SaveOrUpdateRoleVO.java | 5 --- .../SaasPgroupRoleRelationService.java | 11 ----- .../service/impl/PermissionGroupImpl.java | 2 +- .../server/service/impl/RoleServiceImpl.java | 40 ++++++++++++------ .../SaasPgroupRoleRelationServiceImpl.java | 42 ------------------- 5 files changed, 29 insertions(+), 71 deletions(-) delete mode 100644 tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasPgroupRoleRelationService.java delete mode 100644 tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPgroupRoleRelationServiceImpl.java diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaveOrUpdateRoleVO.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaveOrUpdateRoleVO.java index cc317641..f8515d9f 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaveOrUpdateRoleVO.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaveOrUpdateRoleVO.java @@ -46,11 +46,6 @@ public class SaveOrUpdateRoleVO { @Valid private List groupTree; - /** - * 通用权限集id(编辑时有效) - */ - private Long permissionGroupId; - private String permissionGroupName; private String permissionGroupDescription; diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasPgroupRoleRelationService.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasPgroupRoleRelationService.java deleted file mode 100644 index 6be028f6..00000000 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasPgroupRoleRelationService.java +++ /dev/null @@ -1,11 +0,0 @@ -package cn.axzo.tyr.server.service; - -import cn.axzo.tyr.server.repository.entity.SaasPgroupRoleRelation; - -public interface SaasPgroupRoleRelationService { - /** - * 处理通用权限集 - * @param commonRelation - */ - void saveOrUpdateCommon(SaasPgroupRoleRelation commonRelation); -} diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionGroupImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionGroupImpl.java index a4f76b6f..91d47636 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionGroupImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionGroupImpl.java @@ -296,7 +296,7 @@ public class PermissionGroupImpl implements PermissionGroupService { // 验证角色是否存在 SaasRole saasRole = saasRoleDao.getById(permissionGroup.getRoleId()); if (Objects.isNull(saasRole)) { - throw new ServiceException("权限集不存在"); + throw new ServiceException("角色不存在"); } if (Objects.nonNull(permissionGroup.getId())) { int relationCount = pgroupRoleRelationDao.lambdaQuery() diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java index eb4c6c61..42de05dd 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java @@ -16,7 +16,10 @@ import cn.axzo.tyr.client.model.vo.SaasRoleVO; import cn.axzo.tyr.client.model.vo.SaveOrUpdateRoleVO; import cn.axzo.tyr.server.repository.dao.*; import cn.axzo.tyr.server.repository.entity.*; -import cn.axzo.tyr.server.service.*; +import cn.axzo.tyr.server.service.PermissionGroupService; +import cn.axzo.tyr.server.service.RoleService; +import cn.axzo.tyr.server.service.SaasPgroupPermissionRelationService; +import cn.axzo.tyr.server.service.SaasRoleGroupRelationService; import cn.hutool.core.bean.BeanUtil; import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; @@ -50,7 +53,7 @@ public class RoleServiceImpl implements RoleService { @Autowired PermissionGroupService permissionGroupService; @Autowired - SaasPgroupRoleRelationDao permissionGroupRelation; + SaasPgroupRoleRelationDao saasPgroupRoleRelationDao; @Autowired SaasRoleGroupDao saasRoleGroupDao; @Autowired @@ -62,8 +65,6 @@ public class RoleServiceImpl implements RoleService { @Autowired SaasFeatureDao saasFeatureDao; @Autowired - SaasPgroupRoleRelationService saasPgroupRoleRelationService; - @Autowired SaasPgroupPermissionRelationService saasPgroupPermissionRelationService; @Override @@ -232,8 +233,10 @@ public class RoleServiceImpl implements RoleService { pgrr.setUpdateBy(saveOrUpdateRole.getOperatorId()); pgrr.setCreateAt(now); pgrr.setUpdateAt(now); - // 新增或保存角色通用权限映射 - saasPgroupRoleRelationService.saveOrUpdateCommon(pgrr); + // 保存角色通用权限映射,通用权限的映射关系不会被变更 + if (Objects.isNull(saveOrUpdateRole.getId())) { + saasPgroupRoleRelationDao.save(pgrr); + } // 保存权限集和权限点映射关系 List pgpRelations = Optional.ofNullable(saveOrUpdateRole.getSelectedPPIds()).orElse(new ArrayList<>()).stream().map(ppId -> { SaasPgroupPermissionRelation target = new SaasPgroupPermissionRelation(); @@ -281,9 +284,6 @@ public class RoleServiceImpl implements RoleService { if (Objects.isNull(saasRole)) { throw new ServiceException("角色不存在"); } - if (Objects.isNull(saveOrUpdateRole.getPermissionGroupId())) { - throw new ServiceException("更新角色时权限集不能为空不存在"); - } } saasRole.setName(saveOrUpdateRole.getName()); saasRole.setDescription(saasRole.getDescription()); @@ -332,13 +332,29 @@ public class RoleServiceImpl implements RoleService { private SaasPermissionGroup validPermissionGroupCommon(SaveOrUpdateRoleVO saveOrUpdateRole) { SaasPermissionGroup saasPermissionGroup; - if (Objects.isNull(saveOrUpdateRole.getPermissionGroupId())) { + if (Objects.isNull(saveOrUpdateRole.getId())) { + //新增 saasPermissionGroup = new SaasPermissionGroup(); saasPermissionGroup.setIsCommon(PermissionGroupType.COMMON.getCode()); saasPermissionGroup.setCreateBy(saveOrUpdateRole.getOperatorId()); saasPermissionGroup.setCreatorName(saveOrUpdateRole.getOperatorName()); } else { - saasPermissionGroup = permissionGroupService.getRequiredPermissionGroup(saveOrUpdateRole.getPermissionGroupId(), PermissionGroupType.COMMON); + // 修改验证 + List relations = saasPgroupRoleRelationDao.lambdaQuery().eq(SaasPgroupRoleRelation::getRoleId, saveOrUpdateRole.getId()) + .eq(SaasPgroupRoleRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); + if (CollectionUtils.isEmpty(relations)) { + throw new ServiceException("数据错误,通用权限集不存在"); + } + List pgroupIds = relations.stream().map(SaasPgroupRoleRelation::getGroupId).sorted().collect(Collectors.toList()); + List commonGroups = saasPermissionGroupDao.lambdaQuery().in(SaasPermissionGroup::getId, pgroupIds).eq(SaasPermissionGroup::getIsCommon, PermissionGroupType.COMMON.getCode()) + .eq(SaasPermissionGroup::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); + if (CollectionUtils.isEmpty(commonGroups)) { + throw new ServiceException("数据错误,通用权限集不存在"); + } + if (commonGroups.size() > 1) { + throw new ServiceException("数据错误,存在多个通用权限集"); + } + saasPermissionGroup = commonGroups.get(0); } saasPermissionGroup.setName(saveOrUpdateRole.getPermissionGroupName()); saasPermissionGroup.setDescription(saveOrUpdateRole.getPermissionGroupDescription()); @@ -369,7 +385,7 @@ public class RoleServiceImpl implements RoleService { * 根据角色id查询权限集关联关系 */ public List queryPermissionGroupRelation(List roleIds) { - return permissionGroupRelation.lambdaQuery() + return saasPgroupRoleRelationDao.lambdaQuery() .in(SaasPgroupRoleRelation::getRoleId, roleIds) .eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value) .list(); diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPgroupRoleRelationServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPgroupRoleRelationServiceImpl.java deleted file mode 100644 index b29df383..00000000 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPgroupRoleRelationServiceImpl.java +++ /dev/null @@ -1,42 +0,0 @@ -package cn.axzo.tyr.server.service.impl; - -import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum; -import cn.axzo.basics.common.exception.ServiceException; -import cn.axzo.tyr.server.repository.dao.SaasPgroupRoleRelationDao; -import cn.axzo.tyr.server.repository.entity.SaasPgroupRoleRelation; -import cn.axzo.tyr.server.service.SaasPgroupRoleRelationService; -import cn.hutool.json.JSONUtil; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -@Slf4j -@Service -@RequiredArgsConstructor -public class SaasPgroupRoleRelationServiceImpl implements SaasPgroupRoleRelationService { - private final SaasPgroupRoleRelationDao saasPgroupRoleRelationDao; - - @Override - @Transactional(rollbackFor = Exception.class) - public void saveOrUpdateCommon(SaasPgroupRoleRelation commonRelation) { - List relations = saasPgroupRoleRelationDao.lambdaQuery().eq(SaasPgroupRoleRelation::getRoleId, commonRelation.getRoleId()) - .eq(SaasPgroupRoleRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); - if (CollectionUtils.isEmpty(relations)) { - saasPgroupRoleRelationDao.save(commonRelation); - return; - } - List prr = relations.stream().filter(e -> Objects.equals(commonRelation.getGroupId(), e.getGroupId())).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(prr)) { - // 通用权限集已经 存在 - return; - }else { - throw new ServiceException(String.format("传入的权限集id与已存在的通用权限集id不一致 req : %s", JSONUtil.toJsonStr(commonRelation))); - } - } -}