|
@ -16,20 +16,21 @@ import com.canvas.web.modules.system.service.dto.RoleSmallDto; |
|
|
import com.canvas.web.modules.system.service.dto.UserDto; |
|
|
import com.canvas.web.modules.system.service.dto.UserDto; |
|
|
import com.canvas.web.modules.system.service.mapstruct.RoleMapper; |
|
|
import com.canvas.web.modules.system.service.mapstruct.RoleMapper; |
|
|
import com.canvas.web.modules.system.service.mapstruct.RoleSmallMapper; |
|
|
import com.canvas.web.modules.system.service.mapstruct.RoleSmallMapper; |
|
|
|
|
|
import com.canvas.web.modules.utils.PageSort; |
|
|
import com.canvas.web.utils.*; |
|
|
import com.canvas.web.utils.*; |
|
|
import lombok.RequiredArgsConstructor; |
|
|
import lombok.RequiredArgsConstructor; |
|
|
import org.springframework.cache.annotation.CacheConfig; |
|
|
import org.springframework.cache.annotation.CacheConfig; |
|
|
|
|
|
import org.springframework.cache.annotation.Cacheable; |
|
|
import org.springframework.data.domain.Page; |
|
|
import org.springframework.data.domain.Page; |
|
|
|
|
|
import org.springframework.data.domain.PageRequest; |
|
|
import org.springframework.data.domain.Pageable; |
|
|
import org.springframework.data.domain.Pageable; |
|
|
import org.springframework.data.domain.Sort; |
|
|
import org.springframework.data.domain.Sort; |
|
|
import org.springframework.security.core.GrantedAuthority; |
|
|
import org.springframework.security.core.GrantedAuthority; |
|
|
import org.springframework.security.core.authority.SimpleGrantedAuthority; |
|
|
import org.springframework.security.core.authority.SimpleGrantedAuthority; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
|
import java.util.HashSet; |
|
|
|
|
|
import java.util.List; |
|
|
|
|
|
import java.util.Set; |
|
|
|
|
|
|
|
|
import java.util.*; |
|
|
import java.util.stream.Collectors; |
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
@Service |
|
|
@Service |
|
@ -46,13 +47,13 @@ public class RoleServiceImpl implements RoleService { |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public List<GrantedAuthority> mapToGrantedAuthorities(UserDto user) { |
|
|
public List<GrantedAuthority> mapToGrantedAuthorities(UserDto user) { |
|
|
Set<String> permissions= new HashSet<>(); |
|
|
|
|
|
|
|
|
Set<String> permissions = new HashSet<>(); |
|
|
//如果是管理员直接返回 |
|
|
//如果是管理员直接返回 |
|
|
if (user.getIsAdmin()){ |
|
|
|
|
|
|
|
|
if (user.getIsAdmin()) { |
|
|
permissions.add("admin"); |
|
|
permissions.add("admin"); |
|
|
return permissions.stream().map(SimpleGrantedAuthority::new).collect(Collectors.toList()); |
|
|
return permissions.stream().map(SimpleGrantedAuthority::new).collect(Collectors.toList()); |
|
|
} |
|
|
} |
|
|
Set<Role> roles =roleRepository.findByUserId(user.getId()); |
|
|
|
|
|
|
|
|
Set<Role> roles = roleRepository.findByUserId(user.getId()); |
|
|
permissions = roles.stream().flatMap(role -> role.getMenus().stream()) |
|
|
permissions = roles.stream().flatMap(role -> role.getMenus().stream()) |
|
|
.filter(menu -> StringUtils.isNotBlank(menu.getPermission())) |
|
|
.filter(menu -> StringUtils.isNotBlank(menu.getPermission())) |
|
|
.map(Menu::getPermission).collect(Collectors.toSet()); |
|
|
.map(Menu::getPermission).collect(Collectors.toSet()); |
|
@ -65,9 +66,31 @@ public class RoleServiceImpl implements RoleService { |
|
|
return roleSmallMapper.toDto(new ArrayList<>(roleRepository.findByUserId(id))); |
|
|
return roleSmallMapper.toDto(new ArrayList<>(roleRepository.findByUserId(id))); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
@Cacheable(key = "'id:' + #p0") |
|
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
|
public RoleDto findById(long id) { |
|
|
|
|
|
Role role = roleRepository.findById(id).orElseGet(Role::new); |
|
|
|
|
|
ValidationUtil.isNull(role.getId(), "Role", "id", id); |
|
|
|
|
|
return roleMapper.toDto(role); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public Integer findByRoles(Set<Role> roles) { |
|
|
public Integer findByRoles(Set<Role> roles) { |
|
|
return null; |
|
|
|
|
|
|
|
|
if (roles.size() == 0) { |
|
|
|
|
|
return Integer.MAX_VALUE; |
|
|
|
|
|
} |
|
|
|
|
|
Set<RoleDto> roleDtos = new HashSet<>(); |
|
|
|
|
|
for (Role role : roles) { |
|
|
|
|
|
roleDtos.add(findById(role.getId())); |
|
|
|
|
|
} |
|
|
|
|
|
return Collections.min(roleDtos.stream().map(RoleDto::getLevel).collect(Collectors.toList())); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public List<RoleSmallDto> findByOrgRole(Long id) { |
|
|
|
|
|
return roleSmallMapper.toDto(roleRepository.findByOrgId(id)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
@ -107,8 +130,9 @@ public class RoleServiceImpl implements RoleService { |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public Object queryAll(RoleQueryCriteria criteria, Pageable pageable) { |
|
|
public Object queryAll(RoleQueryCriteria criteria, Pageable pageable) { |
|
|
Page<Role> page = roleRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable); |
|
|
|
|
|
return PageUtil.toPage(page.map(roleMapper::toDto)); |
|
|
|
|
|
|
|
|
PageRequest page = PageSort.pageRequest(pageable.getPageNumber(),pageable.getPageSize(),"createTime",Sort.Direction.DESC); |
|
|
|
|
|
Page<Role> pages = roleRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), page); |
|
|
|
|
|
return PageUtil.toPage(pages.map(roleMapper::toDto)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
@ -133,7 +157,7 @@ public class RoleServiceImpl implements RoleService { |
|
|
role.setDescription(role2.getDescription()); |
|
|
role.setDescription(role2.getDescription()); |
|
|
role.setDataScope(role2.getDataScope()); |
|
|
role.setDataScope(role2.getDataScope()); |
|
|
role.setLevel(role2.getLevel()); |
|
|
role.setLevel(role2.getLevel()); |
|
|
role.setOrg(role2.getOrg()); |
|
|
|
|
|
|
|
|
// role.setOrg(role2.getOrg()); |
|
|
roleRepository.save(role); |
|
|
roleRepository.save(role); |
|
|
// 更新相关缓存 |
|
|
// 更新相关缓存 |
|
|
delCaches(role.getId(), null); |
|
|
delCaches(role.getId(), null); |
|
|