SpringDemo/src/main/java/com/example/springdemo/serviceImpl/PermissionsServiceImpl.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;
}
}