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 b34d16d5..1d100032 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 a49c291b..dbbed493 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))); - } - } -}