package com.example.springdemo.serviceImpl; import com.example.springdemo.dao.PermissionsRepository; import com.example.springdemo.dao.RolesPermissionsRepository; import com.example.springdemo.entities.RBAC.Permissions; import com.example.springdemo.service.PermissionsService; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.Optional; @Service public class PermissionsServiceImpl implements PermissionsService { @Resource private PermissionsRepository permissionsRepository; @Resource private RolesPermissionsRepository rolesPermissionsRepository; @Override @Transactional(rollbackFor = Exception.class) public Permissions addPermission(Permissions permission) { return permissionsRepository.save(permission); } @Override @Transactional(rollbackFor = Exception.class) public Permissions updatePermission(Permissions permission) { return permissionsRepository.save(permission); } @Override @Transactional(rollbackFor = Exception.class) public void deletePermissionById(Long permissionId) { if (this.checkPermissionsRolesIfExist(permissionId)) { //删除权限与角色的关联关系 rolesPermissionsRepository.deleteByPermissionsId(permissionId); } //删除权限 permissionsRepository.deleteById(permissionId); } private boolean checkPermissionsRolesIfExist(Long permissionId) { return rolesPermissionsRepository.findByPermissionsId(permissionId).isPresent(); } @Override public Optional findById(Long permissionId) { return permissionsRepository.findById(permissionId); } @Override public List findAllPermissions() { return permissionsRepository.findAll(); } //根据角色id查询权限 @Override public List findPermissionsByRoleId(Long roleId) { List permissionsId = rolesPermissionsRepository.findPermissionsIdByRolesId(roleId); List permissions = new ArrayList<>(); for (Long permissionId : permissionsId) { permissions.add(permissionsRepository.findById(permissionId).orElseThrow()); } return permissions; } }