71 lines
2.4 KiB
Java
71 lines
2.4 KiB
Java
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<Permissions> findById(Long permissionId) {
|
|
return permissionsRepository.findById(permissionId);
|
|
}
|
|
|
|
@Override
|
|
public List<Permissions> findAllPermissions() {
|
|
return permissionsRepository.findAll();
|
|
}
|
|
|
|
//根据角色id查询权限
|
|
@Override
|
|
public List<Permissions> findPermissionsByRoleId(Long roleId) {
|
|
List<Long> permissionsId = rolesPermissionsRepository.findPermissionsIdByRolesId(roleId);
|
|
List<Permissions> permissions = new ArrayList<>();
|
|
for (Long permissionId : permissionsId) {
|
|
permissions.add(permissionsRepository.findById(permissionId).orElseThrow());
|
|
}
|
|
return permissions;
|
|
}
|
|
}
|