|  | @ -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); | 
		
	
	
		
			
				|  | 
 |